We’re going to describe a bit of our workflow, on how we get a character in the game.
Pretty much all the meshes in the game started as a very high poly mesh.
Just to give you an idea, this character has 49 million polys.
You can see the mesh in wireframe below:
Why do we do it this way?
Because with this amount of polygons we can get an amazing amount of detail, which we then bake into normal maps.
The next step is lowering the polycount of the mesh into something that can be used in realtime.
Once the mesh has a lower polycount, we create uvmaps on the lower polygon asset to project the high poly count mesh onto it, and generate normal maps, occlusion maps and cavity maps.
By doing this, all combined with real time lighting, allows us to have the same detail in a lower mesh as we would in a high polycount mesh.
This is where the classic type of character / asset ends and the modern type of asset begins (remember Doom 3).
Now when we create this super high poly mesh with all these little details, and then generate textures from it, we end up needing 3 textures so that we can make all these details visible: a normal map, an occlusion texture and a cavity texture.
You’re probably thinking that we will combine these textures into a single diffuse texture, but that’s not how physical based shading works.
The new next-gen physical based shaders work in a different way; basically you apply all these textures into the Unity 5 based shader.
Using Substance Painter and Quixel 3d, we then paint complex final textures and export them directly to the engine. The tool generates 4 textures which must then be applied to the final shader.
So in the end this character is using normal texture, occlusion texture, diffuse or color texture and a special texture which combines two textures – metalness.
We try to achieve the best realism as possible, with materials reacting like real life and accurate lighting.
You can see this character below in an ingame screenshot: