Seeking suggestions for my environment workflow {pictures included.}

polygon
Offline / Send Message
Krato polygon
Hello again!

I've graduated to the next level in my building design pipeline and I feel like I am getting closer to having a working flow. However, I still have some issues that I'm not sure how to resolve. Hopefully the wise people of this community can help me out!

Let's begin with the objectives of my model.
-The player is supposed to be able to zoom into the model from above and the respective floor's exterior should fade out leaving only the actual interior floor visible. As a result, I have an exterior group and in interior group of meshes for the top floor and the first floor. 
-The people of the city/town should be able to open the doors, interact with objects inside, go up and down stairs. 
-I want the "exterior assets" (the logs, the lamps, the bucket) to be part of this prefab but also be independent enough that I can use them in future projects or even placed within the scene. 

1.) Below is the .fbx file pulled apart in Unity. I have a very basic understanding of Unity at this time. I grouped the exterior/interior floors and other parts in Blender so I could consolidate their UVs. Exterior_assets, floor_first, floor_second, and stairs all have their own atlases. Any alternate workflow suggestions?


2.) I have been running through the texturing process in Substance painter. So far it's fine. Although, as shown in image two, I'm not sure this is the best way to texture all these smaller meshes like the bucket, logs, metal sheets, etc. (potential solution #4)



3.) How can I do this^^^ differently? I like that I have consolidated this building down to 6 maps. Could It be reduced to fewer maps? Additionally, is there a superior way to work on the exterior assets to allow them to be part of this prefab but also independent enough to be used in other assets? I may have answered my question, I googled this video and it seems encouraging: 

4.) I could potentially make all the smaller items separately and than put them together in unity and make a prefab there. With that in mind, that leads to the final question, is there a better way of doing this:


I started working on this with the above prefab joining idea in mind. I can't think of a better method of working on all these parts shared in the map, it feels messy and layer intensive. Any suggestions or is this the best way to do it?  (note I do want to keep these assets consolidated on the same map for efficiency.)

5) BONUS (woo!) Potential graphics issue . The interior ground floor and the exterior walls share that space and they have this affect. Will that be an issue down the road? If so, I guess in future models I can push the exterior walls out a little bit and hopefully that will resolve that clipping issue. 

Thank you! Hopefully this wasnt too confusing!

Replies

  • throttlekitty
    Offline / Send Message
    throttlekitty interpolator
    5) "bonus" first since it's easy: that's z-fighting. Two coplanar faces give this artifact where neither "wins" in rendering since they occupy the same space. You only need to make a tiny move to avoid it in most engines. In your case you might not need that face at all, since it's from your interior floor part and would never be visible(?)

    So for larger pieces like buildings, sometimes it's better that each main texture (brick, wood, wallpaper, etc) be their own, sometimes it's better to atlas. Atlases can make creating additional modular parts easier and use a single draw call at rendertime. The downsides are that you may run into obvious tiling and need to use a second atlas if you wanted to have variation in a wallpaper pattern across some houses long after the original was created. Both minor issues, really, just food for thought. An upside to using singular textures for something like a rusted metal is that you're free to use that in scenes where the buildings don't appear, so you're not loading the whole atlas into memory. Depending on the assets, you can avoid obvious tiling a bit easier by moving UV shells around freely instead of trying to stay within the boundary on an atlas.

    There's no real hard rule on this stuff. But generally speaking, an atlas texture is better for performance compared to many smaller textures. But loading in many atlases to only use a small portion of them is a situation better suited for smaller asset-oriented textures. Also consider if a given texture would be better off on it's own if you need to scale it down too far to just make it fit and end up with nasty resolution mismatches.

    Just a small correction on terminology: we refer to the textures/images themselves as the maps (diffuse/gloss/normal/ao/whatever). Calling the texture sets "maps" will cause confusion. Most of us would refer to those teture sets more generically as materials or surfaces, being a collection of maps and actual shader parameters and magic.

    So.. how many materials do you need for an object? Is there a thing as too many? There's no one catch-all answer, it's always tradeoffs and depends on the requirements of the project and asset.

    And for #4, no not really. I mean if you're going to be packing a bunch of different types of surfaces, you're going to need a lot of layers to do it.


    Hope some of this helps, I didn't really give you direct answers.
  • Krato
    Offline / Send Message
    Krato polygon
    @throttlekitty
    No, that was really helpful. I felt like my questions were somewhat vague so your answers were perfect!

    -Z-fighting. Glad it has a word. Sounds like an easy enough fix and in this case I will probably just move the walls out a little bit since I still want the player to rotate around the ground level from above. 

    -This was really interesting to me, and it probably created more questions than answers. While I have some ideas pertaining to the things you brought up, I was wondering if you could provide an examples or more background to certain concepts.

    1.) Why would it be better to have a main texture dedicated to only one material? I can understand that related to wallpaper concept, I'm imagining you have an entire texture (I'm trying to say texture now instead of map!) covered in "wallpaper_1" and on that texture you have several islands from the x amount of wallpaper modular pieces in your design. That would allow for variation (provided the texture has variation) and consolidation of all those particular wallpaper pieces to one texture. I believe this could still be considered an atlas, since several modular pieces are hanging out on on texture. Is all of this accurate? 

    2.) Might as well bring it up since we're on the topic. What exactly is an atlas? Don't worry I did google it and look at images. I feel as If I am using my terminology incorrectly here as well. 

    "In realtime computer graphics, a texture atlas (also called a tile map, tile engine, or sprite sheet) is a large image containing a collection, or "atlas", of sub-images, each of which is a texture map for some part of a 2D or 3D model."

    Was I incorrect in calling those above texture maps atlases? If I was to stack all of those separate textures together into an even larger combined texture, would that be more honest to the atlas name?

    3.) Theory of an Engine's map loading mechanics. This is something that I struggled with for a bit, I think I have a better grasp of it now but I by no means have read anything concrete regarding it yet. You mentioned above that having an atlas load in and only using a part of it is inefficient, I'm picturing an atlas like this . I can imagine that would be very wasteful, since I assume that image is massive and if you only use the two bottom right wall faces than the rest was not put to use. However, the meat of this question pertains to how loaded textures are used. For instance, If I was to use the map I provided for all those various objects above, If I place say... that yellow rusted sheet metal in/on a building would that texture now be loaded in the engine and all the other objects sharing it (if used) would simply call back to that texture that was already loaded to support the sheet metal; or would they continue to load in new identical texture maps only to use the part where their specific island was placed? 

    4.) Tailoring these questions to my current project regarding the house. Each of those textures are at a 2048x2048 level, since I don't intend for the player to get right up against the objects and instead at a minimum remain about 3-5 meters away from the surfaces, I think that resolution works. As per the usage of atlases (or perhaps they arent atlases, I'm not sure at this moment what they while I'm writing this), each of those house's structures (first floor/second floor/stairs+balcony) will have their own texture sets. The exterior extraneous stuff (bucket, lamps, etc) will be a different texture set entirely and in Unity I will put them together with the houses and make prefabs. I intend to have a village of 20+ building types and this village will have multiple variations of houses joined with extraneous assets to create prefabs. I aim to create unique texture set for each buildings' exterior / interior per floor, in addition to creating more "asset_packs" that could include things like different types of lamps, tables, beds, etc. Any suggestions regarding this?

    I hope these questions made sense as well, I know some of the stuff comes off as somewhat vague and I will sooner or later learn this stuff. As of right now though, I've only been doing this since April and I'm trying to soak up as much as I can.

    Edit: I've been watching this video as well: 
  • throttlekitty
    Offline / Send Message
    throttlekitty interpolator
    0) Terminology in 3d is a total mess. map and texture are the same thing :)

    1) Here's a quickie example of some of what I was talking about. I have six separate sheets using different areas of the metal texture. I could have used a single quad for the whole surface mapped to use the whole texture. In the end, I'd combine this 3x2 + the yellow trim into a single object, and make several variations on it. With the variations I have the freedom to move UV shells around as much as I want. Note that I'm taking advantage of a tiling texture by going outside the 0-1 space, something you can't do with an atlas sheet without cutting up your geometry.




    And in your example, having a series of different wallpapers tiled together in an atlas is totally valid too. Like I said, pros and cons. I guess in my head I'd call that a "sheet" instead of an atlas, no real reason why.

    2) An atlas is just a bunch of smaller textures packed into a single image, you've been using the term correctly and it's what you were doing in the first pics.

    3) Textures get loaded in memory once and referred to by anyone wanting to use them.

    4) Sounds like you've got the process down pat to me. Reasonable and responsible texture use and modularity! You may want to dig through some of the stuff in the wiki on modularity to get some ideas. I'd suggest identifying materials that will be common across all your prefabs and putting those into their own atlas. With practically any sets of structures, there's mass material re-use happening. Like that wood scaffolding in the first image, if it's something you'll use a lot, it may be worth expanding into it's own atlas of wood and metal chunks.
  • Krato
    Offline / Send Message
    Krato polygon
    @throttlekitty

    Thank you for all the advice, it has been quite eye opening. I will continue to develop my work and explore these options and then once I have something of substance to share I would like to message you for further advice/suggestions/corrections. I'm at the point where I'm conceptualizing all the future steps, I have yet to actually put the ink to paper and test it out, so your continued help would be greatly appreciated when that time comes!

    And for all the solid advice you have shared with me already, thanks!
  • throttlekitty
    Offline / Send Message
    throttlekitty interpolator
    Glad to help! Don't message me, start a thread.
Sign In or Register to comment.