As touched on in the last blog-post I have been exploring a different texture workflow. I have been calling it "Digital Photogrammetry". In short, the idea is:
- a) model a high-poly model
- b) texture the model with procedural 3 and 4D materials
- c) create a low poly - preferably automate this
- d) bake texture maps from the high to the low
Why do this?
For any model you already high-poly, low-poly and, bake, or for any model with a unique texture, this workflow should allow for a multitude of semi-procedural improvements. First off: changing your high-poly model doesn't have an impact on your texture; using 4D textures means even destructive changes still create correct and accurate visuals - updates are automatic and no re-texturing is needed (just a rebake to low).
Woods, stones all other materials should not just be photo-accurate on their surface but also in their depth. 4D textures have this power. In addition, an ever-growing library of base materials and grunge should speed up the workflow immensely.
Think about how fast texturing in Substance Painter is once you have made smart materials fitting your project.
Your high-poly doesn't need UVs; baking down these materials to a low-poly texture map allows for more detail and a dynamic change in texture map resolution. It doesn't matter what size the target is - it's origin does not care.
You can thus bake to an appropriate texel density but still come back later and bake to double its size - the amount of detail will increase with a larger map seeing how the origin is generated and not bound to any pixel values. So you are able to down-res and up-res without losing detail because the detail is (for all intends and purposes) unlimited.
Hence the (slightly misleading) name. In effect what you are doing is baking highly detailed information into a game ready asset.
Quick Material Test on high-poly.
Now that is the theory. To execute it I have been using Blender.
And here is where the fork in the road happens. The above you may take and implement in any software. Any software with 3 and 4D materials will do. Avoid pixel-based applications, avoid any applications with tiling textures. Choose software that does not need UVs to map textures.
Again: we are not projecting limited pixel textures onto the high poly; the idea is to create fully procedural materials outside of texture map limitations.
Before I talk about Blender I do want to point out that this is my first time trying to use its generated textures to fully texture any model. The software has recently seen improvements in this area.
So then: does it work? Well. Yes and No.
There are limitations to the software right now. Not having an automatic curvature input in Eevee - unless baked by hand - makes it hard. Not having a real curvature even in cycles. The reliance on cycles itself is annoying - and contributes to a constant slow experience. Shaders recompile a lot and complex setups are sluggish.
Not wanting any 2D texture maps means a lot of the Substance Designer presets for grunge and scratches are not an option. 3 or 4D based scratches and grunge work but need a lot of setup time and can be overly complex. Blender has no presets.
Ideally, you would have a whole host of dirt node groups ready to use. This is what makes Substance Designer so great out of the gate - all those custom grunge maps are all just node groups already - having presets means you are ahead right away.
For me and a small portfolio scene: is it worth it? No.
This - like many other workflows and pipelines - would need a lot of setup time. I could have made a good looking unique texture in Substance Painter in less than half a workday. This has already taken 3 - and the result isn't great (mostly because of my low skill in this matter).
There are also major points of UX issues and annoyance. Some here:
- Slow with constant Shader Compiling
- Mixing Shaders (and with it prest node groups) works well but makes the material very heavy and slow.
- Pointiness based curvature isn't great for sharp details and only available in Cycles and only works well with a high-density mesh.
- Realtime Eevee AO is not a great representation of actual AO when used as a mask for dirt.
- No real curvature map
- No Sharpen or Blur in Shader
- No real way of viewing Shader Inputs / No "Buffer View"
- Substance Designer Style Color Gradient Picker would be amazing.
- Baking to low-poly is (horribly) slow
- Baking to low-poly is extremely tedious which each map needing all material outputs changed to a diffuse shader to bake color
Could I get better results with more time spent and more knowledge of how Blender procedural materials work? Ye: 100%. I have seen some awesome stuff around the web. It just isn't going to be a quick result and it isn't going to be very amazing UX. But:
Is it worth it overall?
(Potentially) Yes! (but maybe not right now and not in Blender)
If you had a full setup and library of materials you could just drop them on and would get a mere instant good result. Set a couple of sliders - mix some shaders based on mask presets. We are talking Substance Smart Materials / Designer presets but in 4D and without input texture limitation. No tiling of grunge maps or patterns. It's an improved version of Smart Materials / Designer Presets.
I can see it. I can absolutely see it.
Model a high-poly, choose materials, add mask presets, and hit a single button to get an automatic low-poly and texture.
Your game requirements set the polycount and texture size. And you can still take these maps into Substance Painter or Photoshop to further give them an artistic touch if needed.
Having the choice to work losslessly with source model textures is very interesting. You would still use tiling textures and materials in the engine for large surfaces of course - but any unique texture you already have could greatly benefit from this workflow.
I am willing to make a prediction: This will come. This will happen. Especially with 3D and 4D noises. Especially in a future of proceduralism and automation.
For this current scene, however, I will throw my models into Substance Painter and choose the quick and dirty way - I just don't have a need nor time to do an elaborate setup of base materials and grunges. And currently, Blender is not fast enough in this workflow.
Watch the future though: this - or something very similar - will come!
So. I'll leave it here. For a one-time environment art project and scene, the headaches and large up-front setup time are too much. For a very interesting future workflow? Ye. Very promising for a large operation.
Till next time,
-Lukas
P.S.: If Substance Designer had 3 and 4D textures (more than their current 3D ones that is) this would be amazing. You could do the same setup but it would be way nicer. With Substance automation, you could achieve a level of quick and easy integration and the speed of sbs/sbsr files and bakes is unmatched - it's miles ahead of Blender.
P.P.S.: The real future is procedural 4D textures at runtime with no need for pixel texture maps. Just saying - but it might be a while.