How to 3D Texture Your Parts for FDM Printing Using SOLIDWORKS 2019!
Instructions on how to create physical, repeating textures you can FEEL and TOUCH on your 3D prints, using a new feature found in SOLIDWORKS 2019. (And this technique will work with ANY type of 3D printer, not just Stratasys!)
Step 1: Overview
Today we're going to cover a topic customers have been asking me about for YEARS: "How do you make 3D textures and repeating patterns on FDM prints, to hide layer lines and make parts more realistic?"
We've talked before about how to create similar displacement-mapped models for 3D printing in Rhino. I've even shown how we can create beautiful, full-colored and displacement-mapped prints using Photoshop, which is a little easier.
Now we're going to look at a new tool in SOLIDWORKS 2019, called "3D Textures," which makes things even EASIER:
Let's get started.
Step 2: Applying 2D Textures to Your SOLIDWORKS Parts
Let's start with an example close to how this feature will probably be used 75%+ of the time in the real world: simulating leather textures on cosmetic automotive parts:
In the real world, these automotive parts are mass-produced by injection molding, and the leather texture added by acid etching the INSIDE of the injection mold, which adds more expense to an already expensive mold-making process.
But what if an automotive engineer wants to see an early mock-up of what their part MIGHT look like, WITHOUT paying for an entire mold to be cut out of aluminum first?
That's where 3D printing comes in. And the first thing we're going to do is define the area we want the 2D texture applied to.
Now I'm specifically going to make this harder than it needs to be, by using the Split Line command in SOLIDWORKS, to carve out certain areas I do and don't want textures on.
(I could skip it for my sample part, but if I teach you this step now, you'll be ready for anything in the future.)
So let's say we wanted a 'safe' circle around the hole at the top of my part, an area that won't get textured. We'd sketch a circle around that hole and use the Split Line command to make it two separate faces:
This can be done with any type of shape you can sketch, not just a circle.
I went ahead and did this two more times on my part to create 3 total safe zones:
If you need more info about the SOLIDWORKS Split Line command, click here.
Now let's apply a 2D texture. There are about 15 ways in SOLIDWORKS to apply an appearance to a face, but I'm going to use the "Edit Appearance" icon right in the middle of the screen:
Choose your desired faces as targets on the left, and it works better if you choose one of the black and white "3D Textures" as your source on the right:
(Why black and white? Remember, as we discussed in my other displacement mapping tutorials, white areas will be extruded UP away from the surface, and the black areas usually DOWN into the surface, or kept flat. So you want good, sharp, contrast between black and white.)
There wasn't a pre-existing leather texture in the SOLIDWORKS library so I just used 'Bubble'. (And notice how our safe areas remain untouched by the texture.)
Now we're going to use a new feature in SOLIDWORKS 2019 to displace this texture into actual 3D information we can feel.
Step 3: Applying a 3D Texture to Your SOLIDWORKS Part
(Remember that this step only works for SOLIDWORKS 2019 and greater.)
The command we're looking for is called "3D Textures," found under "Insert... Features...":
You choose the body you want to change (the only body we have, in our case), and now you've got a lot of settings for how far the texture will displace from the surface, how much to refine the underlying mesh, etc.:
(And I don't know why the name 'bubble' is misspelled when using the library's own texture.)
You have to click on the checkbox next to each face to make that face's texture displace, and the "Refinement" level seems to affect how fine a mesh is made under each shape from the original texture:
Notice that our safe faces aren't bumped, and that even the 0% refinement face has some waviness to it, which is not what I expected.
After hitting the green check mark, your textures are visually shown on your SOLIDWORKS part and in the feature tree, but you need to do one more step before they are real enough for 3D printing:
(For more information about SOLIDWORKS' new "3D Texture" command, click here.)
Finally, to make these visual textures into something 3D printers can read, we have to "Convert them into a Mesh Body." Right click on a solid body in the feature tree to see the command:
There seem to be choices on how fine the conversion is, and just like any STL export, the finer you set the sliders, the larger the file. (We'll take a look at what the 'right' settings are later.)
Hit the green check, and if you save that resulting body out as an STL (for printing), you'll notice the file size might be pretty large:
That's because the hundreds of thousands of little triangles needed to describe all the bumps and waves we just put into the body require data in the STL, making it huge.
Normally I'd go back and change some of those sliders because a part this small shouldn't need a file size that large, but I wanted to see what happens.
So I printed it.
Step 4: Our First Print
I loaded our 24 (!) MB part into GrabCAD Print in three different orientations, because that definitely matters when doing displacement mapping in FDM (more on that later). And the final result looked pretty close to what I saw in the software:
How did the bumps come out? Well there was definitely some good and some bad.
To my untrained fingers the part definitely felt like it was bumped the right amount, and it was a pretty fun change from handling normal FDM parts:
Also, the difference between 50% refinement and 88.9% refinement was definitely apparent, both by eye and by touch:
At 50% refinement, the circles just felt muddy and unfocused compared to the 88.9% ones, so I'll probably keep that setting at 89% or higher for the rest of my prints. It's good to see that the refinement slider in SOLIDWORKS actually matters, although it's a little strange that refining a face 0% still makes bumps appear.
But now the other side of the coin.
It definitely matters what orientation you print the bumps in, and it seems a vertical face definitely works much better than a horizontal one:
To put it another way, due to how current FDM technology puts layers down (one at a time, vertically in the Z), one orientation will work much better than the others for your 3D textures.
I made up another simple 24 (!) MB part, textured with fancy bowties to illustrate the concept:
So theoretically, the bowties should be fine on vertical faces, but print very poorly lying flat.
Of course, we don't do anything just theoretically here in these tutorials, so I printed these too.
Step 5: Our Second Print
Again, our preview inside of GrabCAD Print looked pretty close to what we got coming out of the machine:
(Obviously we're trying to use up our red filament from Christmas!)
And can we talk about how much cooler FDM prints look with a simple texture on them? If those blocks had been normal flat rectangles, I wouldn't have cared to obsessively watch the printer. But with textures applied:
Even a simple texture seems to give an FDM print much more depth, more complexity and more psuedo-realism than before. I might do all my FDM printing with textures from here on out if possible!
So how did the printing angle affect our bow ties? Let's see if you can tell which was which:
Obviously something is going on with print C, and to a lesser extent, print B.
But to figure out WHY, we have to talk about how FDM beads are laid down:
That's an oversimplification, the rastering process is much more complex than just switching directions every layer, but it's good enough for our example.
The main point is, your layer height is fixed (I was using 0.010", or 0.254 mm, for my quick prints). But a moving print head can make much smaller changes in X or Y:
(On the printer I was using, those green subtle head adjustments can often be 10x finer than the layer height. So we're starting to see the issue.)
Secondly, when printed flat to the tray, my bow tie textures were 0.200" wide but only 0.020" tall:
So at my 0.010" layer height, my printer would only have 0.020"/0.010" = 2 data points (layers) to approximate the complex profile of a bow tie. Have you ever tried to approximate a complex shape with only 2 data points?
It works out pretty much like this:
And that's exactly what we see in the final print:
But if we print those same textures on a VERTICAL face, that means we have 0.200" / 0.010" = 10 layers to capture the shape instead of 2, and each vertical layer can just make subtle head changes to shape the texture out from my wall:
And if you look at the actual prints side by side, that's exactly what we see happening:
You could have seen this in GrabCAD Print's slice preview as well:
There are other trigonometric reasons the resolution gets worse, the closer a texture gets to horizontal, but that's good enough for now. (And if you really want the deeper explanation, email me at email@example.com with an example in mind!)
But we've learned our lesson: keep those textures vertical for best results!
So let's put that to use in one last print.
Step 6: Our Final Print
Using our new knowledge, we see we really messed up with our choice of original car part. Because unless we get really creative with the build tray, SOMETHING on our textured face has to be horizontal:
A better option would be to split this 3-sided corner into a few prints, so each texture could print vertically, which we now know is best. So for our final print, I'm going to change our model like this:
So how did it turn out?
This was a hex pattern like a golf ball might have, and with barely any extra work, I had my 3D printed part looking amazing detailed! It totally changes the aesthetic.
Look how that texture wraps around that fillet. And our safe zones around the hole and edge are still respected.
Touching this part is now a feast for the fingers!
Here's what I love about this process:
1. It's super easy. The changes in SOLIDWORKS to put on this hex pattern were 4 features which took less than 2 minutes. Remember your "3D Textures" and "Convert to Mesh Body" commands, and you'll be fine.
2. It's super controllable. With the "Split Line" command we covered earlier, it's possible to put these textures in exactly the areas you want them, and protect the areas you don't. And with growing skill at texture mapping in SOLIDWORKS, you can even start to go around corners, like our fillet above.
3. It prints well if you use the right settings. As long as we don't try to print a texture on a flat horizontal face (or something with a lot of overhang, leading to a lot of support removal) we should get good enough resolution to get the affect we want. Other co-workers have tried printing at angles as low as 5 or 10 degrees, but I'll probably stay above 45 if I can help it, with 90 degrees from horizontal being the best.
(Also, a depth of 0.020" on the texture works fine at 0.010" layer heights. I'm going to stay at 89%+ refinement for now, and I'll play with the STL export settings to see if I can reduce STL size while not affecting outcome. But for now, prepare for 20-100 MB files for textured parts that fit in your hand.
Co-workers have told me that, for printing entire textured car dashboards or aerospace cabin interior parts, their STLs sometimes get up to 2GB (!!!) in size, so if you're in that range and the part is taking FOREVER to slice, maybe reduce the refinement and STL export settings, or split the part into multiple prints. But that's the subject for a future tutorial, if people want.)
4. And best of all, since we're just exporting STLs from SOLIDWORKS, it will work with any type of 3D printer!
I used a Stratasys F370 to make the prints shown above, but could have used our old uPrint, Dimensions, or even our full-color J750 to get some really cool results. (Or even our competitors' machines- shhh!)
So I've think I've found an easy way to add a lot more realism to my FDM prints!
Hope this helps make your prints more useful!