Just some various technical questions regarding modular sets and best optimized practices.
- how many materials is too much for a modular set? Lets say a city building? I currently have 1 trim material (thats doing most of the work), 2 tiling materials, 1 unique bake for intricate details/sculpted pieces. I believe that's on the lower side, but when does too much become too much?
- When creating a trim sheet, do most people use the grid on the 0-1 UV layout when placing the high poly? I would assume this would make it easer to snap UV edges to the edges of the baked trim piece. I didn't do this on my trim sheet and I'm having issues seeing exactly where the edges are. It's been a pain to line things up by eye.
- I see some modular sets where each piece has its own texture, maybe sometimes a couple modular pieces share a texture set. This seems highly inefficient to me and seems like a waste of texture memory/draw calls. Am I wrong here? Though, I'm curious how people get such good looking modular sets by using just trim sheets/tiling materials? If my building is comprised of mostly trim sheet detail, how would I go about getting dirt and grime in there? Using decals seems like it would be too much since decals cost a lot. Would I make a more "dirty" version of my trim sheet and tiling materials and just use vertex painting to add in the dirt? If thats the case, I'd have to add a lot more polys to the modular pieces for vertex painting, and if its a huge building this seems a bit crazy.
Just seeing what are some good practices for creating huge city buildings.
Replies
2) Not sure what's being asked here, but trims need to tile seamlessly from 0-1 horizontally or vertically. This means using the grid when you create the highpolys.
3) There are many ways to reuse resources. That's really what we're talking about with trims, atlases, etc. Different things work for different projects.
Generally, getting good assets out of trims and tileables requires smartly planned trims, flexibility in modeling, and a lot of shader work. At my work, the vast majority of our architectural and machine environments are created using trims and tileables. Often an asset can be composed of multiple trims and tileables as well.
Dirt and Grime
Grime, dust, dirt, etc. can typically be handled in the shader using monochrome grunge masks that get recolored in the shader and your own channel packs (like AO texture) modulated with detail textures. Furthermore, those same textures can be reused in different shaders to create completely new looks and materials like metals, plastics, etc or blended with other full materials like moss or mud.
These masks can be driven by vertex color, world space projection, and other methods.
I did a scene recently where I kind of explored a lot of what you're thinking about:
(https://www.artstation.com/artwork/Z5RPlm)
This is a trim I built for that project that's used on pretty much all the metal bits in this scene (except the corrugated metal). I built it to be used in a lot of different circumstances in a large-ish environment so it needed flexibility. I built it to be able to:
- change color
- change cleanliness/dirtiness
- change between plastic or metal
- optionally use cascading water (since the scene allows for rain)
The grunge here is both channel packed with the texture itself (I think I used something like R - AO, G - Roughness, B - Metalness, A - Grunge) and supplied via a separate grunge texture projected via world space. The alpha grunge is what controls the grunge you see in the corners of panels and creases in the texture itself. It is a black and white mask, recolored in the shader, and (optionally) enhanced with a dirt-like normal map. The world space grunge is visible in the grey metal version pictured above (the black-looking streaks). Also note, I used that same drippy grunge on the concrete wall behind all the pipes. It's just a bit bigger and a different color (white).On this wall, since it's so large, I used world space projection and vertex paint to control grunge. I also tried to reuse and save some texture resources by making the windows out of my preexisting grunge map and one of UE4's procedurally generated gradients. In vertex painting, I saved myself verts by using a good threshold to breakup the vertex paint instead of relying on vert density.
Furthermore, in the final scene I definitely enhanced this asset with decals and other models layered on top of it. I don't think you see this particular asset this bare at any point.
Anyway, this is my experience and there are more out there. Much of the workflow really depends on your end goal. Thanks for reading.
Thanks a ton for the breakdown and detailed reply. That helps a lot.
Some questions I have regarding your trim sheets and props:
- how was the air conditioner made? Was that trim sheet as well?
- how about the alumnimum piping with the duct tape - was that also part of the trim sheet?
- what unique props did you have to model for the scene?
While I understand pretty much everything you’ve talked about, now I’m just confused about how to actually go about doing it
Seems the overall main thing is using a world space tiling grunge monochrome mask to break up and add dirt/grime to the tiling textures and trims? Was a bit confused about “using a good threshold to breakup the vertex paint instead of relying on vertex density” part. So you are using vertex paint with your tiling materials to blend between? I only saw one version of each material on the ArtStation page. Maybe I’m reading that wrong?
Again, super informative. Thanks a ton.
1) The air conditioner is made from trim entirely. There's more to the trim than you're seeing on the preview sphere and I haven't yet got around to posting a full shot of the trim. But there are actually quite few unique details you're not seeing. The grate covering the fan is also on the trim sheet and I'm using an alpha test version of the shader to show it on the model.
2) The large pipe is also part of the trim sheet, again it's not visible on the preview sphere. Nothing special there, just a pipe with tape all on one row of trim.
3) The trash cans, rollup door, and garbage bags are 1:1. And the machine bits surrounding the rollup door is from a 1:1. (Though the machine bits weren't made for this project). Tbh, most of those assets could have been trimmed out, but I confess I got pretty bored trimming everything.
For the concrete, the grunge is pretty much just world space grunge and vertex paint. The uber trim is alpha packed grunge and world space grunge. No vert paint on the metal trim pieces.
With "threshold" I meant I used a tileable mixmap to break up the edges of the gradient painted by the vertex color. That's all. Same thing I did for the windows: a gradient (radial for the windows) with grunge/mixmap used to break up and distort the edges.