Jake Lipelt shared his texturing workflow in the Venice Canal project, explaining how he created optimized and interesting variations of brick and plaster surfaces using the layering system.
Introduction
Hey everyone, my name is Jake Lipelt, and I am a self-taught 3D artist. I started out making characters and creatures as a hobby while I was finishing my general education at a community college. While working on a TV show for Warhammer+, I was in charge of designing, sculpting, and texturing various characters and creatures for the world. I found that I was able to save valuable time for myself and my coworkers by using Substance 3D Designer as a utility for rapid iteration and, more importantly, consistency across our assets. Since then, I have been taking my time learning the software and pushing its applications to develop my understanding of texturing as a whole.
Venice Canal
The Gnomon School of Visual Effects offers a class on texturing for games, taught by Javier Perez, and I decided this was a good way to fill any gaps in my knowledge and gain a better understanding of how texturing is used in game development.
In this project, we were instructed to choose a contained environment that was made up mostly of surfaces, with little emphasis on props. I chose to study a photo to keep my focus on adapting real-life references into 3D. I found this to be helpful in keeping me on track by minimizing the amount of thought I would need to put into interpreting a concept.
When I work with references, I prefer to take my time to understand how something is created and then pick no more than one image per material. I cannot stress enough how easy it is to be bouncing between references to make something that might look nice but no longer makes any sense. I want my art to look like it could exist, so I focus on making myself a realistic template to make things easy later on in the event I want to add some creativity to it. In the case of this study, having realistic and sensible surfaces was all I was really looking for.
I wanted to keep the modeling very simple so I could keep the focus on surfaces and blending. The only time I had to do something special was for any mesh that was going to use nanite because it bakes the vertex painting into the model, so anything I wanted to displace and paint needed to be one large object.
I used Blender for the environment and Marvelous Designer for the curtains, I did not need to retopologize anything as the models themselves only had enough polygons to make the vertex painting smooth. The most important thing in this part of the process is to make sure your texel density is set correctly to keep your surfaces consistent once textures are applied.
Texturing
This project was all about creating optimized and interesting variations in Unreal Engine using the layering system. My goal was to use as few textures as possible to achieve compelling results. For the purpose of this article, I will focus on the brick and plaster surfaces, primarily how I went about creating the variation, what I used Substance 3D Designer for, and how I built the shaders to make it work.
I make textures to fit a 512 per meter texel density; this means every 1024 texture represents a 2x2m square. This works as a guide for the scale of my textures in Substance 3D Designer, as now I can look up or measure the real-world size of the objects I would be scattering.
When using the layering system, there are some important things to note:
- Shaders can get really expensive, really fast, I stick to as many 512x512 textures as I can, I only go up to 1024 when a surface is exposed continuously for more than 2 meters in the engine and only if the tilling is so obvious that I cannot hide it with blends. Also, don’t forget to pack your textures! Three samples per layer instead of 6 will allow you to add twice as much variation at the same cost.
- Reuse as much as possible. If I can achieve something by adjusting another texture in the engine using basic layer parameters, I will save both time and texture memory.
- When I plan out a surface for an environment, I am usually looking for a low-contrast base pattern that can tile without being too obvious, and then some kind of variation with a good amount of character that I can blend sparingly later on. For the plaster surface, I found that having the variation be a damaged version gave me the result I was looking for, while with the bricks, I found more success using a separate mortar material.
- The plaster wall is built from the bottom up, starting with the mortar and making my way up to the clean top layer. I used Substance 3D Designer for the clean and damaged version of the plaster, the darker drips on the top layer are made by overlaying a basic color and vertex blending it with a mask to change the shape of the transition, almost like choosing a new brush in Substance 3D Painter.
The base layer of bricks is made in Substance 3D Designer, I then added a Desaturate layer using the in-engine noise to break up the color, followed by a dust layer with the brick mortar masked out using the same method, and finished with a painted height blend using the standalone mortar material.
The water is made entirely in Substance 3D Designer and displaced on a plane in the engine. I did not want to waste any time building a complex water shader for this piece as I did not need it to move, and it would not take up that much of the scene, so I tiled it at a larger scale to avoid repetition and got the results I was looking for.
One benefit to working with real-life references is that your composition can be finished as soon as you pick it, so if you work this way, make sure to take the time to choose the right one. Most of the detail work is done using vertex paint and a few very simple utility decal sheets, one for base color variation that would handle the mold, dirt, and edgewear and one for normals that could handle the cracks and break up of larger pieces.
Lighting
I want my surfaces and materials to be as accurate and clear as possible, HDRI maps and excess post-processing would likely just hide all of my hard work. My workflow for lighting is very simple, I usually use no more than three lights. One directional light, one light to simulate the effect of the directional, and one more to fill in the blacks. In my Post Process Volume, I set exposure min and max to 1, and that's it, everything else is set to default.
Conclusion
I took the entirety of the 10 weeks of the class to finish this project, the bulk of my challenges involved building the shaders and getting all the tools set up and ready for future projects. I learned the hard way the importance of building your shaders correctly the first time, you will be reusing layers and their blends throughout the whole project, and if you need to change something, it will affect everything in your scene. I recommend building and testing your shaders on a separate level before applying them to your main scene to keep everything clean and easy to work with. Keeping a clean house and building proper tools kept me focused on being creative and enjoying my work in the most important stages of the project.