Development post #9
It may seem like I was over the hill with the hardest part of the mod once damage was completed for make0 but this next section, getting the 3 other makes in, was actually a lot of work compared. Once I was 'finished' with make0 the next step is to get the 3 other makes into the game. While I thankfully did not have to start completely over from square 0 it was quite a process to inject the others in. This may be different for other mods depending on how different each body type is but for my mod the main change was just the nose section. Even though it was just a different nose type for each make having to stitch it together with the other existing parts was very tricky.
The first thing I did was take my make0 model and create a new blender scene, this way I don't have to worry about messing up the original or anything. This make0 mesh is the completed final mesh that is in the game so it has everything: correct topology, UV placement, and LOD1 detail. Since my plan was to only change the nose section it was important I contained or 'quarantined' the rest of the model so I don't move any verts or accidentally delete a section of it. There are multiple ways you can do this. One way is to hide all the faces you don't want edited. However, since I wanted to see the whole body so I could make sure the nose looks good with the rest of the body and flow well I instead sliced off the front like this temporarily:
The nose section was pretty much all separate meshes. Once I had it ready to edit I made 3 copies (one for each of the other makes) and started editing the nose shape. After editing each nose type before I came to the conclusion that it looked good I brought it into 3D Coat and applied some really quick decals to it. This was just a test to ensure that the nose shape indeed worked for the intended manufacturers I was going with:
After doing quick tests on all the new noses the next thing to do was merge the nose pieces back to the bodies so it was one single body mesh again. Here is a quick run down of the differences of each 4 makes and how they look (note some changes were made since my last post on the noses):
make0:
This is the one you've seen the entire time. It is the template essentially that the other 3 makes were built upon. This nose shape is very neutral in both its curve and shape which will be very friendly to any manufacturer's really that don't have any aggressive nose shape to them. This nose is planned to be used for manufacturers such as Honda (Accord), Chevy (Monte Carlo or Impala), Nissan (Sentra), volkswagen (passat 2020).
make1:
This nose is the most hard edged one and works best for manufacturers that are hard edged and flatter. The only defining edges are the lower section but with proper shading it can be made to look like any variation. This nose shares the same splitter shape as make0. This nose is planned to be used for manufacturers such as Dodge (Charger), BMW (M8), Volvo (S60).
make2:
This nose is best suited for manufacturers that have a more rounded shape to the grill area. A few changes from the previous screenshots compared to now is the round front was moved outward a bit more. The hard edges were also removed. This was done so the hard edges do not define the grill shape but rather any fake shading will do the trick. This nose shape also has a new splitter shape to fit the new curve of this nose too. This nose is planned to be used for manufacturers such as [Infiniti (Black S), Ford (Fusion), Tesla (Model S).
make3:
This nose is the most pointy of them all and also extended out further than the other four. In contrast it also slopes more aggressively than the other 3 too. Compared to my previous screenshots I did a complete remodel of it since I was not quite happy with the first results. The only hard defining edges on this nose are the bumper area to give it a clear divide from the upper and lower grill sections and allow the nose to clearly look more pointy. This nose also like make2 has a new splitter shape to fit the nose too. This is my personal favorite nose as it will be the one to have makes such as Pontiac on it. At long last after years of struggling to fit my Pontiac templates on other mod noses it will be the easiest its ever been with this one. This nose is planned to be used for manufacturers such as Pontiac (G8), Mitsubishi (Lancer/Galant), Toyota (Camry).
As shown in my quick test screenshot above with minimal effort regardless of the nose shape chosen if the user wants to make a custom manufacturer it will be very easy to do so. No more fighting over hard geometry to fake it. Now you'll be able to apply decals with ease and create that fake shading and highlights to really give it whatever shape you want it to appear as while the underlying geometry of the nose helps give that impression. One last thing I want to mention is I decided to forgo doing a custom bumper design for each one. I like the default lip I had on it already and with proper decals and fake shading/highlights the user will be able to make the bumper appear different.
Now that I've established the nose shapes and the results this is where the real time consuming and tedious part begins. Since each body has to have its own UV template that can be painted on the goal was to make sure the UV for all 4 makes did not change even a pixel except for the nose and hood areas as those were the only sections that have UV's moved around and would need to be generated again to ensure painting on the mesh would be proper.
Along with the UV's matching for each template (minus hood and nose variations) I had to recreate the ambient occlusion, shading, and highlights for the nose/hood sections
while also erasing the make0 details so they would not overlap. This includes the new wireframe and mask layers for each make as well. To do this multi-step process took a lot of focus, it pretty much feels like doing digital surgery. I always find it easier to create something from nothing but when I have to carefully extract, edit, and replace only certain features of a model or texture it can be very time consuming. It will be different how everyone does something like this but for me and the tools I used here is the quick rundown (this was done for each of the 3 new makes so had to do this process 3 times in a row):
- take the newly edited body for make and import into 3D Coat, rebuild the UV's for the hood and nose.
- import the fixed uv make model to my master 3d coat file where all the other model pieces are and align the new nose and hood UV shells to a very similar area that make0 body uses
- export just the body for the new make in a 3d coat scene and generate/paint shading, highlights, and ambient occlusion
- using the 3d coat exporter, export the layers and wireframe to a new affinity photo file
- in affinity photo edit all the new layers trimming and editing it so just the hood and nose sections are left
- make a copy of my working paint template from make0 for my new make and inject the new shading, highlights, and ambient occlusion
- stitch together all the layers while removing the hood and nose of make0
- export the new template to be ready to be used on the new make
- back in 3D Coat export my final make body to blender
- in blender cleanup the smoothing groups/hard edges
- export this file to 3DS Max 8 where my main scene of the mod resides
- cleanup the model and apply the paintjob material with the new make texture I created
Once I had completed that multi-step part the new make is in my main 3DS Max scene ready to be worked on for the non-damaged body. This part was pretty much just redoing the same process I have already posted on before. The one main difference was I didn't have to start completely over. Elements like the interior, wheels, working flaps, etc are already done and those are all shared between each make. The only part I had to redo was the exterior body meshes and generate new LODs for each other them. Even this process was faster since I had already validated make0's LODs and what settings I used on the MultiRes modifier. So after a ton of copying and applying all the lods I finally had all 4 makes finished in my 3ds max scene for the non-damaged state:
These are all the folders in my outliner, if I opened them up you'd see hundreds of models for each make and their lods states. As you can see by the image though I've neatly organized them into categories and each model name has been purposefully labeled and named a specific way by what the objects is (hood, rear, body etc) and what lod level it is at (L1, L3, L5, etc). I even grouped all of the SHARED objects per their lod state. These SHARED objects are all of the interior pieces that do not differ between any of the makes. This makes it very easy for me in the code to do fast and easy name replacements. Its up to you when making a mod how you organize and name stuff but you really save a massive amount of time when its organized and you don't have to remember each name in the code manually.
Once the 3ds scene for non-damage on all 4 makes was completed I exported my scene as a PAS file and prepped my code to inject the 3 other makes for their non-damage states, This part was comically easy becasue like I mentioned I had everything so easily named doing a quick find and replace in my atom text editor meant I could copy my make0's non-damage code, copy it, name it to make1 and paste it into my main code. None of the makes have more or less pieces than each other so they all match in terms of models used per lod level and what the names are. That is the one nice thing about building a
stock car mod. Its not like one body will have an extra spoiler or a different window so I can easily reference the objects to a different make by a simple name change in the code. There really isn't much to show/explain code wise becasue its just the same code from my make0 non-damage except its copied 3 extra times and renamed between make0, 1 , 2 and 3 for the different bodies. So for example if I take an excerpt of the LOD1 for make 0:
Code:
############
#LOD L1 #
############
L1_body0: MESH maxCars make0_body_L1
L1_body0_shell: MESH maxCars make0_inner_shell_L1
L1_hood0: MESH maxcars make0_hood_L1
L1_hood0_under: MESH maxcars make0_under_hood_L1
L1_rear0: MESH maxcars make0_rear_L1
L1_splitter0: MESH maxcars make0_splitter_L1
I can just as easily do a find and replace to make it work for my make1 body now:
Code:
############
#LOD L1 #
############
L1_body1: MESH maxCars make1_body_L1
L1_body1_shell: MESH maxCars make1_inner_shell_L1
L1_hood1: MESH maxcars make1_hood_L1
L1_hood1_under: MESH maxcars make1_under_hood_L1
L1_rear1: MESH maxcars make1_rear_L1
L1_splitter1: MESH maxcars make1_splitter_L1
I couldn't do this if I had all sort of different names for the different parts. For example if one was named Chevy_hood and another Cvy_rear it would take a lot more work to find and replace all that code and there are a ton of lines and room for error increases. That is why I went with very generic stuff like make0 and numbers since I knew it would easier and faster to replace.
Once I had all of the makes copied in the code it was time to compile and I'm happy to say on the first try it compiled perfectly with zero errors. The last thing to do was see all 4 makes in the game:
Admittedly it might be hard to tell from the screenshots due to the distance and body shine the nose shapes but I assure you with the custom manufacturer decals and shading for them it will really show the differences better. For a better demonstration here is a quick gif showing all 4 WIP make templates:
You can see how the nose and hood areas shift but the rest of the template stays perfectly static. This is going to allow painters to do much easier paint transfers between makes. The only areas of re-adjustment would need to be the nose and slight hood re-work. It took a long time to achieve this careful accuracy but it will be worth it when this mod gets into the hands of painters. One last comparison the 3d render of all 4 makes with their textures, this will really show you the changes between them if still not convinced:
At this point the mod includes all 4 makes with no damage and one make with full working damage. The next step is to now copy and break down the 3 new makes for damage and apply the damage morphs to it. It will no doubt but quite the process but after the next large step the mod will finally be in beta phase.