Skip to content

Week 5: 3D Scanning and printing

I have a lot of experience with FDM 3D printing. Therefore, I have decided to use this time to learn to use SLA resin printing. As a part of this effort, Charlotte Latin has supplied me with an Anycubic Photon Mono 4K. My experience learning to use this technology will be documented below.

Goals for 3D Scanning and printing

  • Build out my dream resin printing station, using skills from other weeks.
  • Become comfortable with the DLP (resin) workflow.
  • Design/print Fab dice
  • ~ Use Generative design to design a custom dice tower that can be resin printed ~
  • 3D Scan something
  • ~ Implement 3D scan into a design ~
  • Group: Characterize the 3D printers at our disposal

~ are stretch goals ~


Building out Resin Station

The resin station will comprise of 4 main substations and a baseplate.

  1. Photon Mono 4k Resin Printer
  2. Wash Station
  3. Cure Chamber - Custom build documented here
  4. Resin return station - Printing this design on my FDM printer - credit to Thingiverse user MakerMatrix
  5. Baseplate - Custom build documented here
  6. Hazard decals - Custom build documented here

FDM Printing Resin return station

This quick printing project offered a good reason to get the dust off of my Ender 3 before diving into resin printing. The main step was to setup Octoprint for my new wifi. This can be done by removing the SD card from the raspberry pi, and changing the info in octopi-wpa-supplicant.txt

For context, my Ender 3 FDM printer is setup with Octoprint, stuffed into an old minifridge, and highly modded.

Ender-3-glory.jpg

Then came the simple act of printing these files from Thingiverse. I am currently printing out of recycled PET-G from GreenGate3D and largely satisfied with the results. For some reason, I’ve never quite dialed in stringing/wisps with PET-G, but this is easily cleaned up with some post-processing and sandpaper. I have a hunch that it is related to the retraction settings for because it only occurs on discontinuous prints or when printing multiple objects, and only in PETG. Eventually, I will dial this in.

As if to prove to myself that I’ve got FDM printing mastered, I made sure to print one of these pieces during the 3D printing lecture on 2/23/22, and monitor wirelessly via octoprint.

Printing-extra-credit.jpg

via GIPHY

As mentioned above, it was past-due time to calibrate my PETG retraction settings. Specifically, I’m using recycled PET-G from GreenGate3D and this retraction test here. I started by modulating retract distance and retract speed with no major success. Still major stringing issues. Only on the 4th test did I turn back to the filament datasheet to realize the temperature range was 205C - 250C. The last PETG I used had a range of 235C-270C! Additionally, since my printer is housed in an insulated minifridge, the internal air-temperature tends to get hot and soften the filament. Altogether, this put my 240 at the very high-end. You can notice a huge change once I dropped the temperature.

FDM_calibration.jpg

Finally, I settled on,

  • Nozzle Temp. - 210C
  • Retract distance - 6.5 mm
  • Retract speed - 35 mm/s

Dream Resin Station Glory Shots

Here are the results:

Placeholder image!

A note on Safety

And considering resin really wants to hurt us, I am taking every precaution I have read about:

  1. Printing in a ventilated space, the garage
  2. Wearing nitrile gloves anytime I am handling resin
  3. Wearing a 3M respirator - possibly overkill
  4. Wearing UV blocking glasses, especially when using my curing station
  5. Treating the water as contaminated hazardous waste

3dp-safety.jpg

First Dive into Resin Printing

So once the resin station was up an running, my journey with resin could finally begin. I began by following the instructions that came with a printer, which walked me through,

  1. Unpacking/assembling the machine
  2. Mounting the buildplate
  3. Leveling the build plate
  4. Testing the buildplate
  5. Installing the vat
  6. And running a test print (detailed below)

First Test Cube

The first test cube is considered somewhat of a torture test for these type printers, due to its thin features and lattice nature. Luckily, it comes preloaded on the USB that comes with the machine, so I don’t even need to mess with slicing software or settings at this stage.

After adding some elegoo ceramic grey water washable resin to the vat, I was ready to go with the 4 hour print. Here’s a picture from towards the end of the print.

3DP-cube-midprint.jpg

I’m finding this to be a messy/hazardous process, so snapping pictures will be tough. For instance, having full and gloved hands, I was unable to snap a picture of the washing process. Here is a picture from the curing chamber just before shutting the door… Don’t worry, I have UV blocking glasses!

3DP-cube-curing.jpg

I am unsure how long my curing station will take to cure. The consensus online seemed to be that off-the-shelf stations tend to take 1-5 minutes whereas leaving a print in the sun tends to take ~1 hour. Undercuring a print can expose me to hazardous uncured resin whereas overcuring a print could lead to discoloration and eventual cracking. Playing it safe at this stage, I gave it about 7 minutes in the chamber and ~ 1 hour in the sun later on.

After the chamber, but before the sunlight, I noticed the base of the print was sticky and rough looking. After some research, it sounds like this partially cured resin accumulates around areas that we’re not sufficiently washed. Well unfortunately at this stage, I had already begun the curing process. As such, this resin was now closer to cured than uncured and going to be hard to get off. I read online that using a toothbrush to scrub it with the washing agent can help. This worked to some extent until the print broke near the base.

3DP-cube-broken-residue.jpg

In this picture you can see how the cube cured well, but the base was left with that residue. I tossed the base and decided to move on.

One final lesson I learned during this cube process was to let the water from the washing process dry before moving to the curing process. I think the residue issue could be partially related to this. Unfortunately, this may be one of the drawbacks of water-washable resins. Normal IPA would dry off quite quickly, whereas water may take a few hours to air dry. In the future I will include this air-drying into my workflow.

Calibration with R_E_R_F

After some quick research online, it seems that exposure time is the most important setting to dial in for these printers. This is done by running test files at different exposure times and comparing the results of the finer features. Luckily, someone realized how annoying it would be to go through the entire process to print multiple different test pieces with different settings, and they have found a way to do it in one print. This is done with a R_E_R_F test. The anycubic firmware will process any file with the name R_E_R_F in it such as R_E_R_F.pwma in the following way. It divides the build area into 8 sections, and applies a different exposure time to each section. Whichever exposure time you choose at the printer will be the lower bound, and each section is increased by some increment, usually 0.4s or 1s. This way you can compare 8 different exposure times in 1 test. I was lucky and found that someone had already created such a test for my exact printer, found here. Conveniently, this is the exact test piece I had seen recommended here.

3DP-rerf-test.jpg

Foolishly thinking to myself, “this will be easy”, I re-leveled the build-plate, and fired up the job. Returning 30 minutes later to a horrible sight. The build plate was risen out of the vat, job complete, with nothing on it! Then my brain realized in slow motion the implication of this… If it didn’t cure there, then it must be partially-cured at the bottom of the vat under a pool of toxic resin. Which meant, I would have to

  1. Empty the resin using my new funnel
  2. Wash the vat itself in my wash station
  3. Remove the partially cured resin from the bottom of the vat without damaging it
  4. Clean it thoroughly
  5. And do all of this without spilling or getting the resin on anything

Luckily, this process was not as painful as I first feared. Since the plate was not pulling plastic up layer-by-layer per normal, the cured layer in the vat was only about one layer thick. Therefore, it came off with some water and coercion. As a last measure to get the vat sparkly clean, I ran over it with some IPA, which seems to still work on the water-washable resin.

As to why this occurred, I have a few theories:

  1. I did not properly level the plate
  2. There is something wrong with this file
  3. I was messing with the Z-height just before I hit print, and I brought it all the way down until it wouldn’t go any further. When I did hit print, the motor made a weird noise. Maybe I just don’t do that next time and it’ll be all good?

After trying this file a 2nd time with no success, I decided I would need to find a better R_E_R_F file. At this point, facebook forums pointed towards me a recently uploaded firmware update and official R_E_R_F file uploaded by Anycubic found here. hint: the RERF file is wrapped in with the new firmware. After following the readme to update the firmware, I moved to print the R_E_R_F file with increments of 0.25s starting at 1s (1s, 1.25s … 3.0s). Below are the results.

RERF_curing.jpg

RERF_results.jpg

At the low end, the bridge test failed which seems to make sense with the mechanics of the process. Since the print is pulled away from the FEP sheet after each layer, an undcured part would bow under this tension.

RERF_undercured.jpg

At the midrange we begin to see a sweetspot. Notice the loss of detail when you go from 2.25s to 3.25s. More holes are visible on the topside of the 2.25s print than the 3.25s. This is a tradeoff of course, because the 3.25s print was able to better form the small positive features and dowels. I think the sweet spot lies somewhere in this range of 2.25s - 3.25s. Looking at these results, I will be using 2.75s or 3.0s as my normal exposure time going forward.

RERF_midrange.jpg RERF_SweetSpot.jpg

Cure times

The official anycubic wash station uses 40W across 16 LED’s to cure prints. They recommend curing prints for 2-6 minutes. My LED strip uses 24W across 300 LEDs. Therfore, correcting for power, I will assume I need to cure prints for 5-10 minutes and will adjust as needed. The more the merrier as far as I am concerned. In practice, I am finding that cure times of around 30+ minutes are more suitable. Also, prints are curing better when they are removed from the bed and placed on the turntable.

Its worth noting that even after 30-60 min in the curing chamber, and an additional 30 minutes in the sun, all of these prints still feel tacky. Even the 8s version. What could this be? My guess is a problem with my process or the resin, because these cure times should be more than sufficient. Time will tell.

Producing FabDice

I’d like to produce a set of DnD inspired FabDice and Dice Tower that can be rolled after “damage done” on a Fab project. Whether its from having a failed print or ripping a trace, we can all use some inspiration at these times. Therefore, each side of the Die will feature a quote such as,

“Fab Fun” “Sucks to suck” “Embrace the Grind”

This text will have to be very tiny but legible, which seems to play to the strengths of SLA resin printing. Additionally, the die will need to be printed hollow and filled as to be “weighted”. This will perhaps be empowered since SLA resin prints are often printed with drain holes; “there’s my in”.

The dice themselves seem like a good chance to use algorithmic design. This should allow me an easy route to make the generic shapes of the dice (tetrahedron, cube, octohedron, etc.), automate the positioning of the text, and finally, add some randomness to the text generation (which text goes on which die). Then I will have a random generator of random generators. :)

The dice tower seems like a good opportunity to try my hand at Generative design. I can design the top, base and die track of the tower, while allowing AI to design the walls and fill in the gaps. There are many examples of printed dice towers that I can use for inspiration.

Algorithmic Design of Dice

For algorithmic design, I settled on CADquery as it came recommended during the recitation as a modern alternative to OpenSCAD that may prove more user-friendly to someone who doesn’t code as often. Luckily, it currently runs on Python 3.9, which I’m loosely familiar with already. My installation process is documented here. My experience with CADquery examples can be found here. It took me some time to get the hang of CADquery. Honestly, to say I now have the hang of it would be generous. More like, I was able to struggle through it until I got it to do what I wanted… and to think they pay 6 figures for that skill set :)

This process of designing the dice has moved to my week 2 documentation, here

Printing of Dice

So with the text working on two shapes (hexa and octa), I decided it was time to try a print. For this, I followed common agreement online that prints sometimes do better when pulled off the build-plate, suspended by supports, and tilted at an angle. So I tried various angles and let the Photon Workshop auto-generate supports. Even still, I included one cube flat on the buildplate as a control. Additionally, since the cubes were hollow, I allowed the software to autogenerate internal supports as needed. Since a huge benefit of this technology is that print-times only scale with increase in Z, I decided to fill the bed out completely with some other calibration prints. See Ameralabs town and Elegoo’s rook. I thought to myself what is the downside of putting a lot on the bed?

3dp-full-plate.jpg

Well…

3DP_full_plate_results.jpg

via GIPHY

I found out that when one print comes off the bed, it of course affects the rest of the batch. Luckily this isn’t quite as bad as it looks. Most of this trash was easily washed off of these other prints and taken off with a toothbrush. I haven’t given up on the rook for instance. Also, I will heavily cure these objects and perhaps test when over-curing begins to occur.

resin_salvagable.jpg

Perhaps most annoyingly, when this detachment occurs I am forced to empty the vat, scrape off any debris from the FEP sheet and filter out any remaining debris. This is a messy and hazardous process but the resin return station is already “paying for itself”

Resin_mess.jpg

Also, even after washing the prints, it was clear that the text on the dice was not showing up. I believe this is due to two factors. The font is very thin and cuts all the way through the dice. I needed to change the code such that the text was emboldened and embossed on the surface rather than cutting through the entire object like below. Side note: You can also see the internal supports in this view which are produced to support the internal ceiling. This is one example of a feature that could not be easily made subractively. I am still unclear if this internal lattice structure was necissary or if the geometry could be printed without it.

3dp_cube_internals.jpg

After cleaning the vat and resetting the printer, I setup what I hoped would be a final print. This included one cube, two unique octahedrons, and one blank dodecahedron.

3DP_ver_3_internals.jpg

I made sure to print a cube, octahedron, and dodecahedron together in one print. Since all were roughly the same height, all would take the same amount of time to manufacture. This exhibits Neil’s point that manufacturing time and complexity do not correlate for certain additive technologies. In other words, these basic shapes could all be produced by subtractive means, but the octahedron would take much longer than the cube.

Unfortunately, the results were even worse this time. I was left with even more “trash” around the prints. Even stranger, was the fact that there was no detached print this time. In both cases, there was an unexpected thin layer of buildup across my build-plate. Therefore, I have no great idea where all this trash could be coming from. It could have to do with exposure time, the resin itself, ambient temperatures, or something else..

dice_mess.jpg

via GIPHY

I found some, but not a lot out of salvage value out of these by scraping away the debris as best I could, washing, and curing them. I am not satisfied with these results but I ran out of time. Time permitting, I’ll be coming back to this project later on and as needed for my final project. For now, I’ve got these almost legible dice reminding me that this is just another bit of “Fab-Fun” and that we’ve got to “Break it ‘til you make it!”

Dice_mess_reults.jpg

Producing Dice Tower

Having hit some roadblocks during Networking/Communications week, I found it a good time to revisit a subject that I had wanted to give more attention. I am still not satisfied with my resin printing results and would like to try another slicer. Additionally, I still wanted to try my hand at generative design since I believe it will pair so well with the resin printing. I think the dice tower I had planned will give me a chance to do both.

This process of designing the tower has moved to my week 2 documentation, here

generative_explorations.jpg

When it came time to print these, I could not decide which generation I preferred. Gen 5, picture to the right in the above picture, more strongly displays the generative nature of the design. That said, it has a gaping hole in the side where the algorithm decided we didn’t need any material. In practice, it proved difficult to convey to the algorithm that I wanted to retain atleast some minimum amount of wall on all sides. Instead, it was purely optimizing based on the structural loads. In fact, for the final generation, gen 10 (not pictured), it decided we didn’t need any walls to handle to the loads involved! That said, for it to function as a proper dice tower, walls are needed. For starters, I decided to print both Gen 3 and Gen 5 in 1/4 scale.

buildup_on_castle_experiments_2.jpg

These prints came out pretty well, but I was still having this issue of material building up on the plate.

buildup_on_castle_experiments.jpg

Upon taking this issue to the Anycubic Photon 4k Facebook users group, someone named Leo Nardo may have finally offered me the perfect piece of advice:

Hi. Do you see directly the screen to watch if is a problem with the screen, machine, file or USB? Put the file without the platform or VAT and watch and see the process (gladly is only the first layers the problem)

Following their instructions, I was able to take the following photos of layers 0, 1, and 2.

DLP_issue.jpg

When I followed up with the above image, Leo Nardo replied

yes! the usb can fail! I Change the screen in my old printer thinking that the life span is over, but in the new screen have the same problem. I make the same thing that y told you and see the problem in the screen. result? change the usb and solve it. Try it! is cheap, is easy, is fast.

So I dug up a different USB key and reformatted it according to the instructions found here. Upon attempting the same print with the vat removed, layer 0 showed much better results!

Layer_0_working.jpg

With fingers crossed, changing USB sticks may have resolved my issue that has plagued me since the start of my resin printing journey! Shamefully, I now remember once having read this advice a long time ago and ignoring it. Of course in hindsight, this could have saved me a lot of time. This leads me to takeaway #9 below.

Without further ado, here are some hero shots of my resin printing object that would not be easily made via subtractive means.

printing_hero_shot.jpg

Interestingly, Gen 3 was printed without supports and Gen 5 was printed with some supports. Despite Lychee slicer recommending them for the interior ceilings, they did not turn out to be necessary. Goes to show, it always pays to sanity check software. See takeaway # 10.

These files were too large to store in my repo (20 MB+), but they can be found hosted at thingiverse here.

Time permitting, I will come back and print one of these generations at full-scale.

3D Scanning

For 3D scanning, I decided to use a photogrammetry app for our iPad, Qclone. Having tried photogrammetry in the past with limited success, I made sure to choose a small non-glossy object to scan. I chose Qlone because it did not require lidar or any special sensors and I found the printable mat a clever way to ground the object in the real world. I began by printing this mat on matte printer paper.

Qlone_Mat.jpg

Then I selected suitable objects to scan. The lighthouse has many intricate details and should provide a nice challenge. The tennis ball will hopefully be easier for the program.

Qlone_objects.jpg

The app generates an AR dome over the mat/object which makes scanning the object very intuitive.

Qlone_in_process.jpg

Once the dome is completely scanned, the app will process the object.

Qlone_processing.jpg

The tennis ball offered good results apart from mistakes at the north and south poles, where it has a point and flat respectively. My guess is that these defects are related to lighting conditions and shadows, seeing as how they are at the very bottom and top of the model.

Qlone_results_2.jpg

On the other hand, the lighthouse scan predictably lacked detail, but had no major or glaring defects.

Qlone_results_1.jpg

I deemed both of these models too poor to justify 3D printing. If I do more scanning in the future, I will use the app Metascan and a LIDAR capable device.

Group Project - Characterize 3D printing machines

Documentation on our groups efforts to characterize our 3D printers can be found here. My contribution was to interptet the results of the test prints we ran on various printers. Additionally, I helped the team run the various infill tests to offer a visual comparison of different levels of infill.


  1. Allow water from prints to dry before curing them. Now using a fan for this process
  2. Scrub tough areas with a toothbrush before the curing process
  3. Assuming I can resolve the one issue, it is good to fill up the buildplate when running the printer
  4. Prints do better when printed at an angle as opposed to square to the buildplate.
  5. Prints do better when attached using supports rather than flush to the buildplate.
  6. Curing is working better when
  7. Around 30-45 minutes seems to be the sweet spot for my curing chamber
  8. I will be using 2.75s or 3.0s as my normal exposure time going forward for this resin. Still remaining open that this may need to change in light of new evidence. Also, power of the lamp will be a good setting to look towards changing.
  9. Don’t ignore advice because following it is inconvenient. It would have saved me a lot of time had I swapped USB keys out the first time I heard that advice. That felt inconvenient, but in hindsight it was a cinch.
  10. Sometimes the slicer’s will want to add support where none is necessary. Always sanity check.

Note: All design files and images can be accessed in my git repository found here.

All works shared on this site 'A Fab Academy Journey with Charlie Horvath' by Charles W. Horvath are licensed under Attribution-NonCommercial-ShareAlike 4.0 International


Last update: July 6, 2022
Back to top