How to control the transparency of your 3D printed parts- the hardest task yet!
With multi-material 3D printers, how do you control what's transparent and what's not? Especially when you've got clear sections above, behind, and even intermixed with your color layers? This tutorial covers controlling what's clear, what's opaque, and what's tinted, even in intersecting volumes printed as one solid part! Get ready to conquer the hardest task in 3D printing!
Step 1: How does 3D printed Transparency work?
Single material 3D printers have some great resins and can produce very clear single color shapes. But it's hard to create different gradients of color with just one input.
You may remember from my previous Realism tutorial that you need 4 ink colors for full-color 2D paper printing, but 5 for full-color 3D printing, since you also need to supply the white ink in lieu of white paper. When a 7 head J750 is set up for full color printing, it usually looks like this:
And to achieve transparency, what we do is mix one of those CMYK colors with Vero Clear in different amounts, to achieve our different levels of transparency:
Which leads to an output we can precisely control:
So that's the general theory, but how do we control transparency in practice? The simplest way is BY BODY.
Step 2: Controlling Transparency BY BODY
I like to use Rhino for applying transparencies to this type of print, since Rhino has the dual benefits of being good with multi-bodies (unlike Photoshop) and good at exporting transparencies for 3D printing (unlike SOLIDWORKS or Magics).
The simplest starting point is some sort of rectangular test palette with many separate bodies we can tint.
Here is one I made in SOLIDWORKS:
And while I can easily CREATE those 11 separate bodies in SOLIDWORKS, it's harder to TEXTURE them there, especially with different levels of tinting that I'm aiming for.
So the next step is to export that into Rhino. Normally I would export an STL to Rhino, and that usually works fine:
But with all these 11 bodies right next to each other, for some reason Rhino isn't letting me separate them, with the result that all 11 are selected if you click on any one:
So in this case I went through an alternate workflow, using a STEP file instead of STL (not the last time we'll have to change file types during this project):
And now I've got my separate bodies back in Rhino:
There was probably a good reason for this, some sort of STL setting I could have found in SOLIDWORKS or Rhino to make it work like I'm used to. But sometimes you just want things to WORK, instead of searching for that setting for an hour. So this is a handy workaround to try next time you're stuck with multi-bodies disappearing (exporting as a STEP instead of an STL).
Now we can use the "Transparency" slider in Rhino to set the tint of each body, setting them to the levels our black text bodies say:
And putting that on a J750, the model prints in 44 minutes and you have transparency control via body:
That's pretty simple to do. But before I moved on, I noticed one big thing RIGHT AWAY:
If you hold that palette up to a bright light you will see SOME difference between 40% and 70% transparency, but for all practical purposes, on the things customers use transparency for (simulating electronic screens, liquids in glass containers, clear boxes around fragile objects), nothing really happens until we get to 80% and higher.
And even 80% is a bit too thick and cloudy for most useful prints. So that leads us to our first professional transparency printing tip:
That will save you a lot of time deciding what transparency setting to try first. If you're going to be doing this a lot, it's worth printing out a 'palette' like the one above, at your desired thicknesses (thicker parts are less clear, as a rule) at 80, 85, 90, 95% transparency, so you can make better decisions about your first test print of any new project.
Finally, after I went through all the above steps using Rhino to set color and transparency, I realized that we could do the same thing by opening multi-body CAD files in GrabCAD Print:
So if you're keeping track, another, EASIER workflow for transparency by body is this:
I was so used to doing all my color work in Rhino and Photoshop that I totally forgot you can set body colors in GrabCAD Print too!
So that's two ways to set transparency by body. Now let's go one step harder, up to:
Step 3: Controlling Transparency BY TEXTURE
This is harder than transparency via body for a couple reasons:
- You have to make sure PARTS of that texture are transparent and parts AREN'T, using some photo-manipulating software like Photoshop.
- You have to make sure the transparency of the TEXTURE doesn't conflict with the transparency of the BODY.
- And you have to apply a texture to the FACES of the body instead of just selecting a simple color for the entire body.
So this is a tougher, but much more powerful technique, letting you do all the logos, stickers, and electronic screens designers usually want to prototype with multi-color 3D printing.
Let's look at the first step, manipulating the transparency of 2D textures in Photoshop. It's pretty simple to visualize the steps needed to make a logo transparent in certain areas:
But even after doing that, applying that logo to your part may not give you the desired effect.
I've seen these first two errors a lot:
Everybody WANTS the result on the far right, but I've seen a lot of users get the middle part instead, where they think their logo will have transparency but get that default white border. This happens when people are trying to apply 'transparent' JPG textures to things.
This is because JPG textures do not have an alpha (transparency) channel, but PNG textures do.
So if we want a logo to have solid areas AND transparent areas, we have to EXPORT a PNG, not a JPG, textures from Photoshop. Here's what we've got so far:
So that's hurdle 1.
But now we have to make sure the transparency of the TEXTURE doesn't conflict with the transparency of the BODY. Here's one case of what THAT looks like:
(Those parts are the same size, I just put one in front of each other so that you could see the transparency.)
What's happening is that the transparent pixels in the texture are causing GrabCAD Print to read the entire BODY as transparent. Some times you want that (such as in my transparent Earth map tutorial here) but most times you don't.
I find that this is mainly a Photoshop or Magics problem, I don't get it a lot when exporting out of Rhino. But either way, we need to control it, and this is another JPG vs. PNG issue again.
What we need to control now is not what's being INPUTTED into Photoshop (like the previous hurdle) but what's being OUTPUTTED from Photoshop when you save a 3D VRML:
The VRML with JPG texturing will be opaque (because JPGs don't have an alpha channel) but VRMLs with PNG texturing might be fully transparent (because PNG's do).
So now our pathway to transparency looks like THIS:
(Do you see why I said this was much harder than transparency by body?)
Just remember: JPGs cannot be transparent, PNGs can. That simple rule should help you control how textures and VRMLs get into and out of Photoshop.
Finally, we have to deal with mapping our textures onto a multi-faced solid body. For that, I'll jump into a short interlude about UV mapping.
Step 4: A short interlude about UV Mapping
UV Mapping is the term for how programs figure out how to take a 2D texture, like a picture, and apply it to a 3D shape usually for rendering, and now for 3D printing.
Think of it as 'skinning' your 3D model like it was an orange and laying that orange peel flat on a table. You can see this skinning if you double click on the right layer in Photoshop:
Now, STL's don't come with their own UV map. That data is just not there in the normal STL format.
So when we see that red, horribly cut-up UV map like we do above, that's Photoshop doing its best guess at what you might want the UV map for this solid to look like.
Most guesses are bad.
So one of the biggest challenges to applying textures for 3D printing (and thus transparent textures) is getting a sane, logical UV map of the 3D shape we want to texture. GOOD UV maps look like THIS:
So how do you get from one to the other?
A $3000 license of Maya does a really great job at automatically unwrapping UV maps. A $1000 license of Rhino lets you manually unwrap by selecting 'seams' in the model (tiresome but sometimes precise).
But what I use to unwrap my UVs in the office is a nifty little $60 program called Ultimate Unwrap 3D, which has to be good, because it has UNWRAP right there in its NAME:
Here's what it looks like unwrapping the UVs for my STL (just use the 'select all faces' command in one window and choose a box unwrap in the other window):
So for most of the STLs I'm trying to wrap textures onto, my preparation workflow now looks like this:
That's just ONE way of getting a good clean UV map to apply complex textures to. If I'm putting a small, repeating pattern over an entire model (like a camouflage pattern) I don't normally have to unwrap STLs, but for almost everything else, I do.
Ultimate Unwrap 3D is just ONE way to make this happen, let us know in the comments if you have any other tools for unwrapping UVs!
And now that we know how to apply transparencies by BODIES and by TEXTURES, let's jump into a sample project that requires us to do both of those, and MORE:
Step 5: The hardest transparency project: labels over clear liquid
This is the type of project I'm required to print a lot more often than you'd think: a customer wants a semi-transparent label over a fully transparent bottle, over semi-tinted transparent fluid, with a fully solid body floating inside:
This is the hardest thing you can do when printing transparent parts, because it's got a chance for you to make EVERY sort of error we've talked about so far. And, any other transparency print is just some sort of subset or variation on this bottle, with the shapes and textures slightly changed.
What I'm saying is, if you can master the hot sauce bottle, you can master just about any transparent part you'll 3D print!
First thing to do is break the job up into pieces, and decide what tools we'll be using to accomplish each step.
Pop Quiz, hotshots: which software packages would you use for each of the following steps?
Once you can take a complex job like this and break it up into doable steps in your mind, you're most of the way to being a 3D printing master!
If you've been following along with this tutorial, you'll probably answer like I did:
SOLIDWORKS is great at making complex, nested shapes, Photoshop is for making that logo transparent in sections, and since it's multi-body, Rhino's good for setting the transparencies of everything else, by body or texture.
Here's how it looks when it's all done:
And of course you've printed a few test samples before you did your long, multi-hour job:
I really like how that pepper-textured gear inside the hot sauce shows up through the red fluid, layering concepts like that is part of the fun of 3D printing!
Why is it a gear? Because there were no pepper models to download at GrabCAD.com, and I needed something inside to 'spice up' the sauce. A spicy avocado I downloaded didn't look that suitable in my bottle:
Spicy avocados aside, look at that last bottle on the right. I wanted it to be 80% tinted throughout the entire red fluid, but only the SURFACE of the red fluid got tinted, it was totally clear in the volume!
Even though it sorta worked to make a cool effect, it's not what I WANTED, so how do you catch these types of errors BEFORE you've spent hundreds of dollars and many hours printing it?
I usually go through 4 final checks.
Step 6: Four final checks to make sure your transparent print will really be transparent
The biggest issue when printing transparency is making sure the sections you want transparent ARE transparent, and vice versa. To make sure of that, I usually do 4 checks, in increasing order of difficulty, starting with:
When doing this check:
- Make sure you've got the right printer selected
- Make sure you've got the Advanced Slicer enabled (Under 'File...Preferences')
- Make sure you've got the right MATERIALS loaded (not having Vero Clear loaded looks a lot like a failed OBJ!)
- Make sure your textures are in the same folder as your VRML/OBJ (this will cause a gray body fail too!)
Looking at the picture above, you'd be excused in thinking I did something radically different in creating the failed parts on the left vs. the passing parts on the right. But actually, all I did was save the same model out of Rhino as an OBJ vs. a VRML:
Remember how I said early on that STL. vs. STEP wasn't the last time we'd try a seemingly similar file format to make things work in a pinch? So here we are doing it again.
Normally I'd export OBJs out of Rhino, since that's the industry standard way to move textured information:
But something recently changed either in Rhino or GrabCAD Print and now a lot of my usual transparency files aren't working, so I defaulted to VRML for now:
And the way I found that out was by checking how it looked on the GrabCAD Print tray. That's why this is always my first, and easiest, check.
Getting a little tougher now, we go to:
This is our first attempt at trying to see INSIDE the model, to try and guess what the slicer is doing layer by layer and inside internal volumes.
(And yes, I wanted to use the version of my hot sauce bottle where it printed a thin SKIN of red over my liquid instead of printing red all THROUGHOUT my volume, but I couldn't find them again. Always label your print files, kids. So instead, I'm using some highly-detailed, fully textured digital insect OBJs you can download for free here.)
This check can give you a hint if your large volume is going to print clear, opaque, or somewhere in between. It's not great to figure out small details, but it could stop you from printing a 9 hour block that was supposed to be clear but turned out solid.
At a minimum, I usually estimate:
- My textured model inside its clear block
- That clear block by itself
- My textured model by itself
Comparing those 3 sets of numbers lets me see INSIDE the model a little. For example, comparing the 2 sets of numbers above, can you guess what material is mainly used INSIDE this bug?
The amount of support material is the same, the amount of Clear goes up as expected, but the main difference is how much less VERO WHITE is being used. So we can deduce that the main color inside this bug isn't clear, but white.
To confirm this idea, we can estimate the bug alone and:
This is a good way to guess what's happening inside your large transparent blocks or volumes, and it's saved me once or twice. (Also, definitely check out the Digital Archive of Natural History on SketchFab, their super detailed insect OBJs seem watertight and ready to print in full color right away!)
Okay, let's spend some real money now with:
This one is a simple check, and I'm not sure why people don't do it more. Wondering if your transparent window will REALLY be transparent? If your tinted fluid will REALLY be tinted? Why not print a 25% scale model of it to check?
And here's the real kicker: STOP THAT TEST PRINT HALFWAY THROUGH.
I use this trick time and again. Most transparent models are pretty symmetric or have just one main area of concern. So stop your test print after that area to save even more time and REALLY see what's going on inside your model:
Those are the three checks you can do as a customer.
If all those don't work and you STILL need more help troubleshooting your transparent model, you can always do the FINAL, most detailed check of all:
Normal customers can't do this, but our Stratasys support team can help you troubleshoot complex prints with some tools we use internally. We can take any J-series print and look at it, slice by slice, voxel by voxel, to let you know how a transparent print might come out.
We've used these tools to troubleshoot our customer's most tangled transparency problems, so if you've done ALL of the 3 checks above and STILL need help making sense of what your J750 or J850 print will do in your print, email firstname.lastname@example.org or email@example.com and we can get you some insight- BEFORE you kick off your 25-hour print!
(And if YOU want to be able to see this slice view YOURSELF, please let us know that too, and hopefully we can make it happen in a future release!)
Step 7: Final thoughts
Controlling transparency is difficult for most new polyjet users, because it's the first time you have to think about your model in LAYERS, calculating what might go above what else, what might block something else.
It's also harder to create these models in the first place, but it's worth getting good at at least ONE of those softwares (Photoshop, Rhino, Blender) because that's how you unlock the true power of a multi-material printer.
And finally, all these transparency tips we've talked about won't matter if you don't also post-process your model correctly. In general, post-processing of transparent models consists of wet sanding with finer and finer grits of sandpaper, and then a final coat of either automotive headlight cleaner or spray-on clear coat. It makes a big difference in your transparency:
That's all I know about adding transparency to things. If you need any more help, let us know, otherwise, go off and print some amazing things!
Step 8: [Epilogue]: Two weird tricks if your transparency isn't working
So I didn't know where else to put these, but if you're still reading this tutorial you're probably a hardcore transparency printer, so you'll probably appreciate it.
These are for when you're working in your CAD/rendering software and your transparency by body is simply NOT working, like no matter how far you set the slider to "100% Transparency", it's not showing up transparent inside GrabCAD Print:
So we're assuming you've done all the transparency checks in Step 6 already, so now we're going to hack your file.
Open the bad VRML in a text editor, search for the word 'transparency', and if you see a '0', change that to a '1':
In a multi-body VRML you may have to try this a few times, to find the right 'transparency' line to change (there might be one per body).
Also, when saving, make sure you eventually end up with a .wrl document extension, since a lot of notepad editors may try to give you a .txt. (Just single click and edit the extension back to .wrl if this happens.)
But if you go through all that, you should be able to manually 'force' a certain VRML body to be transparent:
I find this trick works about 50-80% of the time for me. We used to specifically have to do this all the time for VRML exports from Photoshop, the above examples are from Rhino, and it SEEMS to have a lower success rate from Magics.
But a good trick to know.
The SECOND weird trick to try (which I've never gotten to work for me, but recently saved a large customer's bacon, so I'm including it here), is, when you're trying to apply transparency by BODY and it doesn't work, apply an empty, fully transparent TEXTURE to your body instead, wrapped around everything:
What you're applying is an empty, fully transparent texture (usually made in Photoshop by deleting everything on a layer and saving out as a .PNG) to the entire body, and then saving the body out like normal.
As I've said, I've never gotten this technique to work for me, but it's worked twice in the last month for folks, so keep it in mind. It seems like this might be more necessary when exporting transparencies in Rhino 6.0 than Rhino 5.0 (which I use) and more necessary when applying transparencies in Magics (which I try not to use at all).
That's it! If any of these weird tricks work for you, please let me know at firstname.lastname@example.org, along with your file if that's possible, and we'll try to make GrabCAD Print better at recognizing transparency, so you hopefully won't have to use these sort of tricks in the future!