Ye Hang talked about the workflow behind the barnacle material, explained how Substance 3D Painter and Designer were used, and shared some tips on creating customizable materials.
Hello everyone, I am deeply honored to do this interview. My name is Ye Hang. All my friends call me Hang Hang. I was born in Chengdu and have been engaged in the game industry for three years. I have been interested in texture production, model art, and recently level art. Now I am working at Ubisoft Chengdu as a Texture Artist.
I could enter this industry mainly through my own interest and efforts and the support of my family. When I was in school, I could not find the direction of study, but my mother always supported me to do what I wanted to do, so I had the opportunity to get into this industry. Since joining Ubisoft, I've had the privilege of working with talented colleagues on many great projects, such as For Honor, Immortals Fenyx Rising, and Mario + Rabbids Sparks of Hope. I've learned a lot from these projects.
Working with Substance 3D Software
The Barnacle Material Project
This also has to do with the For Honor project. At the time, we were having a season theme about the sea and pirates. As one of the artists in charge of the preliminary preparations, I collected a large number of reference images and used PureRef to organize them. Its advantages are fast loading, no limit on image size, and fast response speed.
Here, I would like to recommend another software called Miro, it can be used to organize reference pictures, and it can cooperate with many people. The disadvantage is that there is a limit to the picture size. If the server is offline, you will not be able to access all your reference pictures. Returning to the topic just now, one of the reference pictures aroused my interest. It seems that the vitality of barnacles is really tenacious, and they can reproduce and grow on fish bodies (the picture may cause discomfort).
After researching these reference images, I was wondering if the pirates' looted treasures and weapons could rust from long-term seawater immersion and get mossy or infested with barnacles, which could add some storytelling to our upcoming art assets and make the pirate theme more prominent.
Substance 3D Painter and Designer Workflow
The texture work of For Honor is mainly done in Substance 3D Painter and Photoshop, Substance 3D Designer is mainly used as an auxiliary means. Usually, I create a base material in Designer first and then add details (such as dirt, scratches, and dust) in Painter, for example, for this fire charcoal material, I only made the basic charcoal effect in Substance 3D Designer:
The flame effects are drawn in Substance 3D Painter later:
Since a large number of base materials will interact deeply with Painter, the compatibility and user experience between base materials and the software is very important. This includes:
1. Adjustable Resolution:
Most of For Honor's assets use rectangular UVs, which means I have to lock the resolution in Designer to 1:1, otherwise there will be texture stretching because not all nodes support the rectangular scale. For example, although the shape of the shape node has not changed, the black-and-white ratio has changed.
There are also some custom nodes that may stretch:
So I will give Painter users the freedom to control the resolution of the material by exposing the graph size parameters. Since the method may be relatively complicated, I will not go into details here.
2. Fixed random seed:
When users create textures in Substance 3D Painter, they will constantly try to switch random seeds to try different effects. However, some nodes might change too much, so I will fix the random seeds of these nodes to obtain a more stable random effect.
3. Input and output channels:
The For Honor project uses a lot of material tools, such as tools to detect and adjust color ranges for composite PBR ranges and tools that can generate nails, all of which use separate channels to exchange information, so the materials I create generally contain two redundant user-defined channels.
4. Try to avoid creating base color directly from the height map:
Generating base color directly from the height map may affect the color when changing the height information, it is best to use nodes such as AO or Curvature to do it.
5. Do not export too many unnecessary parameters:
Too many parameters will affect the ease of use of the material. Users will only be confused when they see more than 10 parameters. It is best to export only the most necessary ones.
6. Try to keep the graph concise and easy to read:
The game production process often involves a lot of iteration and adjustment of effects, so the graph of the material must be kept clean and tidy for future modifications by yourself and others.
Messy chart (from the internet)
The color palette:
Since I didn't want to make the material look too messy, I only used three main colors: ivory as the base color for the barnacles, brown for the dirt, and green for the moss around it (via the anchor system in Painter).
Not only can you create non-overlapping points like the one above, but you can also relax points that already overlap, this is magic!
This set of nodes uses C32F images to process and pass Point data:
Although the function is very powerful, the node is still relatively complicated to use, and the specific steps will not be repeated here.
Setting the slider is very simple, you just need to export the corresponding parameters. The difficulty is that I need to switch between SP and SD repeatedly to preview the effect of barnacles on the actual game assets. If you set a parameter range without testing it, the material's usability will be greatly reduced.
Since the material I create will be used in Painter, I will do my best to optimize the performance of the graph. Here is my experience:
1. Reduce the node's resolution:
Reducing the size of some nodes will not affect the final result, but will affect performance. For example, it doesn't make sense to use a "Uniform Color" node set to the same output size as the material: "Uniform Color" should be set to "Absolute [16px x 16px]" and subsequent nodes should be set to "Relative to Parent". Typically, this trick works for low-frequency images, such as Perlin Noise. But don't use images smaller than 16*16 pixels, it will slow down rendering performance.
2. Use the appropriate bit depth based on your project needs:
Because it is to be used in SP, the speed must be guaranteed, and I will try to use 16-bit or higher-bit maps as little as possible unless there are special needs (mentioned earlier) or the quality of the height channel is affected. Finally, these images will also be converted to 8 bits for output.
3. Use fewer colored nodes:
Color node operations take four times as long as grayscale nodes.
4. Nodes share as much as possible.
5. Place nodes with exposed custom parameters as close to the end of the graph as possible:
This is because the output of each node is cached. Therefore, the farther the graph of the adjustable node is from the final output, the more output needs to be processed just by modifying one of those exposed parameters. If your exposed node is near the end of the graph, SD just recalculates a few nodes between it and the output node.
For example, if the uniform color is adjusted at the beginning of the graph, all of the following nodes will be recalculated. If an HSL node is adjusted before the output is adjusted, only that node is recomputed, greatly improving the performance of the graph.
6. Use as few nodes as possible to achieve the desired effect.
7. The consumption of some generator nodes increases with the number of graphs that need to be processed:
Because Marmoset Toolbag is very convenient to use, and the ray tracing function has been added recently, I choose to use it to do the final render. For the model, I use the default material preview model of Substance 3D Painter and only use one HDR as the main lighting and one fill light to light up the edges. During rendering, I set the camera Tone Mapping to ACES for maximum tolerance.
- First of all, you need a certain software foundation, you need to use it a lot, get familiar with each node and the combination of different nodes. Here are some tutorials I'd recommend, starting with the official YouTube channel of Substance, The official tutorial site for Substance, Than Daniel Thiger's fundamentals tutorial. There are also free tutorials available on ArtStation.
- Followed by the understanding of the material, you need to understand the function of each channel, thinking about the properties of the material, such as the size of the material proportion, what season it is in, what geographic location it is in, if the weather is wet, if the material is hard, if it is formed naturally, everything you are thinking can increase a little bit reality for your material.
- Finally, look for lots of references, look for interesting ideas, then start experimenting, then ask your friends and professional artists to give feedback, continue to modify and improve the material, and repeat the previous process until you achieve the most satisfactory effect.