November 02, 2022
Created and written by Celine Soubrane. Edited by Leif Pedersen.
This project, carried out during my third year at ESMA School, consisted of designing a vehicle, then modeling it, shading it and displaying it in a showroom.
I wanted to create a science fiction vehicle that could move with articulated limbs and work on the details by making the engine visible. I also wanted it to feel like it had been under heavy use as well as modified over the years.
Imagining its story allowed me to determine its accessories according to its needs. During expeditions, the tanker allows it to be more autonomous and its legs allow it to cover all types of ground. At the back, the trailer allows storage of objects.
I started the modeling by laying out simple shapes to check the proportions and adapt its silhouette in 3D. I then modeled the most important parts to finish with the details of the engine and the legs.
I really enjoyed imagining each part of the engine and varying the details. I didn’t want to mirror the central engine model, instead each side is different for added realism. Also, to continue the theme of a patched up vehicle and to avoid smooth corners, the plates of the bodywork are a bit distorted.
In my opinion, the details really add plausibility to the objects. For example, the bolts aren’t very noticeable at first, but we would miss them if they weren't there because they create variation and volume.
Asymmetry is also important to make an object feel realistic. For example, the cables have different sizes and aren’t positioned in the same way on the different legs. They also contrast with the rigid appearance of the engine.
I also think about the balance of the objects in relation to each other. The different scales between the objects create variation and give the appearance of randomness.
It’s also important to avoid making objects too thin because objects with differing weights are affected by gravity in different ways. A lack of thickness can make them feel flat and unrealistic.
To facilitate the modeling of the details on the central engine, I first modeled the different parts flat and then I used the bend tool which allowed me to deform and round the shapes to fit the engine shape.
UVs are an important part before shading. It’s better to think beforehand about the UV seams of the object to make sure we can hide them as much as possible in order to avoid bad surprises like stretched textures or changes in color and pattern.
To easily find the different parts of the object in your painting software, it’s best to arrange the UDIMs either by different materials or by geometric sections.
The largest and most visible pieces will take up the most space on the UVs because they need detail in the shading and good quality texture during distance views and during close ups. Therefore, it’s important to avoid having large UVs for small objects because it unnecessarily weighs down the Mari scene.
Since the shapes are rigid and geometric, the UVs were relatively easy to make. I used the cut tool to create the seam on the objects, then I did an Unfold 3D to spread out the UVs. The 3D layout tool allowed me to keep the same scale ratio as on the object, which is crucial for keeping consistent resolution between the shapes, and I also modified the UVs manually to have a more accurate placement.
To create the base color of the body car, I used a PxrSurface in Mari to blend imperfection masks and easily delineate some parts. Juxtaposing textures allows you to create a base, but you have to be careful not to create a uniform texture and then add details in the shading. Imagining how the vehicle ages, its environment, the weather conditions, and its use allows us to understand where and how it gets damaged. For example, dust and dirt accumulate between the plates while scratches are more present on the corners and bottom of the vehicle due to repeated rubbing.
Working procedurally in Mari can quickly lead to a long accumulation of nodes and backdrops. To avoid getting lost in the nodes, it’s possible to create a node of Group that will gather several nodes. Its use is very simple, just select the nodes you want to group and press ctrl + G. To modify the nodes, you must enter the group node (ctl + double click) and work inside of it. The Output node represents the output of the group node. It is possible to create several inputs and several outputs.
To complete the texturing in Mari, I shaded with RenderMan. As much of the Diffuse Color had already been done, I was able to focus on the details and some aspects that were easier to do in RenderMan.
In a PxrLayerSurface, I added the flaking paint effect to create variation in the texture by allowing the metal underneath to show through. In the first layer, I created the paint shader with the maps exported from Mari and the second layer is for the metal shader.
I added a PxrVary with low values to randomly change the color of the body plates and thus increase the appearance of wear and tear.
To create the roughness of the body, I used two different specular lobes: the varnished paint and the flaked paint on the edges of the plates.
I separated the two different roughness maps using the Primary Specular for the varnished paint and the Rough Specular for the unvarnished paint. I also created a black and white mask to separate the two roughness maps. I first plugged the map into the Specular Gain and then I plugged it by inverting the values with a PxrInvert into the Rough Specular Gain. To create the details in the roughness, I converted the diffuse color maps to grey, then I modified the texture values with a PxrRemap node to have a higher or lower roughness. The Rough Specular map is duller than the Primary Specular because its reflection is rougher (less shiny).
I isolated the most damaged and dirty parts of the body car with a mask to accentuate the roughness on these parts. Also, the bump details enhance the roughness by bringing out the details.
One trick I use a lot while working on the roughness is to momentarily remove the diffuse, which makes the roughness more visible over black black. This makes tweaking much easier as the roughness reacts to the lighting in isolation. Manipulating the lights also helps to better appreciate the roughness.
The irregular nature of metal and their distance from the camera in our asset, means that they’ll require less precise work than the body of the car.
To darken some parts of the metal, I used the PxrDirt node to recover the contact areas, I then darkened under the pipes to create an effect of depth and dirt.
I also added some rust on the borders with PxrPrimvar. This useful node allows us to access the curvature variable, which will give us the… errr…curvature of the object. I then added a noise pattern to add imperfections to the mask created by the curvature.
To create a physically realistic metal, I used an IOR value of 2.9, which is the refractive index of iron. To complete the metal shader, the Extinction Coefficient is essential because it serves to distribute the light on the surface of the object. Its value usually varies between 1 and 3. I’ve used a value of 3.
To slightly vary the metal and make some parts of the engine stand out, I varied the edge color of some parts with a mask.
Lighting allows us to emphasize an object and to focus the viewer's eyes on an element in the image. It also allows us to tell a story and to convey an emotion. I chose to keep the science fiction universe by creating a futuristic hangar. I wanted lighting with a cold color temperature with a dominant blue hue.
To create the lighting of this place, the difficulty was to light a large room while highlighting the vehicle, so I had to avoid unwanted light bounces on some objects. It’s possible to disable the light on a specific object via light linking. I mainly used this option to avoid light bouncing off the floor and the wall, or on the contrary, to accentuate a light on the floor that illuminates the background without illuminating the vehicle.
I used the parameters Cone Angle and Cone Softness (in the Refine menu of the light) to center the direction of the light and create a light gradient.
After positioning the key light, which is the main light source of the object, I created a fill light to lessen the contrast in the opposite direction and highlight the shading. The back light is important to accentuate the silhouette of the object and separate it from the background.
Since our vehicle is made of metal, it really benefits from the use of an environment light to create variations in the reflections. I used a PxrDomeLight with an HDRI map to achieve this.
Normalizing lights can really help manage the intensity of the light as you get creative with your lighting, this way they won’t change intensity when scaled.
Lighting can really help us accentuate the shading. In the light settings, it’s possible to choose a light to illuminate only the specular of the vehicle to create highlights. In the menu Refine of the light, you must set the parameter Diffuse Amount to 0 for the light to illuminate only the specular of the object.
After finishing the shading and the lighting, the vehicle is finally ready to be rendered. The goal is to balance image quality and rendering time. To do this, it's necessary to tweak sampling settings according to your available hardware resources. It is essential to test different sampling settings on a frame to find the most optimal sampling between the min sample, the max sample and the pixel variance.
To avoid having unnecessarily high sampling, it's important to try to denoise the images. The denoise doesn’t replace a good sampling but it can allow a shorter rendering by removing the noise remaining on the image without damaging its visual quality.
It’s also possible to decrease or increase the quality of a specific object in relation to the pixel variance global with the Relative Pixel Variance. Its base value is 1. If you lower it, the object will have a better rendering quality. This setting can be effective for glass or subsurface scattering which is more expensive to sample. On the flip side, if you increase Relative Pixel Variance, you can decrease sampling on specific objects. This could be useful for objects in the background which are blurry due to DOF or motion blur.
If there is movement in the scene, activating the Motion Blur will add a natural blur to the movements and therefore achieve a more realistic rendering.
To create the AOVs and LPEs, you have to think about the changes you are going to make to the image during compositing. For example, if you want to modify the lighting, it’s possible to render only the lighting on a separate layer by creating Light Groups.
First, you have to create a name for the Light Groups in your light and add them in the LPEs by creating a separate beauty pass. You can even use these resulting LPEs to modify the lighting with color correctors instead of rebuilding it from scratch in post.
For this project, the compositing was done in Nuke. I simply added some effects to get a more realistic image and highlighted some objects and textures.
To create a realistic photographic effect, depth of field is necessary. It’s also a creative tool to get the viewer to focus on the central element of the image.
The groups allowed me to slightly modify the lighting by reinforcing the cold atmosphere of the hangar.
The addition of chromatic aberrations and grain enhances the look of realistic photography.
After a few adjustments, here is the result!
This asset is available with a Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) License. This allows you to share and redistribute for non-commercial purposes, as long as you credit the original author.