Antoine Gérin talked about creating a working engine prop, discussed the workflow, and shared some advice about Blender and Substance tools.
In case you missed it
You may find these articles interesting
Hello everyone! My name is Antoine Gérin, I'm 22 years old and I'm currently a 2nd-year student at Howest Digital Arts and Entertainment in Belgium. I previously graduated with a Bachelor in Digital Project Management in Paris where I learned the basics of 3D modeling and texturing.
The last years of this bachelor were more focused on team management for the 3D pipeline and at this point, I knew that I wanted to focus on a production role, which leads me to continue my studies at DAE.
I strengthened my foundations with the Game Graphics Production curriculum which was focused on the creation of assets and environment for AAA video games.
Barkas EL150 project
I started to gather some references for an upcoming environment and assets that would fill up that scene. As I was talking with a good friend of mine, he brought up some very nice 3D scan references of an engine that would perfectly fit in the environment. Since the scan wasn’t for sale and had few low-quality areas, that would have been a bit difficult to clean up, I decided to start from scratch with the approval of the owner to use it as my reference. I still had some time to polish the asset before starting the environment, so I pushed the texturing a little further.
For the references, I was able to find some old documentation with the blueprint of the model that would surely come in handy during the blockout phase. I found pictures from private sellers and auction websites, which allowed me to have closer shots on separated pieces. I also looked for references of the model at different levels of weathering and deterioration.
After gathering my references, it was time to start with the Blockout in Blender.
I set up my blueprint references to make sure that the asset would match its real-life counterpart.
Since the actual engine was way smaller than what I had in mind, I decided to scale up the model.
Once I was satisfied with the blockout, I started the highpoly of the main pieces. I assessed the complexity of the different pieces that made up my object. If the element was too time-consuming to model in SubD, I would then use the ProBoolean method to speed things up.
In ZBrush, some parts of my mesh were a bit too lowpoly and showed some faceting. To avoid that, I started to crease my edges, I then subdivided my mesh a couple of times and deleted the lower subdivision.
I used the DynaMesh at a quite high resolution and left the Dynamesh Close Holes default value of 4. The holes were capped, so I then went into the Split panel tool, Group split, and deleted the unwanted capped holes sub tool.
I then applied a Polish (located in Tool > Deformation sub palette) to smooth the edges (you can check this small circle on the right if you want a more aggressive smoothing). I generally stay at a value between 15-30, it depends on what you’re trying to achieve so be careful with this, you can easily end up with a stylized look.
With this process, I ended up with a very high polycount, so before I sent this back to Blender, I decimated my mesh. It will considerably reduce your polycount while keeping most of the details.
I followed the same process when I added details such as welds or edge damage. I would then break the regular shape with a ClayBuildup, gave it a light smooth, and I then used some weld brushes from McGavish.
For the wood on top, I wanted to try Meshroom (photogrammetry software). After feeding the software with a couple of pictures I took, it generated a small base mesh that I could clean up in Blender. I made the missing sides with mirror modifiers, filled the gaps with ZBrush’s Dynamesh, smoothed and sharpened some areas that were a bit blurry. I went for a very quick retopology with a subdivided cube and a Shrinkwrap modifier in Blender.
I decided to only model one strap and duplicate it to save some UV space. I used a spline and a curve modifier to drive the deformation. This way I could quickly align the holes of the belt with the buckle. This process was easily applied to the lowpoly version of the belt. Baking it separately from the gas tank would avoid any unwanted information on the Ambient Occlusion map since both straps would share the same UV islands.
Retopology and UVs
Once I was done with the meshes from ZBrush, I gathered everything into Blender and move onto the lowpoly. Some pieces would need retopology and to save some time, I tried to re-use the elements that I made before the ZBrush pass.
For certain areas with welds, I would just add a plane on the top, subdivide it and use a Shrinkwrap modifier with the highpoly as a target. I then cleaned it up by removing unnecessary edges and polygons.
Since it was going to be a portfolio piece, I went for a higher texel density than what you would expect in a studio. I regrouped the UVs into 3 texture sets.
For my UVs, I mainly used ZenUV to quickly mark seams and hard edges in one selection.
Finally, to set my smoothing groups per UV islands, I used the clear custom normal option.
When I finished unwrapping an element, I just averaged the UV island before moving to another one. In the end, I packed everything with UVPackmaster 2.0 addon and shifted the UV islands from mirrored mesh to avoid any baking issues.
Base materials preparation
Instead of making my own procedural wood in Substance Designer, I decided to use photo sourcing. For that, I quickly jumped into Substance Alchemist to make my wood base material for the pieces on top of the gas tank. In Alchemist, I simply dropped some wood pictures that I grabbed in textures.com and used the AI-powered Image to Material. This will output an Albedo/Roughness and Normal based on your picture. Since I was about to set the wood in triplanar inside Substance Painter, I needed to hide the seams. Therefore, I applied a Make it Tile Advanced filter and tweaked the settings for the seams. The issue was that the Normal and Height information were a bit too intense, so I reduced them with the Adjustment filter.
For the rust, I used some texture from Quixel, set them up to tri-planar, and with an HSL filter, I adjusted the color saturation and lightness.
Meanwhile, I also set up a marmoset scene with lights and a camera. It’s very important to check the final look of the textures since there will be a difference with the Substance Painter’s viewport.
For the texturing process, I set up my base materials and started from macro to micro details. References are going to be very important to bring some storytelling in your texturing so try to implement the details that I previously picked in my references. You can also ask yourself, how was the object used throughout its lifetime. I tried not to use too many generators as you can easily get a procedural look so I pushed myself to hand paint as much detail as I could. For that, I used some alphas from Ayi Sanchez and also some stencils made from picture references that I tweaked in Photoshop.
One of the most dominant materials was the grey iron. This one was a bit challenging since it’s a noisy material that isn’t easily readable. I made a base material with a few color and roughness variations and then added step-by-step located details. For that, I relied a lot on anchor points.
Following the same process, I began with some large color variations and moved onto details. Since this part is in contact with straps and the wood pieces, I was able to hint at the relation with some old marks, dust, and wiped dust.
I spent a lot of time on my references for this one as I wasn’t sure of the base color at the beginning. In the end, a black tone would have brought some nice color variation next to the grey iron. Moreover, I was able to get some roughness variation along with the whole mesh by adding some oil leaks.
With the final version of the engine, I thought that it would be nice to make a small animation and bring it to life. Since I don’t have that much experience with rigging and animation, I decided to keep it simple.
The rig consists of one bone that drives most of the model, apart from the rotating belt support and the belts attached to the gas tank. Both were linked to the root bone to follow the main movement. I started with the animation that would drive most of the engine. With the auto-key, I rotated the root bone from left to right a few times, then I simply duplicated them.
For the hanging belts on the gas tank, I used a free add-on called Wiggle Bones. With the rigged belts, I set up the stiffness and dampening for each bone that I wanted to animate. When playing the animation, the belt gets the movement of the whole engine and would react to it. I tweaked these settings till I was satisfied and then baked the animation.
I also wanted to add some sound and found something that would match the engine on the British Broadcasting Corporation Sound Effects library. With Audacity, I quickly edited the effect and made it loop.
Rendering in Marmoset Toolbag 4
Finally, I got back into Marmoset Toolbag 4 for my renders. Since my materials were already set up, I just needed to add cameras and find some nice angles. When doing so, I tried to keep a low FOV (around 20-25) and limit my number of shots. I switched the Tone Mapping ACES and increased the exposure around 1.5 – 2.
For my light setup, I went for a neutral lit environment such as Tomoco Studio which I also used in Substance Painter. I set my HDRI around 0.3 – 0.5 to have a rough base then I set up 3-point lighting with 3 directional lights and finally I added a few rim lights.
For this project, I used an Infinite background, so I made a separate render.
In Photoshop, for the background, I tweaked the brightness and contrast. I then applied a noise (2-3 is enough) to get rid of the “aliased rings of light” (the difference is subtle).
For the engine, I added a Sharpen filter, tweaked the exposure a bit, and used a Vibrance filter for the saturation to make the colors pop out more.
If I can advise one thing, always ask for feedback throughout your whole project. Whether it’s during the blockout / modeling / texturing and rendering phase. A fresh look at your work could help you notice flaws that you might have missed and can help you save some time and effort.
Thanks to 80 Level and to Arti Sergeev for this opportunity and huge thanks to Neil Houari, Clément Moreau, and Mathis Obeid for their feedback. Thank you for reading this far, if you have any questions, feel free to contact me on ArtStation.
You may find these articles interesting