James Thirlwell talked about his approach to modeling, texturing, and rendering a realistic vehicle 1968 Ford Mustang Fastback.
My name is James Thirlwell, I’m a junior vehicle artist working at Cloud Imperium Games (CIG) on Star Citizen; I worked with a team on the Anvil Carrack and the 890 Jump. I studied games art at Staffordshire University, graduated in 2019, and started working at CIG straight away.
1968 Ford Mustang Fastback: Goals
I got inspired to start this project after seeing Andreas Ezelius’ version of the same car. I love the look of the car and decided that I wanted to do this project to further increase my high poly modeling skills, as car bodywork can be difficult to take on and achieve accurate shading on the surfaces. I’d mainly focused on FPS weapons throughout university and thought this would be a new challenge. I also wanted to learn production rendering techniques using Corona renderer as I’d only really done real-time presenting inside of a game engine or Marmoset.
When I started the project, I knew I needed good reference images that lined up well; this would make the whole process easier and save a lot of headache further down the line. Below is an image of my reference set up, in the initial stages of the project. I also used a mixture of Pure Ref and google to get more reference for some of the finer details, such as the grill under the bonnet, the details on the boot, headlights, mirrors, and wheels. The more reference you have at the start, the smoother the project will go.
I wanted to break down the car into parts to make shading easier. For example, you won’t have to deal with the edge flow coming from the headlight cut-outs, all the way back to the doors, etc. The fewer edges you have the easier it is to get accurate and smooth shading, and the more you can break it up the better. I went down the logical and realistic route and broke it up into its real-life manufactured elements. I started by creating the bonnet, this was a pretty simple starting point and helped me build other elements around it.
For the main elements of the bodywork, I used sub D modeling, inserting support loops and using a turbosmooth modifier to create nice soft edges. For some of the elements that were boxier, more manufactured shapes I used a chamfer modifier to create my support loops,. The downside to this, for use on the bodywork, is that you are limited to one consistent chamfer size (which defines the softness of the edge) and on the bodywork you may have an edge that gets progressively softer as it moves with the car or a really sharp edge on a cut-out for a vent, and then a softer design element on the same piece of bodywork.
For the mustang badge, I used the built-in sculpting tools inside of 3ds Max. They’re not going to get you the best results, but for this small detail that’s used a few times on the car, it did the job. Combined with a turbo smooth and a chrome material it worked great.
Using the array tool for the wheels is an efficient way of modeling, you can create one modular element, use the tool to instance it, rotate around the central pivot point, then work on one section and the rest follows.
The regularise plugin saves a bunch of time when cutting in circular details in the smoothed mesh, you just select the closed off edge loop you want to work with. Usually, 8 edges work well for me, you don’t want to add in too many segments, as this means more edge flow you have to keep clean and with a turbo smooth there is no need for more. The tool creates a perfect circle, and having this on a hotkey is useful for any hard surface modeling task.
This model is high poly, so there was no retopology needed, as I wanted rendered images rather than real-time footage. Everything still has its active turbosmooth modifier applied. The retopology process would be simple and it might be something I will do in the future if I want to get it into Unreal Engine. I would simply copy all the objects and delete the turbosmooth modifier, – this is going to get you most of the way for a lot of elements. However, there will be some areas that you’ll need to further work on, especially the 8 segments circles I mentioned earlier. So you would want to go and add more segments to retain the curvature. For some parts of the body, you might want to lower the iterations of the turbosmooth modifier to 1 and then manually remove the unused edges, which is more time consuming but would yield better results. A mixture of both is the best way, prioritizing the main elements depending on the desired use of the model.
None of the elements in this model is uniquely unwrapped, a lot of the details in the material are created using the 2nd UV channel with a UVW map modifier. I will look at it in more detail below.
I set up all the materials in 3ds Max, using one multi/sub-object material. I then used a mixture of Corona materials and materials that I created manually such as the tire material. Corona renderer comes with a whole library of pre-set materials which were great for this project.
This is a Corona Layered material, it uses generic grunge maps and gradient masks to get the details on the material. I started by creating the initial base of the tire, this is a Corona material with a dark base colour, and then some black and white grunge maps to add in roughness and height variation.
Tire Base Material:
The sidewall of the tire requires a black and white map for the text height detail, the Radial T/A BFGoodrich was simple as it’s an old tire, compared to some of the modern tires. It consisted of a couple of words for branding, so I created mine in Photoshop. For the white paint on the text, I used the same texture map, copied the tire base material, changed the colour to white, then tweaked the roughness values, and used a second layer in the master material to add it on top. Similar to the base material, we use grunge maps to achieve roughness and height variation. The sidewall in general is slightly less rough as it’s going to be cleaned more often and has no contact with the ground. I then used a gradient ramp as a mask to blend between the sidewall and the base material.
The licence plate material was created using a black and white mask that I created in Photoshop, similar to the tire material. I didn’t add much roughness breakup or micro details. I didn’t plan on taking any close-ups of the plate, so I just wanted a quick material sufficient for the planned shots.
Main Master Material
As I briefly discussed above, all the materials are brought in from the Corona material library. The main material was made up of pre-set Corona materials which were a really good time saver. I did tweak some values to give some extra detailing. You can see it’s not too complex, there are two different car paint materials that allowed me to get some break-up, the darker one also has a higher roughness value to give some extra break-up. I also tweaked the chrome material to tone down the roughness variation as originally it was too intense and gave a hammered metal look. I think being subtle with roughness and height variation is better.
Setting Up Renders
For the final renders, I used Corona renderer. Using a backdrop and an environment dome creates a quick and effective way to present your vehicles. The scene setup is simple, it’s just a plane, with a texture on it as you can see below.
I’m using a Corona Shadow Catcher Material with a Corona Bitmap plugged into the backplate, the Corona bitmap is your selected HDRI. The settings of the bitmap are what makes this work so well. You need to make sure ‘Environment mode’ is set to Dome. At the bottom you can see the ‘Dome mode’ settings, here is where you’ll need to tweak the radius and the height of the texture. You can use these settings to make your asset fit the scale of the environment, which is really important when rendering cars. You can use real-world objects in the image as a base. A good start is what I have below, with the ‘Radius’ being 2000 and the ‘Camera height’ being 80. There will always be some level of distortion in the texture with the transition from the floor to the dome, the trick is to adjust the two Dome mode settings to limit this and then play with your renders so it’s not as visible. You can also rotate the dome, in the settings so you can use this to your advantage to hide the distortion. You can also use this to place your asset better in the scene rather than moving the object itself.
Here are the settings for the shadow catcher material:
‘Projection mode’ is set to Environment projection onto geometry. Alpha mode is always solid, and then you apply that shadow catcher material to the floor plane in your environment. Once the material is set up, go into the render settings > scene > scene environment, set this to single map, and plug in the corona bitmap we set up earlier. This will allow the lighting to come from your HDRI.
I got a lot of the HDRIs that I tested from HDRI Haven – there is a massive collection of completely free HDRIs you can use in your scene.
For the post-production side of the project, I used Photoshop. As a base I used the camera raw filter, this allows you to change a wide range of settings all on a separate layer. You can use multiple layers of this filter with different settings and then adjust the opacity of the layers to get your preferred result. I mainly changed the brightness/contrast, the temperature and tint settings, and added subtle noise and vignette. It’s good to be subtle with these settings.
Challenges and Plans
The most challenging aspect of this project for me was the modeling stage, I’ve got a lot of experience in 3D modeling primarily with weapons, but it is quite different to cars even though the basic tools and principles are the same. So for me, the biggest challenge was getting accurate curvature of the bodywork as well as finding good reference to help me with this. There were a few elements that I had to redo multiple times until I was happy with the result, for example, the arch above the wheel where it merges into the boot, this was quite a challenging area to get right for me. And to achieve good shading with all the support loops made it more complicated.
I also learnt a lot about creating the materials and rendering setup in Corona renderer, I’ve never really used the material editor inside of Max to this extent. It allowed me to push it to the point where I could achieve a high level of detail with roughness and metallic, like in Substance Painter. However, it’s not as easy as in SP because it’s not real-time.
Next time I take on a vehicle project, I want to create the interior. I think I’ll be able to tackle the exterior a lot quicker which will leave me with more time to create the interior. I also plan to take on a more challenging car. I chose this Mustang not only because I love the car, but because older cars have less complicated curvature and shapes which was good for my first car project. But next time, I’ll take on a more challenging modern sports car.