3. University Final Year Project Diary

Introduction –

Note: You can link to entries on this page by using ‘#entry(entry number)’ at the end of a link so https://ryanpinder93.wordpress.com/final-year-university-project/#entry16 for example would take you to entry number 16.

For my final year project I plan on modeling and rigging a race modified Triumph TR4 that will be presented within a scene in 3ds Max and within a game engine, the game engine version will be optimized and I will attempt to achieve a driving feel that suggests that the car is a lightweight track car.

Entry 1 – Pre-Production Stage Complete (November 1st 2013)  

I’ve completed the pre-production stage now which consisted of research, design and testing. Obviously research will be an ongoing stage but I believe that the bulk of my research is complete. Here is some of my pre-production work.


(Car Mood Board)


(Max Scene Mood Board)


(Livery Design Ideas)


(Chosen Livery Design)


(Initial Concept)


(Vehicle Owner Characterization)


(The Car Components That I’ll Need To Replace)


(Testing Car In Engine Using a Box)

[vimeo 80910415]

(Car physics test)

Entry 2 – Starting the Production Stage (November 7th 2013)

I managed to complete my pre-production work a couple of days prior to my targeted deadline and now I have started modeling my car and garage.


(Garage with base colours applied)

EarlyStagesModeling EarlyStagesModeling2

(Early stages of modeling)

Entry 3 – The Base Mesh Taking Shape (November 11th 2013)

I’ve improved the mesh, added a boot, grill, chassis, tail lights, head lamps, tyres and separated the front bumper from the chassis, I separated the front bumper from the chassis because when rigging for the game engine I need them to be separate. The tyre is split into 2 elements (a tread and a base) so that I can easily scale the base to adjust the thickness of the tyre tread.


(The car beginning to take shape)

Entry 4 – Adding a Layer of Detail (November 17th 2013)

The car now has wheels, a windscreen and a basic interior. The interior was a huge challenge for me, I tried to attach the interior to the exterior of the car whilst keeping it low poly, creating the area where the dashboard meets the rest of the car was what made it difficult because that area is quite small and congested with polygons.

I think that if I was to create this area of the car again I’d use more polygons and try to keep the interior and exterior meshes separate to try and suggest that they are attached to each other out of sight. I think the bullet wing mirrors work really well and give the car the look of a traditional race car.


(The car with a little bit more detail added)

Entry 5 – Starting to model the internals (November 24th 2013)

I’ve really started to go into detail now and my target of getting the car and garage complete by the 19th January is looking very achievable if I can maintain a high work rate whilst keeping on top of my other modules, an original TR4 doesn’t feature racing brakes or double wishbone suspension but because I want to turn my car into a race car I’ve had to modify the chassis to fit the suspension to it, I’ve kept the base shape of the chassis the same but I’ve added parts to it to make the chassis appear as if it has been modified rather than modeled incorrectly.

EarlyStagesModeling5 EarlyStagesModeling6

(The car about 75% complete in terms of modeling)

Entry 6 – Starting To Refine the Mesh (December 1st 2013)

I have now added some finer details and the car mesh is almost complete, I will probably spend the next week refining certain areas of the mesh and adding minor parts to it before I get onto the unwrapping stage. As you can see I have modeled the engine and put the car into my garage scene just to give myself a preview of what the car will look like. I’ve decided to model the bulbs of the car lights rather than texture them on because I feared that the headlights would lack depth, its important to model the headlights correctly because they are basically the eyes of the car.


(The engine bay)


(The current car mesh in its garage)

Entry 7 – A Season of Unwrapping (December 9th 2013)

I have added a few more little details to the car in the last week such as a distributor to the engine and a toolbox in the boot. I hope to unwrap the car fully before Christmas to ensure that I am on target, I will create 2 sets of textures, one set will cover the assets used in game and for high quality renders and the other set will be used for the remaining parts of the car that are too detailed to be used in an engine efficiently. The aim of this list is to identify the car components that I think will or won’t be required in-game, deleting the unrequired objects will allow the car to be more efficient in the engine without compromising the quality of the car too much. I will also remove edge loops and utilise various other methods to bring the poly count of the car down before I implement it into GTA SA.

I realise that I never unwrapped something as complex as this before. I need to unwrap the car cleanly to produce the best looking car possible, I also need to ensure some of the smaller meshes which make up the car are as efficient as possible and share UVs and whilst doing this I need to split the car’s components into 2 sets of textures. To make life easier for myself I’ve created a list of the car’s components that need to be unwrapped, I’ve based my decision for what goes into the game based on the poly count of each small mesh and how significant they are when creating a functional realistic looking car from most angles. The components under “To be used for high quality renders only” will not be imported into the game engine and will use their own set of textures for use in 3ds Max and the other unwrap covers the game engine and high quality renders as you have probably guessed.


(Unwrap plan)

Entry 8 – Unwrapping Progress (December 15th 2013)

To begin with I decided to unwrap the wheels, I opted to share the UVs of one spoke to save texture space, when rotating the spoke around to produce the rest of the wheel I realised that very obvious seams may appear between each spoke. I solved this problem by using the Symmetry modifier in 3ds Max so that each spoke would mirror its neighbouring spokes which meant that the seams would be invisible.


(Wheel unwrap solution)

I’ve almost completed the left hand side of the list and I aim to finish the remaining parts of the unwrap stage before Christmas day at the latest, I would like to get ahead of schedule by a couple of weeks because I have accumulated a few ideas with regards to presenting my work which would really finish the project nicely. Here is the car with a UV checker texture applied, I will scale the UVs at the end of the unwrapping stage so that the scale of the UV shells in relation to each other is correct.


(Unwrap progress)

Entry 9 – Unwrapping Complete and Base Textures Applied (December 29th 2013)

The car is now fully unwrapped and every component has at least a base diffuse on it, I had problems getting the tyre branding on the sidewall of the tyre to fit correctly as the tread (which is a separate mesh to the tyre) intersected it, I solved this by reducing the tread profile and increasing the tyre profile. A slick tyre would have been much easier to model and texture but I wanted to challenge myself and I think the car looks a bit more visually interesting with a modeled tread.

TexturedRender1 TexturedRender2

(Base diffuses applied)

Entry 10 – Additional Texture Maps and Detail (January 10th 2014)

I am approaching the end of the production part of the project now and the car is developing well, it still has a bit of work to be done on it but the work is just in the finishing details and I can add any details that I don’t add in the next couple of weeks into the “Refinement Pass” stage later in the module. The sidewall on the car’s tyre is from a much lower profile tyre which meant I had difficulty making it fit correctly over the tyre’s UV shell in Photoshop, I therefore stretched the texture using 3ds Max’s UV tools and then I rendered the texture out of Max at a very high resolution to ensure the tyre’s detail wasn’t lost, all that was left for me was to clean up small problem areas on the tyre which gave me a texture that fit the tyre mesh without looking stretched. To speed up the normal mapping process I have tried to avoid sculpting where possible as sculpting can take up a lot of time especially on such a big project, I have developed a workflow that involves hand painting grayscale colours in Photoshop and converting values so that they can be used within a normal map.

AdvancedRender1 AdvancedRender2 AdvancedRender3

(Textures about 75% complete)

Entry 11 – Render Tests (January 17th 2014)

I’ve been looking at some rendering alternatives to 3ds Max and I came across several in particular Octane, Lumion and Marmoset Toolbag 2.0. After testing those 3 I decided Marmoset Toolbag 2.0 was the best package for me as it allowed for some great real time renders which will be useful if I decide to record any footage of the car, I’ve been experimenting with panoramic renders in 3ds Max which would help me to produce a spherical map of the garage for use within Marmoset. I’ve also been testing the free rendering service that Pearender provides which will be useful if I decide to record any footage of the car within 3ds Max.


(Marmoset test)


(Panorama test)

Entry 12 – Rig Test (January 25th 2014)

I thought that I had done a sufficient amount of research so that the car would go into the San Andreas engine smoothly but putting a right hand drive car into the engine apparently throws up all sorts of animation problems so I decided to convert the car to a left hand drive. This was quite tricky to do right because as a result of flipping the car the textures on the side of the car were also flipped so I had to adjust those. After a bit of trial and error the car now works in the engine as you can see below with damage, I’ve applied various mods in an attempt to improve the quality of my footage such as the removal of motion blur.

[vimeo 84994425]

(Car rig test)

To create an area where I could test the car I used San Andreas Racetrack Maker 3.0, it enabled me to quickly create a desolate race track where I can test how the car drives and accumulates damage.


(My test track created in San Andreas Racetrack Maker 3.0)

Entry 13 – Vehicle Physics (February 3rd 2014)

To decipher the meanings of the vehicle’s perfomance parameters within GTA San Andreas\data\handling.cfg I made use of the Project Cerbera website and the Fundamentals of Vehicle Dynamics.


(The parameters defined on the Project Cerbera website)

Most of the parameters are quite easy to understand but I had to play with the TransmissionData.fEngineInertia parameter a bit to ensure the car’s acceleration was more realistic, less linear. The base settings for the car meant that it had quite a lot of oversteer which isn’t what I want from my car, to add to the problem the car was very quick in a straight line. I said in my Proposal that I wanted a lightweight track car that wasn’t overly powerful which meant that I had to conduct tests to come up with a setting which I felt was correct.


(The development of the car’s setup so far)

Entry 14 – Presentation Animations (February 9th 2014)

I will create a short video to present my work, I have been working on 3 short animations in 3ds Max which will be in the video.

To start the video I had the idea of revealing the car from beneath a cloth, at first the cloth is the only object present in the scene but then the car fades into the scene underneath the cloth. The cloth then lifts up to show the basic components of the car. To achieve this effect I used the cloth modifier to settle my cloth on top of the car, I then added turned the cloth into a solid object and repeated the cloth modifier but I used a tube above the cloth and made the effect of gravity positive so the cloth collided with the tube and folded inwards above the car.

Inspired by CFD simulations on the internet I decided to try it myself, I looked at CFD packages such as Autodesk Flow Design but I decided to fake the effect of airflow over the car as I had more creative freedom (smoke effects, camera work, etc.). Using a combination of Super Spray and an editable spline I came up with a credible simulation.

To finish off the animated sequences within 3ds Max I will build the car up, in certain areas of the animation I have tried to draw the viewer into the finer details to make it look a bit more impressive, zooming in on the wheel valves as they fly onto the car for example.


(Cloth Reveal Preview Image)


(Smoke Simulation Preview Image)


(Car Build Up Preview Image)

Entry 15 – Game Ready Presentation, Sound Effects and Character (February 16th 2014)

I’ve been presenting my car as it appears in GTA SA using Marmoset, I’ve rendered the car fully damaged and undamaged with the relevant wireframe renders beneath them. The vehicle’s acceleration was measured using a stopwatch and a speedometer mod for GTA SA, the top speed, acceleration and weight stats seem reasonable to me so I won’t do anything else to the car’s stats within the handling.cfg file.

I have decided to make a helmet to make the presentation of the car a bit more professional, I’ve tried to keep the helmet low poly but to compensate for the fact that it is still high poly by San Andreas standards I have swapped CJ’s (the main character) body for a lower poly ped mesh. I started by creating a very rough helmet shape in 3ds Max which I then modified and retopolgized using Mudbox, so within a matter of minutes my very rough quick helmet mesh had turned into something usable.  The character mesh is that of a construction worker,  I’ve darkened the character’s gloves to make them look less like the gloves of a construction worker.

Using Alci’s SAAT GUI Front End for GTA SA I have been able to implement my own sound effects for the car, the sound effects have been modified using TwistedWave, these modified sound effects are based on the recordings of a V8 engine from NFS Shift 2. Links below show the difference between the original sound effects and the new sound effects when accelerating and decelerating. I tried to fade in the sound of acceleration but this had to be very subtle because that sound was elongated with every gear so you’d have the situation were there was a long silent pause before changing up in the higher gears.


(The car’s mesh and textures as they will appear in GTA SA, the different models illustrate the difference between the car when it is not damaged and when it is fully damaged)


(Low Poly Helmet Mesh)


(The driver of the car)

Original Engine Sound Effects – https://www.dropbox.com/s/b294obt6jngsenn/Original.mp3

Captured Engine Sound Effects – https://www.dropbox.com/s/hlu76tpm6bjeh5q/Recording.mp3

New Engine Sound Effects – https://www.dropbox.com/s/vm6kwx1wkrlq92i/Modified.mp3

Entry 16 – Rust Paint Over and Gloss Maps (February 23rd 2014)

I decided to create rust on the car because after a brief talk with Mike Holton (A lecturer at Teesside University) he said that his Triumph suffered rust problems, I have tried to limit the rust to ensure any surface detail isn’t lost, using steady stroke in Mudbox I carefully erased down the beams of the chassis to leave rusty areas on the edges.

I’ve also been working on a gloss map which has greatly improved the quality of the car, I have had to adjust the specular maps and diffuse along with the gloss in an attempt to strike the right balance for the look of the car’s individual parts. If I was to use a gloss map again I would introduce it earlier in my workflow so that I wouldn’t have to readjust my specular and diffuse as much.

The car headlights have been tinted yellow to give them a classic halogen look as opposed to the Xenon blue look I had in earlier renders, on reflection they seem quite dim at the moment so I might turn up the intensity, I think everything is being greyed out by my environment so I’ll have to improve the lighting conditions.


(Bonnet Less Front Render)


(Underbody Rust)

Entry 17 – Unity Implementation, Bonnet improvement & Presentation Test (March 5th 2014)

Since my last entry I have implemented by car into Unity3D, I used this http://www.youtube.com/watch?v=DCKTLRZa8_E as a base for my project. It was relatively easy to get into Unity, I had small issues like shadows not casting with my custom shader but I fixed that by changing Fallback “Lighted” to Fallback “VertexLit” at the end of my shader code and the timer was jerky when crossing the start/finish line but I solved this by speeding up time briefly.


(A small diagram breaking down my timer and collision JavaScript scripts)

I noticed that the hump that features on the bonnet of my TR4 wasn’t as pronounced as it should be, the dimensions were fine but it didn’t have the same definition as it’s real life counterpart. After looking at the topology of my bonnet I decided that adding edge loops to tighten up the hump wasn’t the best solution, I opted to hand paint that extra definition in Photoshop. I created a rounded teardrop shape and blurred it, I could then apply the NVIDIA normal map filter in Photoshop, I adjusted the bluriness and opacity of the teardrop layer until I ended up with something which I was happy with.


(Sharpening the hump in the bonnet)

To get a bit of feedback from my Supervisor I put together a short presentation of my work so far, some parts have been missed out and since making it the quality has improved so hopefully my final presentation video will be much better than this.

[vimeo 87935654]

Entry 18 – Final Presentation Video (March 14th 2014)

This is my final presentation video, it features similar content to the previous presentation test but it is of a much higher quality, as you will be able to see the video features a black liveried TR4 simply because I was playing around with my textures in Marmoset and I thought the car looked good in black because of the contrast it creates against the chrome parts of the car.

||   http://goo.gl/lhJUW8   ||

(Unity Web Build of Flying Lap)

(Presentation Video)


(Final Render)