Home Technical Talk

[RESOLVED] High poly Low poly - Albedo projection?

polycounter lvl 2
Offline / Send Message
cjwidd polycounter lvl 2
Simple scenario:
  1. High poly mesh contains UVs with associated normal map and albedo map
  2. Retopo to low poly mesh
  3. How to get normal map and albedo map from high res to fit retopo (low) mesh?

This is a departure from the conventional workflow - bake high poly down to low poly, then texture; it is happening in reverse.

Replies

  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
    Colour is easy,  most apps will handle that.

    Normals are harder because they're affected by uv orientation and scaling.
    In substance designer you can do normals using the texture transfer bake mode.

    Outside of designer I'm not sure what you can use - you would need to convert the normals to world space, transfer them as colour and convert them back to tangent space on the target mesh. 
     


  • cjwidd
    Options
    Offline / Send Message
    cjwidd polycounter lvl 2
    Thanks for your reply, that second suggestion is an interesting one. I'm thinking in this case, it might be worth it to just dot ring [3ds max] through edge loops of the high poly mesh to arrive at a lower poly version, preserve the UVs, and avoid baking altogether. That being said, I'm curious what others - including yourself - may think (?)
  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    3dsmax could do both. To bake color, you can bake a "diffuse map".  Normal can be baked just as it is, the data will be transferred nicely, at least it used to do it, I've done it many times in the past. However, Mikk tangent space isn't supported. 
  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
    cjwidd said:
    Thanks for your reply, that second suggestion is an interesting one. I'm thinking in this case, it might be worth it to just dot ring [3ds max] through edge loops of the high poly mesh to arrive at a lower poly version, preserve the UVs, and avoid baking altogether. That being said, I'm curious what others - including yourself - may think (?)
    It depends. 

    If you're using a tiled or non baked  normal map on your high poly then that will work - although I'd question why you couldn't just apply that to your low poly anyway

    If it's a baked normal map it'll get broken because the tangents in your mesh won't match the tangents that the normal map was baked to. It'll still technically work but it'll look like arse. 
    .. If the mesh is totally flat or has been set up specifically with this in mind you can avoid the problems but because you're asking the question I'm assuming it isnt..



    Edit.  I realise I misunderstood slightly earlier.   You can bake the normals from one mesh to another  in substance designer by simply using normal baker with some obviously named options ticked.


  • cjwidd
    Options
    Offline / Send Message
    cjwidd polycounter lvl 2
    I was able to find a solution, but it was considerably different than what was described above. The critical requirement here is that I am using a combination of Substance Designer and World Machine to generate a high res mesh that *already has a texture set*, i.e. albedo, normal, roughness. The goal is to generate a low res mesh (game ready) that these textures can be applied to. 

    Basic workflow
    1. Generate primary / secondary shapes in World Machine using various erosion tools (*WM is very similar to Substance Designer, but with unlimited resolution)
    2. Export height map from WM - and associated masks (if required) - to Substance Designer
    3. Generate secondary / tertiary shapes in Substance Designer (*it is easier to manage detail forms in Substance Designer for a variety of reasons, but most notably SD is faster to iterate at higher resolutions and has a feature set more suitable for this type of work. In addition, one can always pass data back to WM for further refinement if necessary).
    4. Export texture set from SD, i.e. albedo, roughness, and normal
    5. Import height map to 3ds Max [preferred], subdivide base shape (e.g. plane) to millions of polys (e.g. 2048 x 2048 texture = 4194304 polys), and displace (*alternatively, import height map to WM (file input node -> mesh output node)

    Zbrush Projection (w/ Polypaint)
    1. Import high res mesh to Zbrush
    2. Apply texture map to high res -> Polypaint from texture (*may need to flip texture vertically [Zbrush quirk])
    3. Duplicate high res and Zremesh to low poly variant
    4. Generate UVs -> Subdivide low poly variant to high res state (to support re-projection) -> store morph target
    5. Project -> Project All (*Dist = .1, make sure subtool colorize (paintbrush button) is enabled (*high res should appear above low res variant in the stack)
    6. Low res - albedo: Texture Map -> Create -> New from polypaint -> Clone texture -> Texture -> Export (*flip vertically)
    7. Low res - normal: Go to lowest desired subdivision level -> Normal map -> Create normal map -> Clone NM -> Texture -> Export (*flip vertically)
    8. low res - mesh: Subtool -> Export 
  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
    Honestly it sounds like you're either wasting an awful lot of time or building something horrendously complex. 

    I am left with many questions but the most pertinent one is this... 

    What are you making and why don't you want to make it in the conventional fashion?


  • cjwidd
    Options
    Offline / Send Message
    cjwidd polycounter lvl 2
    Haha, it probably sounds way more complex than it is. Distilling down from that list above is really just:

    1. Export maps from substance designer or World Machine
    2. Displace height map to mesh
    3. Re-project in Zbrush

    I just spelled it out above in case someone else might benefit, but also for my own memory. Despite how it may appear, the workflow is very fast, and 80-90% procedural, which is ideal in this case.

  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
    Grab houdini - it's free and you'll be able to to automate all the geometry creation (and probably the final bakes but don't quote me) 

    Are you making terrain type objects or prop type objects? 
  • cjwidd
    Options
    Offline / Send Message
    cjwidd polycounter lvl 2
    Yeah, I picked up Houdini a while back, watched a bunch of the Entagma tutorials, but never really got into the software. It's clearly very powerful, but I'm sort of agnostic to it right now. I've seen Michael Pavlovich go through some tutorials about using Houdini in game development, which looked promising in some respects.

    In this case, I'm making terrain type prop objects (not trying to be ironic), e.g. large rock walls. Neither WM or SD are very good at dealing with steepness, for obvious reasons, so I'm sort of using both to mitigate different feature requirements.
Sign In or Register to comment.