Home Technical Talk

Bake normals from mid-poly model with a normal map.

cubrman
polycounter lvl 6
Offline / Send Message
cubrman polycounter lvl 6
Say I have a mid-poly model, that was made out of a high-poly one. I don't have the high poly one, only the mid-poly. Say I want to make a low-poly model out of my mid-poly one. What is the best way to bake normals for the low-poly model?

Here is what I tried:
1. 3ds max Render To Texture _NORMAL MAP_ from a mid-poly model with normal map applied.
2. 3ds max Render To Texture _DIFFUSE MAP_ from a mid-poly model that has normal map assigned to an albedo slot.

I test the final result in Unity, because that is the target platform. The model also has the entire set of textures required for PBR rendering, each of which I baked using the second (2) approach (don't think there should be any difference with other maps). Here is what I get:

The (1) approach gives correct normal maps (obviously) but the final result looks very different from the original model.

The (2) approach looks incredibly close to the original mid-poly model, but sometimes has incorrect ligting.

Just want to stress that only the normal maps are different between the two models, everything else is absolutely the same.

Here are the screenshots. The original mid-poly model is in the middle, the (1 correct) model is on the RIGHT, the (2 incorrect) model is on the LEFT:



I've spent the last 24 hours tweaking this and testind different approaches, I made sure 3ds max computes and exports normal, tangent and binormal vectors as well as smoothing groops and I think I am going a little bit insane. Is there a way to get the best of both worlds?


Replies

  • Noren
    Options
    Offline / Send Message
    Noren polycounter lvl 19
    You'll  want to use method 1, method 2 will only work in some cases (e.g. just flat surfaces and hard edges and UVs not rotated).
    Then you can't bake tangent space normals for Unity in Max. (As far as I know.) Max uses a different tangent space than Unity, which used to have its own method and recently changed to Mikkt. One way around that would be to bake an object space normal map and convert that to the respective tangent space in Handplane. 

  • cubrman
    Options
    Offline / Send Message
    cubrman polycounter lvl 6
    Wow amazing piece of information right there, thanks a lot!

    Could it be that the tangents are messing the whole thing?

     And still, is there a more advanced baking method that gives a higher quality while still stays correct as method 1?
  • Noren
    Options
    Offline / Send Message
    Noren polycounter lvl 19
    It's not about quality, it's about a synchronized workflow. There are some threads pinned here and you could also check the Polycount wiki for more info.

    Like said you could bake an object space normal map and convert that with Handplane (which is free, I think) or you could use another software to bake your normals e. g. substance designer / painter.
  • cubrman
    Options
    Offline / Send Message
    cubrman polycounter lvl 6
    Hey, I just thought abut Substance Painter too, but I can't find if it can bake normals not just from a model, but from a model that also has normal maps. Do they have such feature?
  • Noren
    Options
    Offline / Send Message
    Noren polycounter lvl 19
    My bad! I don't think so. I know there was some talk about that on the Allegorithmic forums, but I can't find a way to do it at the moment. Maybe someone else knows more in that regard. 
    So the only method I can offer at the moment would be Max object space + Handplane.
    Xnormal perhaps, but it has been ages since I used that.
  • cubrman
    Options
    Offline / Send Message
    cubrman polycounter lvl 6
    I might be crazy, but is it possible to use the normal map of the mid-poly model to convert it into a high poly model somehow? My attemts were pittiful though and I can't find any info about it on the web.
  • Noren
    Options
    Offline / Send Message
    Noren polycounter lvl 19
    Don't think so. At least I've never seen a consistently convincing creation of displacement maps from normal maps.
  • cubrman
    Options
    Offline / Send Message
    cubrman polycounter lvl 6
    Imagine this: I actually managed to find a solution! And not just a visual hack but a robust system. A pure chance led me to stumble across this material for SP:

    https://share.allegorithmic.com/libraries/2434

    I checked it and it perfectly solved my case! Read my comment (account name 'Maya Gameworks') on the page I linked to get the idea of how I did it.


  • Noren
    Options
    Offline / Send Message
    Noren polycounter lvl 19
    Great find, thanks for sharing it!
    Provided the normal map for the midpoly was baked in Max (renders of the mesh with the applied normals look fine) you could bake the world space normals directly in 3ds max, though. The different tangent bases matter only for tangent space.
    Have you tried the Handplane workflow? Should be quicker.
  • Eric Chadwick
    Options
    Offline / Send Message
    Yeah using Substance Painter like this is double the work. Just bake in Max to World Space.

    And why don't you have the high poly source model? If this is someone else's model you should seek permission to use it, or at least give them some attribution.
  • cubrman
    Options
    Offline / Send Message
    cubrman polycounter lvl 6
    Eric, sure I am using someone else's model, there is a tone of free high-quality models online these days, being a terible artist I have no other choise left but to use them, to the best of my ability. If you are so concerned about the copyright, you can go to the page I took the model from and see for yourself if I broke the law anywhere:
    https://www.turbosquid.com/FullPreview/Index.cfm/ID/1082345?ID=1082345&seo=0

    Noreon, as it appears the entire process can be done even faster by just using Substance Designer, see this thread:
    https://forum.allegorithmic.com/index.php/topic,14839.msg63607.html#msg63607
  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
    substance 5 can bake normal maps from one mesh to another - I'd use that
Sign In or Register to comment.