Home Technical Talk

[workflow/best practice] 3ds Max/SP/Unity Hero Asset Help

ColMatrix
polycounter lvl 2
Offline / Send Message
ColMatrix polycounter lvl 2
Hi everyone,

Thank you for taking the time to read my post. I am not convinced with the recommendations of the Unity developers I am working with, that's why I am asking you all for some assistance and guidance. Although I do realise, if I implement a hybrid atlas technique using 4 Map Channels, they will have much work setting this up in Unity, and I have work convincing them.

I am creating a Hero Asset, which belongs to a series (all similar brand colours). Where I need help, is with the technical aspect of the workflow. Below are a few details with the current setup (* unavoidable):
  1. Usage: PC VR, and untethered VR.*
  2. Programs 3ds Max, Substance Painter and Unity.*
  3. Unity Universal Render Pipeline (Metal Standard)*
  4. 95% Hard Surfaces*
  5. SP: 4 Texture Sets
  6. All UV islands have their own unique UV space.
  7. There are roughly 40 different materials, ranging from coated metal, stainless steel, rubber and plastics.*
  8. LOD's will be implemented*
  9. Certain objects will have a neutral grey, allowing Unity to assign the colour*
  10. Base colour, Normal, Metallic, Glossiness, Opacity, Emmisive and AO (UV layout dependant) maps will be used* 
I am using 4 texture sets to avoid a disastrously low texel density, that being said I already have a miserable texel density of 4,6 Geometry/Pixels on a 4096 x 4096 texture. I am wishing to increase the textel density, obviously without needing 10 texture sets due to draw calls. 

Thoughts/solutions

I have the following methods in mind, which have pros/cons. 

  1. 1 UV map channel / unique UV islands / most flexible / worst texel density / floating geometrie unneccessary.
  2. 2 Map channels. 1 für atlas texture with repeatable muster and 1 for details / overlapping UV islands / higher texel density / floating geometry required / less texture maps / no AO map possible. 
  3. Objects with same material on one repeatable texture / UV islands have unique space / UV islands are also placed outside U1V1. (Here I have issues in SP with the world space normal bake - soluions?) / higher texel density / floating geometry needed. - of course, few objects of different materials will share the same texture space.
  4. Hybrid atlas, mixed with details / floating geometry needed / overlapping UV's / no AO map / better texel density / possible 2nd map channel needed. 

Number 3 above is the recommended process from the developers, as mentioned above I am having issues within SP. Number 1 (I think) is the easiest, most flexible and offers more options in creativity.

Many many many thanks for your help.

Replies

  • Alex_J
    Online / Send Message
    Alex_J grand marshal polycounter
    it's a big question because you are asking what is best for a project but nobody knows the project, and all the missing context of the project will matter.

    usually hero asset means it gets its own resources, that's what makes it special.

    probably help people better understand the question to show images of the assets in question.

    I'd also want to consider what stage the project is and make decisions with that in mind. There is not a lot of point digging into the minutia of optimization if there is high chance asset needs will change. If it is possible assets change then keeping things separate may be best. Then once you are certain what is staying in the project, it is easier to consolidate with optimal solution.


  • ColMatrix
    Offline / Send Message
    ColMatrix polycounter lvl 2
    Hi Alex, thanks for messaging back. I am aware it is a big question, and believe me, it is a last resort to ask for help here, but I have no one else to turn too with more experience, other than the internet, and I consider you guys the best in the industry!

    We can think of this as a showcase, similar to how you might showcase a car, with the doors, bonet and boot being interactable etc. 
    The developers are supposed to be ready to start testing the first asset. The only thing, from my side that is missing is the animations, LOD's and floating geometry (if needed), these will be tackled later, my current issue is holding me back.

    I have delivered the first test from #1 in the list above. Afterwards #3 is recommended by the developers. Now Iam standing at a fork in the road, how to progress with the placement of the UV's, how to solve the artifacts with the World space normal in SP. 

    Each attached screenshot is a texture Set.

    Thanks again

  • Alex_J
    Online / Send Message
    Alex_J grand marshal polycounter
    sometimes if one person answers then others dont, but i am not the best person to actually answer this so hoping some more experienced enviro artist might chime in. I just saw that there is some missing information might be helpful to have for the question.

    I can only make a few general suggestions:
    since this is mostly objects which can work from tiled materials + decals + trim sheets, I think sticking to that setup as your default will give you the most texel density per asset.

    if you group things by material type (e.g. metals, woods, concrete, etc) that may cut down on the amount of maps you need. For instance if all your metals will have same roughness, then you dont need maps for that. But this depends on the fidelity and style you are going for.

    I havent used unity in ages but what I do in unreal I think should be transferable to unity, for environment assets which dont need unique maps, I just use a world space projection and then you dont even need to UV the assets and they'll all have the same density. This obviously can only be used for certain types of things but it might make sense for things like your panels if it just has some low detail, noisy tile.

    As soon as you want edge wear on an model though then you either need unique UV's or custom shader. That is where having a modular kit of uniquely unwrapped meshes may be best.


    Again, I am not the expert on these things but since nobody else has said anything I wanted to say as much as I can, hopefully its some use.

    if you are working on getting the first iteration out the door and intend to go through more iterations, i'd suggest not to let this become a blocking issue since it is a question of optimization and probably isn't actually blocking the primary goal which is to have some models available for initial testing? If that is true, just try whatever your best idea is and then on next iteration you can try other ideas. its a good chance that by time you get to the end you'll have a pretty different set of requirements compared to what you initially planned on so if you come up with a master optimization strategy now it may either get you into a corner you don't want to be in, or just burnt a lot of energy for little effect.

    just repeating myself but its very common problem i think we all face so worth repeating.


  • ColMatrix
    Offline / Send Message
    ColMatrix polycounter lvl 2
    Thanks Alex, some interesting points there to take into consideration. Have a godo one :) 
  • Fabi_G
    Offline / Send Message
    Fabi_G high dynamic range
    Hi! You could use trims and/or tiling textures to get good texture resolution, combined with a unique AO and other masks for variation. Maybe that's one of the solutions you wrote. Else, does the project not have existing benchmark assets to check and compare too?

    To allow for parallel work, proxy meshes could be handed to the developers, which then get later replaced by the refined meshes. Generally I would try to get meshes in early and test the experience, to ensure the scale and placements feels good for the user. Unless it's an existing product with set dimensions.

    Good luck!
  • ColMatrix
    Offline / Send Message
    ColMatrix polycounter lvl 2
    @Fabi_G, thanks for joining and sharing your thoughts!

    We have a partial benchmark from a previous project, but for this project PC VR is possible - which changes everything. The assets is based on a real product and has exact measurements.

    Previously I used 2 Map Channels, one for repeatable textures and one for non-repeatable (details). These were both Atlas's but without AO, AO woud need a further Map Channel. Floating geometry was not used, could have been implemented with enough time. This was good and worked well as the repeatable texture was used over multiple hero assets, but not all objects of the asset benefitted from this as many UV islands were within a 20px x 20px space and rubber und such materials had no detail. There is much wasted space here I know, but to give all parts the texel density they deserved was not possible. This project was for a VR mobile device, therefore performance was at a minimum.



    Next step...?

    I think what you said Fabi_G is one of my possible options I expanded my thoughts below. By all means please share any thoughts criticisms:

    Map channel 1: single repeatable material (for example a specific metal) a big disadvantage the object count will increase (increased draw calls) as the material is tileable over all UV spaces, only objects with this material can have the same unwrap modifier applied. Fewer objects with different materials, can be placed in the U1V1 space or a trim sheet (right?)...divided by how big the UV islands/objetcs are. This methods also increases the amount of textures - but they will be reusable with other Hero Assets in the series.

    Map channel 2: Lightmapping (reserved for Unity)
    Map channel 3: AO, right?
    Map channel 4: Atlas for floating geometry and details as seen in the 2nd image above.

    I was hoping to avoid all the map channels and floating geometry...I assume with so many objects and a desire for a good texel density this is unrealistic.

    Any suggestions or pearls of wisdom to share?
  • Shrike
    Offline / Send Message
    Shrike interpolator
    Using standard shader is in most cases not very good imo, generally using classic Albedo etc full stack is not very efficient but for a hero asset can make sense of course. For something like this that dosn't make much sense. You want to use a shader which has tiling support and then use maps which don't rely on resolution and use geometry for the rest. Baking a normal on this will be very low res and probably look worse than without. Ideally the company needs a suitable shader setup for this.

  • Fabi_G
    Offline / Send Message
    Fabi_G high dynamic range
    Hi! Not sure what I'm looking at with the atlas you shared, but it isn't fit for tiling by scaling the UV coordinates. I would use multiple (smaller sized) textures and scale the UV0 coordinates in the material to achieve the desired texel density (well, or you scale the UVs directly in your modeling app). You could use ID masks (UV1) or vertex colors to mix multiple texture sets in the same material.

    But are you really limited by draw calls here, or is this just an assumption? Best figure that out before optimizing for nothing and making things more complicated than they have to be.

    Since the lightmap UVs are unique anyways, why not use them for AO and other masks?
  • ColMatrix
    Offline / Send Message
    ColMatrix polycounter lvl 2
    Hi Thank for the help and instructive replies. 

    @Fabi_G I shared the texture to assist in explaining a point/thought - the texture itself was not repeatable (just as you say), the areas contained overlayed UV islands.

    What you describe, will be my next process, I have the geometry already setup for different object materials (rubber, plastic, stainless steel etc) using Material IDs to assist in masking in SP (ID Baker). I am unsure how to combine texture sets within SP? I have been unsuccessful in the search to this questions, would you mind sharing? (assuming I have not misunderstood).

    Draw calls, is an assumption on my part. Just wish to make it as efficient as possible from the start. I am told, to wait and see. I am pretty much in a dark room with a torch - able to navigate as I bump into things. I was instructed to make it as high as possibile and it will be reduced based on the requirements, for example PCVR has different requirements to mobile VR therefore Unity will scale down/up accordingly. I have on my side certain limitations, but the main limitation is the texel densityx, which needed to be addressed (hense this post). 

    Thanks again for the shared info ;)
Sign In or Register to comment.