Djordy Donopawiro shared the working process behind the Toyota Starlet EP71 project, explained how Gran Turismo 7 helped make the headlights, and showed how the lighting was set up.
My name is Djordy Donopawiro, I'm 27 years old and I live in the Netherlands.
The Toyota Starlet EP71 Project
About a year ago, I started working on this model as a side project. The why is a longer story. When I was a kid, my dad always drove us around in an old 1988 Toyota Celica. A few years ago, I started looking at buying my first car and there were a lot of reliable and practical cars to choose from. However, one night, I was searching the web and I stumbled upon an old neglected 1989 Toyota Starlet, and just out of curiosity I decided to bring some friends along with me to take a look. After a few hours of driving, we ended up in the middle of nowhere and found it standing in a sea of other typical cars. When I saw that old-school styling and simplicity, it reminded me of my childhood, and I was instantly sold. My friends, on the other hand, tried to talk me out of it, but really, it was a futile attempt.
It was bad, had trouble starting, with bad brakes, and everything was dysfunctional. I continuously asked myself why I kept bothering with it. Until I got it working again, and it was the most satisfying thing ever. Since then, I’ve been steadily improving and restoring the car and for a moment, I got pretty involved with enthusiasts alike, even to the point of importing sought-after parts out of Asia. It became more than just a car.
Sometime later, I was playing Assetto Corsa and noticed the big mod community and a wide array of cool cars available to download. Sadly, I couldn’t find my own car and so that's where it started.
Doing a cross-Europe road trip
My expectations going into this project were “it's a boxy car, how hard could it be”. Well, nothing was further from the truth. I started out collecting a massive amount of reference material. Things like wheelbase, trackwidth, height, and other measurements are incredibly important to put in your scene. Then I spent some time taking photos from different distances and angles with reference points/objects to get a better idea of its size. Luckily, I had the car, which made things easier.
Finding any good quality blueprints of this car is nearly impossible, so I opted to buy a 1:24 scale model kit of a turbo variant of the car. These came with blueprints that give you a better understanding of the shape of the car. I also figured out that basing it solely on that would be a mistake. Proportions on a scale model are somewhat different and some shapes are simplified. So for close details, I used my own pictures or images from the internet. I also used all the images to create a photogrammetry mesh to use as a 3D reference in my Maya scene.
I used the traditional side, rear, and top images to model from. I started from the top and went to town. Modeling the low poly was actually quite simple since there are no complex shapes that you have to figure out. At this level, it’s really just a box.
Basic modeling setup in Maya
The low poly model is almost ready. At this point, there are a lot of placeholder cubes on the model
After I was satisfied with the low poly model, I started taking each panel and subdividing them, and that's where I ran into some issues. I found out that it has very subtle curves that contain hard edges with transitions to smooth surfaces. Placing support edges was impossible in some areas since it would destroy a clean surface, so I opted to strategically use the Crease Set tool, which gave me great results.
Using crease sets to put hard edges before subdividing
Visualizing different surfaces that need to be smooth and uninterrupted. Each border needed a hard edge, and adding support edges resulted in interrupted reflections
The first subdivided model exported into Unity
Early work in progress, going over each panel until everything looks right
Work in progress, the front side panel
Aside from using mat caps to see the shape of the mesh in Maya, I also like to occasionally import the files into Unity and check it with proper lighting
After getting the main body together, I started modeling all the miscellaneous parts on it. Mirrors, spoilers, plastic garnishes, badges, bolts, and last but not least rubber seals that are used near the windows.
While modeling, I quickly noticed that I had to prioritize each object in the order of importance. Before I knew it, the project spiraled out of control. So I ended up spending time on the parts that I thought needed the most detail in order to make the model convincing. Every object that's supposed to be on the car is present, just not at the same detail levels.
From there on, I started working on the undercarriage and suspension geometry of the car.
Once again, I made sure all the dimensions were accurate and also did some research about the workings of a suspension system.
One of the harder things to get reference material of is the underside of the car. This is where the 1:24 model came in perfectly and together with a bit of research, I could get pretty far.
Undercarriage with suspension geometry
For UV mapping, I tend to just use a handful of tools: Planar Mapping, Unfold, Optimize, Edge Cut, and Texel Density. When I started modeling, I always got confused when opening the UV window and seeing a nice mess of edges all over the place. Now what I do to alleviate that and organize is to do a quick automatic unwrap and place the entire unwrap next to the main UDIM. Then I pick each island or element in 3D and go through a process of planar mapping and unfolding until I get the least distorted result. Near hard edges, I make relief edge cuts so that the unfold can get better results. Then I make sure that most islands have the same texel density (depending on the details necessary).
Main body UV unwrap
Texturing-wise, I took a pretty simple approach. I identified and separated all the different materials used on this car: plastics, rubbers, metals, and paint. I masked out all the respective objects and gave them their own folder. In my case, I wanted to have a new-looking car without clearcoat damage, dust, dents, and other imperfections. Although for some miscellaneous parts I added height and roughness details. I also made a simple shader in Unity that allowed me to change color, smoothness of the paint, metallic, and clearcoat and add livery overlays.
Substance 3D Painter project with all the masked out surfaces
A shader made in Unity allows a decent amount of control over the material. Still pretty simple
Headlights are the eyes of cars. If they look wrong, the whole car just doesn’t look convincing at all. Looking at any typical car headlight or brake light, you can see that there are quite a lot of refractive elements, but the surface is smooth. When trying to figure this effect out, I remembered that Gran Turismo 7 has a photo mode. I know cameras in games have clipping, so by zooming in I saw that they used double meshes. One for the refractive lens and one for the reflective lens. After seeing this, I had to try this technique out in Unity, and for sure it worked! I threw together some boxes with the modeled rear brake light and with a simple texture and shader, and I got this result.
I had a real rear brake light laying around to use for reference
Doing a bit of research in GT7 seeing the different mesh layers with refraction and reflection. Shout out to Polyphony for their awesome work
The first result after replicating the technique used in GT7
Exploded view of the different elements that result in the final brake light and headlight assemblies
I also had to replicate the refraction patterns in the headlights and brake lights. I did this by simply taking a black-and-white gradient and positioning them in the same angles and sizes as in my reference. Then I used the xNormal Photoshop plug-in to convert them into a normal map.
Resulting normal map that got used in Substance 3D Painter
The end result
Because I used this technique and for other reasons, the car had to be separated into a few material categories. I did this because some objects like badges needed to have up-close detail. This way I could maximize UV space for the main body of the car.
Image with different material ID
I've used Unity for many projects and know the software pretty well. In terms of features, it just has about everything I need, like physical camera settings. But at the end of the day, it’s just a tool that gives me the results I'm happy with.
In the sequence, I have two scenes with quite different lighting conditions. The first scene is naturally lit using an HDRI and directional light. There, I animated the sun going down, the car lights turning on, and two stretched area lights switching on. Everything was coordinated to enable it at the right time. These area lights were lined up with the natural line of the car. I chose to have the area lights be cool in color so that the front headlights would stand out more. The camera does a dolly zoom to a 50mm focal length to make the clip more dynamic and it lets the Starlet stand out as even more powerful.
The tunnel is inspired by the famous Japanese Shutoko highway, which was a breeding ground for car culture in the early 80s and 90s. This sequence is essentially a simple rolling shot with another car lighting the main car. I like to think about lighting opportunities in this way, which can enhance the subject by using something else that can make the scene more believable.
Using Unity Cinemachine, I added tracking and camera shake to make it feel more natural. Speaking about cameras, one of the features I really love in HDRP is the physical camera settings. If enabled, things like aperture, shutter speed, ISO, and many more can be changed. I combined this with the tunnel being dimly lit and the car moving at high speed. This results in a natural motion blur, which is the perfect way to get this shot to feel fast and dynamic.
A trick that I used to get the car more grounded was to add a plane with a baked ambient shadow underneath the car, something that was quite important in the tunnel scene.
After all that, I ended up with a little animation sequence and a few renders.
Huge thanks to the awesome people of 80 Level for giving me the opportunity to show off my work, it really is an honor to me. Also big thanks to Beau Gerbrands for giving me his time and effort to provide feedback on my work.
You may find these articles interesting