For this weeks post I’ll be posting the final work for the game scene. First we have Zacharys work, with the buildings and decorations.
Here’s an example of my car in scene. The dirtiness of my car is way more justified in an environment like this one.
Here’s some of my props next to one of Zachary’s buildings.
Overall I’m pretty happy with how the project turned out. I didn’t have any major hiccups in the project aside from the usual. I had life an other classes get in the way, which challenged my time management skills, on top of getting sick which I’m still struggling with. But technically the project went well. The car proved to be a bit more of a challenge than I expected. It had a lot of odd rounding to it on top of some other sharp edges. UVing also ended up being a very intimidating task with my car. With all of these school projects, I feel like I could do much better now that I’ve done it before, but I guess that’s the point of taking classes.
While my car is coming along nicely, I have an update on the detail layer that I was working on a few weeks ago. I asked for some help and found the “right” way to do what I was trying to do. Instead of doing odd workarounds with Unity’s Standard shader, the right way to go about a detail mask is with a custom built substance shader. Luckily, a shader that places a texture on top of a color is pretty simple, and served as a great introduction to substance designer for me.
This is the tree that I made with the help of one of my instructors, Justin.
This tree takes a color, a texture, and a mask as parameters. blends the color and texture into one color map, and then sends the mask to blend with a secondary mask. These things then combine together in the final node, to make a masked and combined albedo. Something important to note, however, is the load time. This entire tree is adding about ~14ms of load time to the game. While this isn’t much, if I had multiple versions of this texture, and it was on lots of objects, it could add up. But it’s not for nothing.
The final result was basically a much better version of what I was trying to do with Unitys shader. The downside is slightly longer loading, where as Unity’s standard shader is undoubtedly faster, but I think that an argument for using the substance method could definitely be made. Luckily, while texturing the object the workflow that you use doesn’t really change at all, this just seems to be the more advanced version of implementing to the game engine. Compared to the way I did this in my previous post, there is no bleed through.
Where as the way that I did it previously did have a pretty significant amount of bleed through. I’m not sure if there’s some way around this or not using Unity’s shader, but it seems the substance shader is the superior option if you aren’t worried about min maxing load times. Either way, this seems like a great method for making a variance of asserts without taking up more texture space.
I’ve made some decent progress on my car and it’s coming along pretty smoothly. I was originally planning on doing a car model based off of the car that I own, but for the sake of time and ease I decided to just pick a fallout car. As the semester nears to an end and my workload increases, I moving more towards the “work smarter, not harder” mentality. For this reason I changed the car that I was planning on making to one that I think I could get done more quickly.
When looking at the fallout4 cars, they are all very round. While I believe that a more experienced modeler would not struggle with that, and would likely know how to tackle it, I have not done a lot of hard surface rounded modeling. Instead of swimming upstream, I decided to do something that I was much more confident I could have done quickly and ideally to a higher quality.
So I chose this car. This car is actually from fallout 3, but is still in the fallout style enough that it will fit just fine. However, there is singnificantly less rounded and smoothed elements to the car, which seemed a lot more approachable. The issue that I ran into is that there is not nearly as many shots of this car as there is others. Ideally I like to start a new project with a side shot and modeling it out, and in an ideal situation a front on shot as well. I could not find any other good shots of this vehicle, but I found one that was very close.
I used this image as reference in maya, noting the differences and similarities with the car I was actually trying to do, and once the ref art was not longer useful I tossed it. Since that point I have been working strictly from the original art I found.
This is the current state of my car. I am “happy enough” with where it is at. My biggest concern at this point is that I am not utilizing my polycount well. I was allocated 15k tris for the vehicle, and am currently barely breaking 3k. While it might seem like it, I am not trying to “humble-brag” about the situation. Ideally I would be using almost all of my allocated tri count to make the highest quality vehicle I could. However, I seem to be stuck in a mindset of trying to make things as low poly as possible, and when I try to make things higher poly they tend to just get messy. My current thinking is that I will spend the remaining tri count on the details. Hopefully I can use as much of my allocated amount as possible.
Also I think I should make a brief point about the end goal. The current plan for my group is to have everything done and in unity by Wednesday, rather than waiting for the Friday deadline. That means that I need to be done with modeling by Saturday at the latest, so I have sunday/monday to texture. I am currently not too worried about the schedule with this project individually, but I am very worried about the overlap I’m experiencing with class deadlines, so we’ll see.
For this weeks check in for CAGD 373, I’ll show how I’m doing detail masks while texturing. In video games it can be useful to create textures that are flexible, and can be re-colored as needed. However, we don’t want to recolor everything in our texture, and we want some things to remain consistent. For my first part of this project, I’m doing some decorative pieces, like barrels, and figured this would be the perfect opportunity to show how I do detail.
The end goal is to make a texture that only adds color to some areas, but is transparent in the rest, so we can recolor the object in a the game engine. To do this, you need to first let substance fill in transparency. To do this, just click the + arrow and add an Opacity Map.
After you’ve done this, you still won’t see transparency. You’ll also need to swap your shader over to “pbr-metal-rough-with-alpha-blending” or “pbr-metal-rough-with-alpha-test”. I tend to get better results with the 2nd.
Once you have these set, you should be able to use the Opacity channel on your layers. I normally add a fill layer, and then set it to max opacity. Afterwards I build everything on top. My end product should have all of the “detail” but with no opacity or color, looking something like this:
As you can see, We have the dirt, dust, and metal details that we want, but the rest is transparent. The metal and roughness values, as well as all our other maps will still export out fine even though we can’t see them, just the base color underneath is not visible, so nothing is currently rendered.
After exporting to substance, I build my texture.
Instead of putting our Albedo map on Albedo channel like normal, I isntead placed it on the Secondary “Detail Albedo” map. This means that the Albedo map we made in substance overlays the primary one, so we can make the base color anything we want.
Even after coloring the base material yellow, the brown of the dirt still shines through. This method is a easy way to add a lot of extra variation to your objects without a huge increase in work.
While this method is not currently perfect, with the base color that we shift over shining through just a bit, it still helps you better visualize for this type of work flow. I’m sure that with some substance designer built shaders it would be trivial to have to proper channels, but for now I am fine with what I’ve got.