Old dog (3D), new trick (modelling for a shader pipeline).
I've been going through the wiki re: modular environments. It's time to put something into practice. I've tried to show my understanding through the images and questions I've posted.
The model is approx. 110ft wide and 107 ft tall. Legacy texture is 1024x512. It seems like I can reduce the map size somewhat and generate much higher resolution with a modular approach.
I understand model & texture technique is highly dependent on game engine requirements - this piece will be used in a real-time, custom OpenSceneGraph render engine. I'm just the art guy moving from a non-shader to a shader based render engine. A typical scene is driven at 60Hz, up to a million or so triangles/frame.
I have old assets that are textured simple boxes. I've picked one to dress up, posted here. I'm considering breaking the model up as shown in the attachments, ditto material and texture breakdowns. Is this a reasonable approach? I plan to build the textures and modular elements as I've shown. Maps will include diffuse, normal/bump, metalness. The model is rendered about 12 feet from the viewer (close) to a couple miles (distant).
I plan to bake my high-res maps back onto the simple (or simplified) box geometry. I would probably keep the balcony contours, but lose the individual window frames - making the wall ~114 triangles. Window trim is ~948 tris. Most buildings would have 4 sides, plus a simple rooftop, so <5000 tris overall, even at 'high detail'.
Questions abound:
1. Do I create one large glass plane for the windows, assuming the render engine doesn't have a problem with drawing the trim bits over the windows (this has been a problem with overlapping geometry in the past)? Does the single plane approach limit what I can do to make some of the windows illuminate at night (UVs, materials, etc)?
2. Note the window and balcony trims are very angular. I've read that making bump maps for 90 degree geometry can be or is problematic. Does this geometry need more detail, or would it be more straightforward to just build the normal maps in Photoshop (Quixel DDO)/other bump map editor?
3. Should the balcony be created as a single trim, or do I break out the brick and stone? The feature is about a foot tall.
4. Assuming I am on the right track (that would be amazing), how would this approach/plan change for a more complicated model..?
5. How would I add a grunge map to age the lower sections of the model without putting this into the diffuse map; via a grunge map or decal or?
6. Is it reasonable for the graphics programmer to insist all textures fit into a single UV set (texture bindings are middle of the road in terms of state change cost)?
Thanks for checking in.
Window and balcony close-up
Material breakdown
Model wireframe
Texture breakdown
Original texture map; center portion is used on the model shown
Model using legacy texture; note mismatch @ top; front, angled and side view to show geometry contour
Replies
I'm working on the assumption that you need to make a dirty great city in what follows..
The tricky bit is the huge range of possible view distances. Up close there's all sorts of fidelity problems associated with trying to keep it on one texture and at a distance you'll need loads of geometry to support atlasing or multiple materials.
So.. Probably..
Tiling maps and a fair bit of geometry up close and at a distance you'd ideally bake the lot down to a small map (or lots of buildings to a single map) and use boxes for meshes.
Substance designer supports normal map rotation in bakes, simplygon can also handle it.
For the grunge etc. You can use a variety of techniques to mask stuff on. Given that you're looking at massive view distances and presumably a shit load of buildings it'll probably work out better to use texture based masking than to use vertex color blends (geometry costs really add up when you're looking at thousands of objects) that's one for the render programmers to profile and answer though.
The main thing here is going to be constantly assessing performance. Get meshes blocked out with simple textures and build your city. Then with the help of render programmers start looking at how aggressively you need to LOD and where the bottlenecks occur. This will inform you much better than anyone here can as to which direction to take.
For the windows, don't use transparency. Too performance hungry, and too prone to sorting errors. (i.e. http://wiki.polycount.com/wiki/Transparency_map#Sorting_Problems) Instead use the Metalness to create mirrors out of the windows.
At night you can use Emissive for generic interior blobs (distant view) and you could replace it for closeup viewing with a parallax cubemap solution (https://simonschreibt.de/gat/assassins-creed-3-windows/ thanks @SimonT!)