When it comes to props; for simplicity sake I am just going to refer to everything as a Prop or Environment. I go over the process and establish my thoughts on it. For the most part props lay the foundation in the environment and are static and are typically not used for anything other than filler content.
This Section goes over how I approach Prop Creation.
Tl:dr version:
Build Hi-Poly Mesh in 3d app / Build Lo-Poly / Lay out UV’s on Lo-Poly / Bake Normal map and utility maps / Paint textures / Light and Render in Marmoset Toolbag / Light and Render in Game Engine / Feedback Loop
Steps I take:
- Create Hi-Poly Model: Maya LT
-Feedback Loop - Retopologize to Low-Poly Model: 3DCoat
-Feedback Loop - UV Layout and Bake Texture Maps: Maya LT, Knald.
-Feedback Loop - Texture Authoring
-Feedback Loop - Rendering in Real-Time Engine
- Presentation
Software used here is: MayaLT, Photoshop CS4, Knald, 3DCoat, Marmoset Toolbag, and Unreal Engine 4.
Specific Notations:
The way this prop was built was a kit bash style where individual elements are modeled and bashed together to create the overall piece. This prop is a unique bake; with a unique bake there is not much re-usability to texture maps unless they are made into a specific trim sheet. Generally these are used as Hero(important piece/not re-used) or filler piece(re-used). When many props are put together then you have an environment.
Step 1: Create the Hi-Poly
This is a straight forward part of the process. You have your concept art/reference images/inspiration images. Strongly suggest looking into Pinterest.
Model the Hi-Poly model for the purpose of baking to the Lo-Poly which contains the normal map which contains all the lighting information. The importance for prop creation is thinking about many things the player is going to see such as: Silhouette/Proportions/Primary shapes.
I go through a feedback loop here because it is important to have a second eye on the model to make sure your communicating all the Front Detail, Beveling, and Silhouette to the player.
Step 2: Hi-Poly is complete; create the Lo-Poly.
Creating the Lo-Poly is important because the engine cannot render off objects with a heavy poly count; this is always changing however. There are a few ways to make it; I have decided to do retopologization in 3D Coat with additional adjustments in Maya LT. This approach is typically applied to characters but can be used for Hard Surface for the Lo-Poly.
The key things about the Lo-Poly is that the UV layout is Important. For the Lo-Poly to work you need to have a clean UV layout in order to bake the normal map. Smoothing groups are also important in order to avoid errors that occur when baking the normal map.
Step 3: UV Layout & Baking Texture maps.
The example here is the image on left without baked normals. The example on the Right has baked normals applied to the lo-poly.
A good UV layout is paramount for texturing. UV’s should be scaled and laid out to take advantage of the most texture space in the 0-1 space. Also you would mirror UV’s for pieces that are unique in the bake process.
Baking is important because you are transferring the lighting information from the Hi-Poly and projecting it onto the Lo-Poly. This is also a fundamental step because you build the textures from scratch using the normal map.
I used Knald for this; as this program can generate a cage for you. Textures can be baked at a high resolution which can be good if you need to view the model up close.
Then there are utility maps such as Ambient Occlusion/Curvature maps which contain cavity and convex information. There are also Material Id’s these are important as you base your whole base texture off of these.
Step 4: Texture creation
There are two prominent workflows.
Spec/Gloss and Metal/Roughness. These both work under physically based rendering.
Diffuse/Specular/Gloss – Fall under Spec/Gloss
Albedo/Metal/Roughness – Fall under Metal/Rough
For this step I create the textures in Photoshop CS4. The workflow I have chose is Metal/Rough. I start with flat colors from the material ID map I created then use a photo as a base texture to lay the foundation for maps needed. After that I start working in edge wearing with a curvature map using convexity.
Next, I work on the Metalness map by masking out areas that are metal. Anything that is not Metal in the Metalness map just becomes black. Then I move onto the roughness map by turning parts of the Albedo map into greyscale and adjusting values from 20% grey to 80% grey. At this point I should have a base foundation for how materials look.
The next step is the composition of the texture map itself. I then start to work big to small by working with big textures and then masking out areas so things are not so uniform across the texture.
After this step I start to work in details such as scratches/dirt and possibly add in a detail map so the model can be viewed up close.
I take time to and get feedback on feedback loop. Once the feedback loop for this is good.
I reduce the resolution of the texture to an acceptable level and use those textures for rendering in a real-time engine.
SideNote: Spec/Gloss, for those that want to use spec/gloss the idea here is that the gloss map is an inverted version of roughness map. The spec map is similar to the metalness map in that this map contains the color of anything that is bare metal. Anything not metal becomes 4% reflectivity(dielectric). Also you want to adjust the diffuse map. In the diffuse map anything that is metal is painted black.(value 0)
Rendering in Real-Time Engines.
To render the prop in real-time, I use Marmoset Toolbag. I put together a 3 point light rig as the base. Then I add in highlight lights and additional bounce lighting to fill in the shadows created by the direct light.
After I finish up Toolbag it is on to a game engine for more renders.
Presentation
Once all the renders are finished up. I take the high resolution renders and compress those down and place those on website.
Post Notations: Obviously there are huge differences between this and production. Also there may be adjustments to how I do things depending on stability of software.
Problems: There are always problems you will run into when doing this.
Normal map incorrectly baking: Need to make sure smoothing groups and UV layout is solid. Cage needs to cover Hipoly but not be so huge so it will to project correctly
Mesh looks lumpy: Need to refile low poly mesh and build with square polygons.
Black areas in AO map: overlapping UV’s