Jacob Norris (PurePolygons) talked about the production of high-quality 3d materials and the way you could use them for environment design in UE4.
Jacob Norris (PurePolygons) talked about the production of high-quality 3d materials and the way you could use them for environment design in UE4. This production process is described in his new tutorial.
Forest Snow Ground
This Forest Snow Ground scene is essentially the continuation of my first tutorial “Forest Ground – Tiling Texture Tutorial.” I’m using the scene both as a studying ground for myself to try using a combination of multiple techniques, as well as a teaching ground to share my knowledge of these processes as I discover them in these tutorials. This is actually a scene that I have had in mind to make for quite a while now, but I’m sure as many artists can relate, trying to find time for personal work can sometimes be difficult. There is still more to come, since this scene is actually a Work In Progress at the moment. The tree’s and lighting are still a bit temp and the scene is missing a lot more artwork and fun unreal shader stuff. Eventually I am hoping to explore the possibility of making this a scene with shaders that can layer snow on top of all of the assets. That way it can be a nice spring time happy scene or a snowy cold more dead looking scene. That will be fun to see it working once everything is a bit further along.
I’m currently in the process of taking some textures and photogrammetry images of forest environments also. I will be using those in this scene too, as well as posting them up on my “Gumroad Page” and my “Homepage” for others to checkout. They will range from the forest ground, grassy, rocky, nature textures, all the way to grabbing some city and architectural reference/photogrammetry textures too. So there should be something fun for everyone in there. It will be fun trying out some new methods for photogrammetry throughout this process and seeing how the assets blend into the hand created scene that I already have with the snow, trees, ground, etc.
There are a few different options for people, so that you can view whatever you are most interested in. There is the “Videos only” which is self-explanatory and simply includes the video files for the tutorial. Then there is the “Content only” which will simply allow people to look at the substance graphs, snow clump asset/with LODs, the unreal engine files, and the final textures. Then there is the “Complete Package.”
I usually try to throw in a few extra things for people and also give a discount if you are interested in the bundle of the whole tutorial. Here I have included both the content files and the video files, as well as some additional Zbrush files for grass and some time-lapse videos to show even more steps in the creation of the current scene that you see in the screenshots. So it’s usually the best option for people to go with the complete package since you get the most bang for your buck. Recently, I have added also a “Complete Forest Series” pack which has everything from the first forest ground tutorial and the snow ground tutorial, plus all of the bonus content. So if you haven’t see the forest ground Zbrush tutorial I think there is a ton of good info in the complete series.
You’ve mentioned some of the industry standard practices, which you are going to use here. Could please give some hints on those practices and maybe describe one of them?
When I am saying industry standard practices, of course in the end everyone has their own workflow and way of doing things, but I am hoping to give people a glimpse into my daily workflow when I am creating things for video games. Don’t worry this doesn’t mean I’m going to show you how to read and respond to a ton of emails each haha (this is a big part of the industry.) As I mention in the “YouTube Overview Video”, some of the standard practices we will cover is the process of creating a high poly asset (the snow clumps) baking them down onto a low poly asset with normal maps, and creating LODs for the snow clumps. Then a huge part is bringing it all into the Unreal Engine and talking a bit about engine workflow and some Unreal Engine tips.
Using game engines is going to be part of your day to day at any studio. So getting an understanding of any engine, even if it’s not directly the same engine at the studio you want to work for, is going to help you big time to start learning how they work. That way once you get into a studio you at least have a basic understanding of the concept of “game engines.” So the Unreal Engine is usually the one I recommend to people. It’s free, generally user friendly, great for artists, and very customizable.
As for describing some of the workflow I have written up a PDF with a general overview of how I created this scene. Sharing some simple techniques and talking about the start of the project to the current stage that it’s at now. Some of the tools you will need to follow along, include “Maya 2016” you can use the educational version for free if you can’t afford the full version right now. Substance Designer 5 is the one I am using in the tutorial, so I would suggest it’s best to use the same. xNormal, which is a great tool for baking from High to Low Poly assets, this one is free. And of course “Unreal Engine 4” to build the scene in, this one is definitely free. So I hope you enjoy this simple breakdown!
You’re using a very interesting technique, where you blend some sculpted elements of the ground texture and Substance Snow. Could you talk a bit about the production of these two elements? Why did you decide to use two different approaches here? Why not model everything is Designer?
There are a few different reasons for the varying techniques used to create the ground here in the scene. As you mentioned the “Forest Ground” texture is mostly sculpted inside of Zbrush as well as textured in Zbrush. While the snow and the ice in the scene is created using Substance Designer. The reason for this, is that the branches, stones, and leaves sculpted inside of Zbrush for the forest ground will eventually be turned into 3d mesh piles that I will use to populate the ground with in the scene. To help add more detail and character to the scene. While textures do a lot for the scene of course, something that a character can actually walk around and see perspective of and walk over such as 3d modeled branches or rocks will make the world feel more alive. If these 3d mesh piles happen to be the same sculpted pieces used in the texture on the ground, the same rocks and branches, then this merges the two elements of the ground texture and the 3d world even more and helps the world to flow better and feel more connected. It also saves time, because now I can simple sculpt/texture these meshes once, use them in my ground texture and then optimize them/UV them/bake them down into game resolution models and I now have branches/rocks that I can use for piles or even branches and leaves coming off of trees for even more textures. So I am killing two birds with one stone haha.
The Forest Ground Texture could absolutely be created in Substance, but then additional work would have to be down later to create the low poly 3d mesh files and their style would be slightly different from the ones in the substance texture. This would disconnect the two elements more and take more time/resources. So in certain situations like this I still opt to use Zbrush when it is more beneficial in the long wrong.
As for using Substance for the snow. That’s a no brainer. It’s super quick and easy to make some snow in Substance by just combining a few nodes. Then you can start to layer the details with some “snow flake” detail maps and blending two different snow variations inside of the Unreal Engine with Landscape painting. This will help to reduce visible tiling on the ground when you start to blend more textures together in Engine and then we finish it off with the 3d models on top, some ice here and there, breaking it up with trees, foliage, rock/branch piles underneath trees, and the scene really starts to come together!
What are some of the shaders you’ve created for this scene? How do you operate these shaders and use them to achieve a better visual effect?
So the entire scene really only has about 3 shaders in total, if you count the landscape material as one shader of course, but the ground itself has about 4 shaders just inside of it haha. So let’s break it down to all of the different surface types and then I will run through them and how they interact with each other or are setup in the scene.
Snow Shader (rough snow and smooth snow)
Forest Ground Shader (Dense forest ground with more rocks/leaves and less dense version of the forest ground showing more dirt and emptiness)
Foliage Shader (Tree Leaves and Grass Variations)
Tiling Tree Bark Spline Mesh Shader
Snow Clumps on surface of ground
So there is a simple breakdown of the different shaders in the scene and using these base shaders I have created different “Instanced” shaders to either swap textures out of or adjust settings within the shader to achieve a different result. I’ll share some examples of this.
Here is the Landscape Material. It’s pretty intense. But it will be even crazier by the end.
So it basically contains 5 “shaders” inside of the one landscape shader. Then all of the layers are blended together using the height maps of each of the respective textures. I just call each of the shaders “Layer 1” then “Layer 2” and so on until layer 5. I chose to keep all of the shaders inside of this one master material, because eventually I will release the finished environment. Each material can be split off into “Material Functions” which allow you to create an entire shader as a material function and then simple bring in 1 “material function node” into a new shader and call upon any of the textures or features from that material function node you created. It’s actually a really awesome feature, but it can become confusing and complicated for those that don’t know about it or understand it. So sometimes when I release environments to the public, even though this looks crazier, I feel like people can understand it better and it’s easier for them to make simple changes to it. That’s just some insider information for those of you curious about more Unreal features and as to why my landscape material looks so massive
Here are a couple of examples for some of the “Instance Parameters” that I have exposed in my material. These allow me to create material instances as I mentioned which help me to quickly make changes or adjustments to my shaders. It also removes the need to rebuild your shaders after every time you save the shader. Because if you try to create a landscape material and make small changes, then save and see the changes, you will waste hours rebuilding your shaders and waiting for the updates. These “Instance Parameters” allow changes to be seen immediately and generally your shaders never have to be rebuilt when make changes to your Material instance.
Снимок экрана 2016-08-26 в 15.45.55
So this is the Landscape Material as I mentioned and I generally try to expose as many features/options as possible without making the shader completely destroy your performance. Static float values and vector values are ever so slightly cheaper for performance and so try to use static values when you can. Here we can see that I allow the user to adjust the texture tiling, the tessellation scale, blend contrast of the blend mask. The blend contrast value adjusts how sharp or soft the blend is between the different layers. And maybe you can imagine what some of the other values mean based off of their names, but hopefully this give you a better insight to my workflow and trying to ensure customizability and flexibility while you’re working. Because being able to change things really quickly and on the fly is always helpful for both art production as well as game production.
We’re incredibly interested in the production of the snow material itself, because it looks very realistic. Could you talk a tiny bit about the production of this element? how did UE4 and Substance work together on snow? Did you have to do a lot of additional tweaking?
There wasn’t actually a ton of tweaking to make this work the way that I had wanted it to. The basics of the shader are all right there in the engine. It uses “Subsurface Scattering” to give the snow highlights around the edges where light would show through the thinner areas of the geometry. It also has a tessellation applied to the material to allow the landscape to conform better to the mounds, valleys, and chunks in the snow. Then I am layering a “snow flake” detail normal map on top to give the snow a secondary level of detail that I can tile across the snow infinitely for super fine close up shots. There is also another layer of “snow speckles” on top of the snow to give the tiny glints and glimmers off the snow as if it has tiny reflections off of each little snowflake on the ground. This is pretty common from what I have seen in game productions at all of the companies I have been at. Layering some type of tiling snow speckle on top for the roughness/specular of the snow. This combined with the subsurface effect are really what are pushing the realism, while everything else just adds subtle hints of realism on top. Lastly the snow also has a “blend mask” that I created that allows the snow to blend better with the forest ground and ice layers. All of these maps were created inside of Substance and simply imported into the Unreal Engine. They didn’t require any additional tweaks to themselves, only with some of the shader settings that I had setup for each of them. As I mentioned in the previous section. But let me talk about blend maps here for a second, because I think they are actually extremely helpful in making your landscapes look more realistic.
Normally in the Unreal Engine everything just simple blends into each other with a gradient. When you use a “Blend Mask” you can specify a bit better how quickly parts of the shader blend into the layer below it. If you have rocks, you can make those a brighter white in your shader so that they are the last thing to blend out. It will help the rocks to feel like they are sitting on top of the ice, snow, grass, or whatever layer they are above. This applies for everything of course. If you want grass to blend better, then you can make the blades of grass a bit whiter in the blend mask and the dirt underneath to be a bit darker so that the grass is the last thing to fade out as you vertex paint your landscape. As you can see, generally the things that are “higher” in your texture are the last things you want to fade out, so the easiest blend mask you can use is simply to plug in your textures height map into the “height-blend” option of your Unreal Landscape Material. Then starting from your height map as the base for your blend map, you can always tweak it so things blend however you want them.
As a rule of thumb I always recommend to NEVER use black in your blend masks, because it can sometimes cause the layer to fade out before the layer underneath has been painted on properly and so your landscape is left with completely black spots where no shader exists at all. Your top layer has already blended out and the bottom layer hasn’t even blended in yet without enough painting information from your landscape. Perhaps if you haven’t used the landscape tools in Unreal that concept might seem a bit abstract, but just go ahead and paint black into all of your Blend Masks and I think you’ll start to see what I mean hahaha. There are ways around this, such as setting a “base texture” for your landscape wherever there is no painting information on the landscape, but all of these things add instructions to your landscape material, which increase performance cost, and so it’s better to just paint your blend masks in a smart way that makes it so you don’t require “fixes” like this to begin with.
Don’t forget about optimization while you’re doing all this! Even though we want things to look good, optimization still always lingers in the background lol
There is an example of what my heightmap/blend mask looks like for the “rough snow” material on the ground.
Could you discuss how you are going to develop this scene further? Will we see more tutorials connected with it?
Hopefully, as I mentioned I planned to release the finished version for everyone and try to get it up on the Unreal Marketplace so that everyone can play with it and check it out. Currently, my plans are to add a lot more options for foliage, ground textures, tree types, some rocks, as well as maybe some snow FX into the scene. Some human elements would be nice also, like wooden fences, maybe a log cabin? A little fire pit. Then if time permits it would be great to create a summer time version with features that would allow the user to slowly add and layer snow on top of the ground/assets until it becomes a dying winter version of the scene.
I think that would be a really fun challenge and also a great feature for people who want a complimentary environment for both winter and summer time versions.
As for additional tutorials to go along with the scene. That’s something I am always considering and looking for feedback from people as to what they want to learn. I will definitely be making more tutorials, most likely some related to this scene, as well as other independent ones. It’s fun to share my process with people to help expand the knowledge of the community and I often hear back as well new ways to do things from my own techniques, or ideas that people end up having after seeing something I did. The knowledge always comes back around. I think Elon Musk is awesome how he makes all of his technologies and data publicly available so that we can all advance together and in turn it helps him as well. I’m not comparing myself to Elon Musk haha, but I just like the idea of sharing is all I’m saying. So I hope you all enjoyed this and will go out and share the knowledge with others! I’m sure I will be learning something from all of you at some point too.