Hello everyone! This is Simon Kratz, or essimoon, and in this article I’d like to showcase my Sketchfab Master Superpower! In my 9-year long history of creating 3D models, one of the more challenging aspects of creating production-ready 3D models for me has always been texturing.
The main reason for this is that I never really got into the creation of 2D art; I basically… just didn’t have the patience for it 😀 I really respect everyone who creates a solid texture for a 3D model but for my case I had to find a different approach to get my stuff done. So in this Superpower showcase I want to share some tricks I learned on the way and show you how to create some solid textures without drawing a single stroke. Let’s go!
The Basics of Proceduralism
You probably guessed it from the title, this is all about proceduralism! When I got into the work of game development, a lot of procedural (or, at that time, rather “parametric”) texturing workflows started popping up in the industry. One of the most prominent examples is probably Substance Designer, which you can use to completely create full materials from scratch using parametric nodes. Now, the base of procedural content creation can be thought of as input parameters. Those can, for example, be fixed values that power a function that creates a pattern that blends with another pattern created from a different function powered by a second value…and so on.
Simply put, you don’t create content manually by painting individual pixels by hand, but by defining a rule for the creation of each pixel.
A Practical Use Case
Now while this sounds highly technical, let’s get to a specific use case:
The textures for this model were created entirely procedurally (meaning: without painting anything by hand).
This model is a great use case for procedural texturing. You can already see that it has a lot of technical looking patterns and you may be thinking, “Wow, he just layered a couple of patterns and adjusted the UVs to fit”, but that’s not quite the case. I went one step further:
The final textures are actually driven by texture maps baked from a high-poly model. Color ID, curvature, AO, Position and various types of Normal Maps are used as inputs to the texture-generating functions in Substance Designer.
The main advantage of this workflow is that you have some very high quality data to input into your functions. So I can, for example, first create a pattern like this using the basic functionality of Substance Designer:
And then use a triplanar node with baked position and object space normals as inputs without ever having to touch UVs.
Now I went on and created lots of different material functions to define the individual parts of the model: Plastic, Metal, Energy Shields, Electricity, Self-Illuminated parts, rubber.
The graph is a real mess and I probably should have maintained it a bit better, but since this model was part of a personal timebound challenge, I didn’t care 😀
Now you might say, “Well I can bake my high poly maps, too. That doesn’t make them procedural.”
You’re right, the baked maps are, of course, not procedural, but a big part of our workflow now is indeed proceduralized 🙂
Let’s just assume one of the worst case scenarios happens: The model is fully textured and you notice the model needs a definite change, like adjusting texel size of individual islands, reducing polycount, or some needed topology changes since the gun suddenly needs a complex rig to be able to dance happily after it shoots a target (because, what else?).
So you adjust the UVs and prepare your flayed soul for the painful process of re-texturing.
But wait! Since the whole texture is driven by a couple of baked maps, we can just re-bake the maps and it will all be fixed immediately!
And that’s not all. Apart from doing necessary fixes, you can also do major changes to the model, like creating a second handle or making the barrel a lot longer. With procedural setups of your textures you’re really free to edit on your design while always being able to preview the final-ish result.
There’s also another big advantage and you might have guessed it: Since you created basically a “rule” on how the textures should look, you can also create a completely different model, bake the maps and use them as new inputs for your material. This way you can create lots of guns that are style-consistent and will generate no additional texturing overhead.
One example where I used this technique is my Best Crystals asset pack:
Those crystals actually use only two substance graphs, one for the rocks and one for the crystals. The rest was generative,, which always produces unique, fitting textures for your models.
Some Final Tricks When Working With Proceduralism
Of course you don’t have to work with sculpting high-poly models in the first place. You can also define your materials from scratch. But keep in mind that you will always need at least something to “bind” them to the model, meaning something that keeps the model from looking like some tileable texture wrapped on the surface. Here are some tricks to help you get started:
- Main Directional Lighting
- Ambient Occlusion
- Curvature (can give great results if you subdivide your model first)
- Object Space Normals
Use the Tri-Planar nodes!
Use the Light node!
This one is really great to bash your model full of interesting gradients. Don’t imagine it necessarily as light; I often use this node to just give textures some unique tint variations based on normal direction. It also has some nice parameters to adjust angle and softness, so iteration flexibility is all yours.
Use the relatively new 3D nodes!
You should of course not use them as they are, but mask or blend them with other influences. 3D nodes can really add a nice layer of depth to your textures without a need for mode complex inputs.
Seriously, this software is a beast when it comes to proceduralism. It can do for your models what Substance can do for your textures. If you really intend to get deep into the matter of procedural content creation you won’t find a way around Houdini.
The model from the header image was actually created completely procedural in Houdini.
Textures (again) were done procedurally with Substance Designer from baked maps and vertex colors, to illustrate the potential of procedural workflows.
To mention Houdini in this texturing workflow showcase perfectly finishes the intro about proceduralism. Think about inputting basic rock shapes, getting them tessellated, displaced, booled, optimized into really realistic looking high poly rock shapes that are then baked to textures and auto-textured in Substance Designer.
For the 20k subscriber model I made a Houdini node graph that let me input any string and have it create this organic shape pattern, the interior filler structure and the glassy-looking string mesh, UV it and bake the maps, all fully automated.
In my personal opinion proceduralism can only grow and become a bigger part of the industry that’s ready for people to use as they see fit. I also encourage you to check out Substance Alchemist, which is still in development but lets you blend textures by rules using an AI that has been fed real-world blending materials to do your bidding. This is another example of how texturing workflows can be sped up and made more accessible to a wide range of users.
And I’m sure there are still more than enough fields of use still untouched that will evolve and revolutionize our content creation workflows in the future.
Stay sane in the world of parametric creation and AI-driven material blending and start getting crazy with your procedural creations!