How to TEXTURE your 3D Printed Parts

We will cover EVERYTHING you need to know in order to texture your 3D printed parts for FDM, PolyJet, or SAF technologies, no matter WHAT software or skills you have!

  1. Step 1: WHY Texture?

    Customers ask me how to texture their 3D printed parts ALL the time. Some of the main reasons include:


    In #1, you are PURPOSELY creating noise and imperfections (in a way you control) to hide the accidental noise and imperfections inherent in 3D printing. If you put enough edges on a face, the human eye stops trying to find small patterns and just calls it 'complicated'. If you don't, the one or two accidental imperfections you always get while 3D printing really stand out.

    #2 was printed on PolyJet (so with 10x smaller layer lines than typical FDM) and that really helps on consumer products which need to be look 'finished' or held tightly to feel 'secure'.

    With #3 I was trying to show you can combine PHYSICAL textures (the bumpy regular box pattern) with a VISUAL texture (the more random white and blue camouflage pattern), and they can interact or not. (In this case, not.) The order of application really matters here, and this should be considered a more advanced path.

    I also found this great tutorial from CNC Kitchen, which talks about using textures to stiffen thin-walled FDM prints:

    I haven't had customers ask for that, my customers usually are printing bigger than single-wall parts, and have the freedom to just make the part thicker to make it stiffer, but you are printing VERY thin parts, CNC Kitchen makes an interesting analogy: texturing thin walls is like adding folds to paper to increase its inherent stiffness, just like corrugated cardboard! So if you want to see texturing for thin-walled strength explored, I won't do it here, but definitely check out his great video!

    We will mainly explore texturing to increase VISUAL and TACTILE appeal.

    So what makes a GOOD texture pattern?

  2. Step 2: What makes a GOOD texture pattern?

    Typically, you will always use a 2D black and white image to create your texture pattern. Most softwares we will use in this tutorial will give you some patterns by default:


    As you can see, even though each presentation is different, each basic pattern is a some version of RAISED WHITE PARTS and LOW BLACK PARTS.

    Most systems let you invert that direction, and most let you add your own black and white image patterns. But what type of image SHOULD you add?

    For this I was taught by awesome engineer Frank DeLuca (formerly of CoreTechnologie, whose software 4D Additive is yet ANOTHER way to texture, support and slice 3D printed parts), and Frank gave me these good rules (and this hex image):



    #1 and #2 are sometimes, but not ALWAYS related- you can have a high resolution image made muddy by high resolution grayscales between the two colors:

    Both of those are high enough resolution not to cause problem#2, but which one will be cleaner and more predictable to work with? I think B.

    There are sometimes you may WANT the fuzzy grayscale on the left, to 'ramp up' your values smoothly from lowest to highest, but in general, I find any displacement or slicing software does that ramp automatically. And I don't want the muddiness of the slicer compounding with the muddiness of the grayscale black and white image in uncontrollable ways, so I usually choose the cleaner image on the right.

    #3 deals with how the texture will WRAP around your (hopefully) non-square model, and how hard you will have to play with UV mapping to not show any 'seams':

    It will be easy to tell (and fix) when the pattern on the left does not line up across a curve or face or seam. How would you even KNOW if the leather pattern on the right doesn't line up, until you print it and see an obvious seam where the image repeats?

    And then how would you FIX that?

    And then how would you make sure the COLOR texture lines up with the DISPLACEMENT texture, to make the peaks and valleys in the leather align in a non-uncanny valley way?

    Not saying it CAN'T be done- many folks have printed leather textures and gotten away with it- but which one is EASIER starting out?



    I'm just saying, just because a caveman skinned a cow 20,000 years ago and wore it, we don't have to always recreate a 'leather texture' on our 21st-century 3D printed parts. We can move on to more controllable (and futuristic) geometric shapes.

    You'll see that I mainly stick to easy textures until I'm confident about what's going on.

    Now, what's the right DEPTH for a texture?

  3. Step 3: What is the right DEPTH for a texture?

    This is a simple test I recommend doing anytime you are using a new texture pattern:


    You can see that this print on my FDM Stratasys F370 takes about 2 hours, so I can turn around 3-4 of those tests in a single workday, which should be more than enough test samples (15-20) to find the right settings.

    The test file I'm using looks like this, message me if you want it emailed to you, but it's a pretty simple to make in CAD yourself:


    If you don't know why you should mainly print FDM textures on VERTICAL faces, you should go back and read my previous FDM texturing tutorial here, but the main thrust is, the bigger your layer line heights, the coarser and blockier your texture will look, when the printer tries to render it on a flat horizontal face:


    But if you print the texture on a VERTICAL face, your printer has a lot more lines to render the image, and those lines have to change a lot less, leading to a 'smoother' look:


    This difference is very noticeable in FDM, not so much in smoother technologies like Polyjet, P3/DLP or SAF:

    So that's why my test piece has those little feet to hold it up. You want to print your texture like the SIDES of a soda can, not the top and bottom.

    (Again, if you care mainly about SOLIDWORKS and FDM textures, my previous tutorial focusing just on those features is here.)

    So how did my Depth test pieces print? Like this:

    Here's how they rank:


    So in the future, I'll probably always START with my textures at or >1 mm in depth and go from there.

    At a CERTAIN point, the bottom overhang of the texture will start to droop without support (you can kind of already see that happening at the 1.27 mm depth), but that can be solved by actually using support (I didn't in this test) that dissolves or washes away:


    One thing that happens if you aren't careful, is the texture 'stretching' as it goes around a curved face, which is related to the UV wrapping (which is it's own whole big topic we won't cover here):


    And that is why you always test your textures on CURVES.

    So now we know that 1 mm is a good starting DEPTH of your 3D printing textures, but what about the SIZE of the texture pattern itself?












  4. Step 4: What is the right SIZE for a texture?

    Here's another good test to do when starting out with any new texture pattern:

    To measure this, I'm inventing a totally new unit not seen anywhere else: Hexes Per Inch (HPI) (sorry again metric folks!).

    HPI is a way for me to repeatedly apply the same size texture to different size parts and have it come out looking about how I expected, and it works like this:

    Since I print mostly Hexes anyway, that's the name I chose, you can use your own.

    You're just counting up how many REPEATED units there are in 1 inch, (or one mm, or ten mm, whatever metric folks use). I just didn't see an existing measure to tell someone else "Hey, how big do you want this texture on your part anyway?", so I made one up. And it solves a lot of problems, so I'm keeping it.

    (And how would you even DO something like HPI with a leather texture anyway? This is another reason I love printing hexes to start.)

    At some high HPI, the texture will either get too small to print or too small to register under human eyes and hands, and at some low HPI the texture will stop having enough edges for our brain to categorize it as 'complex', and we'll start looking at the trees and not the forest, which makes it look too forced and fake.

    Let's see how it came out:


    This is more subjective than the depth samples. There is probably no application where the tiny 14 or 9.5 HPI look good, but the difference between 7, 5, 4, and 3.2 HPI probably comes down to personal taste.

    I wouldn't go up to a huge 2 or 1 HPI, however, that would probably just look too fake.

    So now we know what DEPTH (1 mm) and what SIZE (probably 4 HPI) to make our starting test textures for a new application- but how do we actually APPLY those textures to 3D printed parts?


  5. Step 5: How do you APPLY textures to 3D printed parts?

    This will probably be the longest section, and we STILL won't cover everything.

    That's because there are almost as many ways to apply textures to printed parts as there are CAD systems:



    If you want an in-depth tutorial on steps for texturing your 3D printed parts in SOLIDWORKS 2019+, click here.

    If you want an in-depth tutorial on texturing your parts in RHINO 6+, click here.

    If you want an in-depth tutorial on texturing your parts in PHOTOSHOP, click here.

    If you want steps for using KeyShot or the new GrabCAD Print beta features, well, I haven't written those tutorials yet, so I'll try and cover it in this section!

    But no matter WHICH program you use, it makes the biggest difference to the process WHEN you apply the textures:



    There's a lot going on in that image, but here's all you really need to know:


    Texturing BEFORE your slicer generally leads to importing HUGE STL files into that slicer, as you have to capture all those thousands of bumps and valleys with crass STL triangles.

    You can see why we try to push customers towards the lower, newer, (green and orange) paths.

    But sometimes you HAVE to brute force it and texture/displace in your upstream CAD system. A lot of our texture users are automotive, and if you can picture a textured 1:1 scale car dashboard or something, those files can easily be 2-3 GIGABYTE STLs when you try to import them into GrabCAD Print.

    With enough RAM on your computer, GrabCAD Print can do it, (GCP doesn't have a built-in size limit), but it's not uncommon for customers to try the top red path with a 2GB file and then email me, saying: " GrabCAD Print crashed- it's not responding!"

    Trying to import a 2,000 Mb file will take a lot longer than most people are willing to wait, and will make rotating and slicing painfully slow on top of that.

    To give you a sense, here are some actual file sizes on our tiny 1-inch test piece (2.54 cm tall), with different texture settings in SOLIDWORKS:

    SOLIDWORKS has this idea of 'refinement', basically how many mesh triangles it uses to describe that texture, and that's what I'm changing above. You can see the slider better here:

    You can see things get pretty intense at the higher values. (The largest STL is 199 TIMES BIGGER than the starting CAD file!)

    13 MB may not SEEM like that big a file, but remember this is only for a tiny ONE INCH test piece that fits on the head of your watch! Any print we could REALLY use would grow even MORE exponentially.

    But does the resolution of the texture really even MATTER?

    You know what THAT means:

    And here are the results:


    Zooming in might show the results a little better (sorry for the quality of these pictures, I took them from 1,300 miles away)

    What you're really getting as you increase refinement is the 'sharpness' of the top flat face, it seems like, but I included the zoomed OUT pictures to show, it sorta doesn't matter from far away. The textures look a little 'muddy' up close, but still passable from a distance at the lower refinements.

    There's still more to experiment here, but for now, I guess don't go CRAZY on the refinement. If you feel your file sizes getting too big feel fine to turn the slider down and it probably won't matter until it does. Of course, always test it small before you print it big (our standing rule #0).

    But in general, if you are texturing BEFORE your slicer, the steps look something similar to THIS:


    And in general, there will be some export settings at the end that control how huge your resulting STL will be. Don't turn it all the way up.

    (Files coming out of Zbrush ALWAYS seem to have too many triangles in them, I've found, and they ALWAYS need 'decimation' because after a certain point, more triangles don't help, as we saw above.)

    But instead, if you texture DURING or AFTER your slicer, what you're sending to GrabCAD Print is a very SMALL file, which is much easier to handle!

    One option to do this is by adding BUMP maps to 3MFs specifically (STLs can't handle bump maps).

    This was the ORANGE path in the diagram above:


    At the time of publication (Jan 2023), this orange path ONLY WORKS FOR POLYJET. (I will update this paragraph if it ever comes to other types of printing inside GrabCAD Print.)

    To do this method, you must first turn on a somewhat hidden setting under GrabCAD Print... File... Preferences... "GrabCAD Labs":

    After that, you will see options to 'displace' PolyJet models, and your overall workflow looks something like this:


    When done this way, GrabCAD Print automatically textures/bumps/displaces the model AS IT sends it to the printer, basically AFTER you've hit the "Print" button, during the slicing. This means you only import a very SMALL file into GCP.

    Unfortunately, there's no real way to DIRECTLY preview the amount of displacement you are getting here, and that's the main downside of this orange path. You can't really SEE the model as it will print, since increasing those numbers in the "Displacement" box in the right menu doesn't make it look any different on the GrabCAD preview tray, for example.

    So you have to go in a little blind- I recommend always doing a small test piece before your big main piece! (Rule #0!)

    But, if you have that secret option turned on, if you look VERY CLOSELY at the tray preview, you CAN sometimes see SOME differences, where we try to render the bump maps just like a video game would:


    It's not super obvious in that case, so let me choose a bump map with more a little more contrast between black and white:

    So you can KINDA see what you're going to print. (We're using bump maps just like a video game would here, creating the ILLUSION of depth.)

    It's a good way to see WHERE a texture might be (watch out for those unintended faces which got a 'gray' bump map by accident) but not a good gauge of HOW BUMPY the final result will be.

    It's a subtle difference on screen, hard to spot and very tough to measure, and if you'd like the preview to be much more obvious, let me know (shuvom.ghose@stratasys.com).

    But that's probably the most elegant way to get displacement maps into your printed files, since the displacing is only done DURING your slicing.

    The blue spherical bump-mapped file above was only 1.1 MB, very easy to import, rotate and manipulate. If I was going to try to print something (in PolyJet) which needed color and bump maps LINED UP (like leather), this orange path through KeyShot is probably the method I would choose.

    Contact me if you want more training on that path, there are a few gotcha's to cover which require knowing your specific application (such as making sure the OTHER faces of your model don't bump when you don't want them to!)

    Now let's look at the OTHER elegant method, which almost no one knows about (because it's just barely now in BETA):

    As of time of writing (Jan 2023, GrabCAD Print version 1.73), this green path:

    • ONLY works for FDM printing
    • Is ONLY available if you join our very, very early beta and
    • DOES NOT allow for custom textures (you are limited to just the ones we supplied)


    As 2023 progresses, we hope this beta progresses, with more customers giving more feedback, and that way we can make the product better and release it for everyone!

    (If you want to join the beta... shuvom.ghose@stratasys.com.)

    But the benefit of this new green path is that, for the first time, you can apply the textures INSIDE of GrabCAD Print (not in upstream CAD) AND scale AND rotate AND preview it there BEFORE sending the file to the printer:


    Here is a more step-by-step workflow of the green path:

    The ability to choose that wide, unified, cylindrical FACE in step 3 is the main reason we can't use STLs.

    And then:

    At this point you can actually SEE what the texture would look like, unlike the Orange path:

    This is when you'd do your normal manual check of the toolpaths, infill, estimation times, etc., before hitting 'Print'.

    BUT, since this texturing happens BEFORE you send the part to the printer, I can actually EDIT this texture right here in GrabCAD Print, and CHECK the results, using the slice preview command:

    Since we're so early in beta for this feature, there aren't a lot of mapping controls, so I wouldn't recommend trying to texture a whole sphere like I'm doing above- it will look stretched on the curved faces.

    (And textures on top-facing faces turn out bad in FDM anyway, as we've seen before.)

    Better to do mostly vertical, only slightly-curved faces for now.

    Since you can preview before printing, quickly import and quickly edit the texture size right inside GrabCAD Print without going back to the original CAD, that's why all my tests in steps 1 and 2 of this tutorial were done this way:

    Because I was just testing a simple texture on a single vertical face, because I had an editable CAD file and not a locked STL, and because I wanted to test a lot of VARIATIONS quickly, (in FDM only), I used the beta tool.

    And it was much faster than going back to CAD and saving out variations for EVERY SINGLE file.

    I even did one test I haven't shown you yet, testing if the ANGLE of printing the textures mattered:

    I even angled them both forward and back:

    And the angle DID end up mattering, but just not for the reason I expected:

    While a few of those pieces had some issues with stringing, as the textures got hung out over unsupported space, NONE of them absolutely SPAGHETTIED like the 45 degree angled ones did.

    Looking at the auto-generated support, I guess it's not surprising (with perfect 20/20 HINDSIGHT) that those models didn't print well:


    If I had checked what the automatic support was doing before I rushed to hit 'Print' (yeah yeah, I know), I guess it would not have been surprising that these models spaghettied out, which brings us to one of the important quirks of the green vs. orange vs. red paths: how much the support generation takes into account what the texture is doing.

    Here is the difference between a similar texture done in SOLIDWORKS (red path) versus in GCP (green path):

    But there are workarounds for this, mainly by increasing the 'Self-Supporting Angle' in the Support Settings:

    So just keep that in mind if you join the beta, sometimes you'll have to 'help' the support generator make better decisions, especially for angled textures.

    So those are some of the many paths to texturing your models for 3D printing. There are always more, and if you have any questions on your specific path, message me at shuvom.ghose@stratasys.com!










  6. Step 6: Differences in textures BETWEEN technologies

    Now that we know how to apply them, let's look at some quick differences in printing textures BETWEEN FDM vs Polyjet vs SAF:

    So of the three, you can see that if you're going to print your FIRST textured part, and the textures fit mainly on the vertical faces, you can use FDM.

    If you're going to print COLOR textures (like leather, where the light and dark brown of the leather have to match up with the peaks and valleys of the bump map), you'll need to use PolyJet.

    And if you're going to print HUNDREDS of single-color parts which need to look good and stand up to constant use, you'll probably use powder/SAF. That's why a team of talented Stratasys folks did THIS for a recent internal engineering conference:

    If you've EVER manually removed support material from FDM or PolyJet prints, you know why those 100 sunglasses were printed in powder/SAF- you could probably vacuum all 100 SAF prints clean in the time it would take you to scrub ONE polyjet print with a toothbrush and water! Especially with those little texture crevices!

    Also, the H350 prints in PA11, which is a type of high impact resistance Nylon, meaning it's flexible but tough enough to stand up to end-consumer use. They've been my daily sunglasses for 3 months now and I love them!

    I didn't cover nTopology texturing above (although I did do an ENTIRE tutorial on that very powerful generative software here), but the general process is the same as we've seen before:


    Remember that for nTopology, what you're really importing is not a picture but MATH. Going into all the details of HOW to make that math into a texture is beyond the scope of this tutorial, but luckily Andrew from nTop made an entire video tutorial about it here- check it out if you want more!

    One thing I like about they way they printed these glasses is IN PIECES- too many times I see people trying to do everything in one step, with big bulky parts that would have printed 3X faster if they had cut them up and laid them FLAT on a tray to snap together later.

    That doesn't matter SO much with SAF, with its 3D nest, but its still a lot smarter to cut and stack these prints and assemble them later. Don't shy away from extra steps after the print, just look at the difference dyeing the SAF parts make:

    Worth it!

    (And if you remember the * from above, if you dye textured SAF parts, you don't have to worry about orientation in the 3D nest anymore, as dyeing hides the lines sometimes seen on the top face of textured SAF parts!)

    Here are Simon's other tips on the process, if you want to duplicate it:


    And if you want to get REALLY deep into the process, here's the actual breakdown in days:

    But big thanks to everyone who worked to make these great glasses real:

    So those are the main differences between our three main technologies.

    But at the 11th hour I mentioned this tutorial to our Origin One/P3 team and they JUMPED at the chance to be included, so here we go:

    This was textured in a process we can't reveal yet (I will update this paragraph when we can) but it is similar to the paths we've used before, doing something in an upstream CAD system which results in a large STL for import.

    Material properties on the very stretchy elastomeric IND 402 are found here.

    Our engineer, Tim Downing, CAN tell me however that the textures look great on curved surfaces in Origin, whether it is a positive or negative curve, and are great for adding small details and hiding layer lines, as we've seen with other technologies.

    Orientation and Support are intimately tied together in Origin printing, but here is a GENERAL comparison to FDM:


    You can see that the orientation of your textured face AWAY from needing support becomes a big deal, because you don't want to sand small support artefacts away all day.

    Also, CREATING supports onto your super complex textured face isn't fun, better to choose some SMOOTH place to support your model, and make your life easier. There's also a possibility (depending on a lot of factors) that your texture could print fine 90 degs vertical from your tray (purple text above), but it all comes down to rule #0!

    With a huge range of different materials and TONS of different settings under our Open Materials License, there are definitely ways to experiment with Origin printing and textures that we're still discovering- all of the below were recently printed on Origin by the great Tim Downing:


    Okay, that's REALLY all the technologies covered- now let's wrap this thing up!

  7. Step 7: Wrap Up

    We've talked about WHY we texture 3D printed parts- to hide layer lines, for grip and tactile feel, and because it makes your part MUCH cooler.

    We've talked about WHAT makes a GOOD texture seed image- crisp borders between black and white, a high resolution image whose left border seamlessly matches its right, top matches bottom.

    We've experimented with how DEEP a texture might go, I would start at 1 - 1.25 mm (0.04 -0.05") at first, because below that seems too faint, but that's a matter of personal taste.

    We invented a new unit for the SIZE of a repeating texture- I use "Hex Per Inch (HPI)", but metric users can use "Hex per centimeter" or something, even though it doesn't sound as cool. As long as you use SOMETHING to mark how many copies of your texture fit on a unit block, you can make sure you get REPEATABLE textures on every part, maybe even specify that on drawing callouts!

    We talked about many ways to APPLY textures, the main difference being if you are doing it BEFORE or AFTER your slicing- BEFORE is by far the most common way, but watch out for those file sizes! If your large files are crashing your laptops, consider texturing DURING/AFTER your slicing.

    And finally, we looked at differences in TECHNOLOGY used to print your texture- this is a very new field, so there is probably little or no institutional knowledge at your company regarding this. So DOCUMENT every result you can, and maybe YOU can write your own tutorial or present your findings at AMUG someday!

    Once again, if ANYONE out there needs helps texturing ANY of their 3D printed parts, always feel free to reach out to me at shuvom.ghose@stratasys.com, or on reddit, or message me here through grabcad.com, and I'll do what I can to help!

    Best of luck, and be sure to show me all your AWESOME 3D TEXTURED parts you've printed sometime!!!

Comments