About the project/References
This was a very interesting project since it taught me a lot. Two years ago I was assigned a concept to work on my modeling and texture skills by my teacher. I quickly finished the modeling and texturing of the asset but I wasn’t satisfied with the results. Two years later after working in the games field I wanted to move to CG and VFX and thought this particular asset would be a nice one to test various aspects of the field on. My main goals for the project were to focus on texturing, understand Look development, Xgen grooming and learning some Nuke along the way. And it paid off with lots of experiences!
Anton Lavrushkin’s concept:
Modeling, UV and Baking
I use Maya for my modelling tasks. As I said, this Asset was modelled two years ago using the gaming pipeline. After creating a quick block, I moved to work on the mid Poly of the asset. This should act as the base from which I can move towards both the low Poly and the high poly. I first completed the high poly by using the supporting edge loop method. I used a fairly glossy material to test the shine and solve any kind of pinches that could occur whilst working on it.
After the high poly was done, I moved towards the low poly stage of the asset. In games, the low poly is the final model onto which the high poly details are baked upon using the normal map baking method. I used the mid poly and removed all the unnecessary edges that were not contributing to the shape and contour and tried to minimise the polys as much as i could.
Once I was happy with the low Poly I unwrapped the model into a single 4K UV sheet. I put a seam wherever there is a 90° cut and a seam Where I want the edge to be hard. Unfold 3D is an amazing tool Maya offers to make UVs so much easier, just select the uv island and hit unfold that’s it. I then layed out my uvs keeping in mind the texel density should be equal throughout the asset. Here’s how the UV’s look like.
Since Maya works on the edge workflow for baking, I assigned a hard edge to the UV borders and softened the rest of the edges. I made sure everything was correct and there was no inconsistency in the shading before moving onto the baking. I then used Xnormal To bake the normal map. I checked my bake in Substance Painter, cleaned out any kind of artifact or abnormality in my bake and was ready to texture.
These were the steps I used to model this grenade for games In the past. I had to reassign the supporting edge loops and add loops to equalise the Poly density to the low poly to maintain the SUBD workflow for my this project.
This is my favourite phase of the whole process. I always start by gathering references studying other artworks and real life references to get a feel of my asset. I try to break down the whole asset into different materials just to find references easily and to break down the texturing process. In this case the materials of the asset were steampunk brass, metal, wood And rope fabric.
I use PUREREF to keep and manage my references, it’s the best software for mood boards and similar stuff!
What is the colour, how rough the surface is, how does the surface variation look like, where can this Asset be found. I ask myself many similar questions to understand how and where to focus on details, this makes the process a lot easier When we go into further stages. In my case since I was following a concept I had to decide how I want my asset to look like. I went for a quite old and grungy look carrying dust, dirt and wear.
Substance painter is my choice of texturing software. I start by defining all the base material of the asset. It is the clean version of our textures. I always go online, look for physical values of my base materials, Or look for real references of the materials to Match the base colour, roughness and surface imperfections. I then add some colour variation(using images or tileable textures) and roughness variation to further define my material. This is the stage where we can add subtle details that will help in defining the Areas of rest. I always keep naming my layers so that it’s easier to navigate later and address feedback.
It’s also very important to work in a non-destructive way by working procedurally so we can save as much work as we can whenever there is a big feedback or a major change in a later stage.
Once I am happy with the base material, I start adding different kinds of weathering and man made details like oxidation, rust, wear, tarnish, patina, scratches, wear, chip, dirt or dust and so on! This Process can flood the whole asset with a lot of detail and it can get messy very fast, so I always try to move in the order of primary, secondary, tertiary details. This really helps in adding details that are visible from various distances with Different Intensity and opacity.
I keep pushing to achieve various areas of detail(high frequency details) and areas of rest(Low frequency detail) where our eyes can take a moment. This process requires a lot of hand painting using masks or Alphas or stencils. I keep adding and removing details from different areas to find where I can find balance.
I have made a habit of squinting my eyes regularly to check how my details are correlating with each other. Squinting naturally provides blurred vision of our viewport and enables us to find errors and interesting areas, hence balance them.
Once I am happy with what I have I go online or to my friends to get feedback. It’s extremely necessary to get feedback because there is a point where we cannot understand if we are going in the right direction or not. Feedback helps us in getting a wider view onto our work and also enables us to add details we weren’t either aware or hadn’t thought of.
This is the stage that makes us grow.
A few tips, tricks and must DOs:
⦁ I use a subtle slope blur in my workflow, it helps create natural breaks in simple masks, hand painted details and areas.
⦁ If you have sculpt or surface information in your normal map, when baking the Curvature map, Set the sampling radius to (0.0005) and secondary rays to 256. You can get very high frequency curvature that way
We can also use Quixel mixer to bake our Curvature. Its free and gives great results:
⦁ Once I finalize the normal and surface information of my asset, I export the normal map, create a new painter file with the same asset and plug this new normal map. Now when I bake my curvature map in the new painter file, I can get this detailed curvature map like above which can be used to drive very interesting masks like cavity and edge wear.
⦁ I like to use images and textures and experiment with blending modes in both diffuse and roughness until I get an interesting looking effect.
⦁ I would strongly suggest learning and start using Anchor points as soon as you can! They are a blessing and help save a lot of time.
⦁ Keep checking the values(brightness) of different parts and materials, if they do not contain enough contrast, the resulting image will be boring.
XGEN Groom for Rope
I used Xgen to create the fibers for the Rope. This was something I wanted to learn and experiment through this project and was very fun to work on. As usual, I started finding different references for the rope and finally decided I wanted to do a fibrous rope since it may help with the raw nature of the grenade.
I started with the small thin fibers that help with that fuzzy feeling of the fabrics, moved up to medium and larger fibers with different thickness and densities. Throughout the whole process I used noise, clump and scale modifiers to make the groom random along with manually adjusting the groom.
Here are different layers of the fibers.
I always try to move into my Lookdev and rendering software as early as i can to keep texturing consistent with how my final renders will look. I use Arnold as my main Render engine. At this point, I use an HDRI for basic lighting and Set up my lookdev node graphs to check all my details. After the finalisation of the Texturing pass, i try to colour grade and enhance some details in the lookdev using aiColoCorrect or aiRange nodes. I used a custom made ISO(Isolation) mask to further enhance the dust, dirt and the patina layers. This also helped reduce that white artifact we get with non metal details on metals.
Here’s the Arnold Nodegraph.
I used displacement to improve the look of the asset. It was exported from substance painter where I made sure only certain details were added in it. In the arnold tab(Attribute editor) of the objects, we can make the object subdivide at the time of render. I gave a Sub’d of 2 for all the individual pieces(except the small ones) so they can have enough polys to handle the displacement. It can really help in improving the feel of materials. For example, the wood can really benefit from the use of displacement. As you may have noticed, I had not Sculpted in this asset, to make up for it, I used displacement to add n pop some details like crevices, bolts and cracks.
Displacements are expensive and hence not used on small props like this in games, however for CG, even small details matter.
You can see the difference a displacement map can make in this gif.
For the lighting, I used a three point light setup along with an HDRI and a few more lights to emphasize on certain areas. Again, I experiment with different light angles until I get something interesting which I can explore further.
With my Lookdev and lighting now final, I rendered out all the frames with individual render passes using batch render to move on to Nuke for Compositing, Color Grading and enhancing the final renders with that crisp depth of field.
Here’s how the render passes look like:
A breakdown of Lighting and compositing:
That’s pretty much it for the process of this grenade. I have a lot to learn and improve on, but that’s the best thing about being in this industry!
I would like to thank the GamesArtist Team for giving me this opportunity to share my process with you all. I hope the article will help others understand my workflow and maybe incorporate some of it in theirs!
A few References and links:
⦁ I would Strongly suggest people go and have a look at Neil Blevins Education website. It has a lot of composition Rules that are very helpful in understanding how we can manipulate our Texture space. I marked the most useful sections I felt in the image below.
⦁ Discord is an amazing platform where lots of artists are running incredible communities to help people learn and share.
⦁ Michael Wilde’s discord is a very active and helpful community to join! https://discord.gg/XYPqkByd6R
⦁ Arvid Schneider’s discord is another very professional community for all sorts of stuff! https://discord.gg/Na6QNPkrg7