Home Technical Talk

Baking round, hard edges with blender's multiresolution modifier

OblongUV
node
In blender when baking with a multiresolution modifier from this highpoly:

The baked normal-map on the low-poly looks like this when using "Bake from multires":


These are the UV seams:


I thought it had to do with UV seams first, but it's unable to bake round edges anywhere at all, anywhere on the model. I noticed that soft, organic models looks great but it doesn't seem to bake hard-surface properly at all. Is the multires modifier not meant for hard-surface or am I doing something wrong? I bake from subdv level 5 to level 0 if that matters.

Replies

  • pior
    Options
    Online / Send Message
    pior grand marshal polycounter
    FWIW, no issue whatsoever in 3.1

    High using Multires, Low, Low with baked normalmap.



    So while that doesn't help much with your issue, perhaps you could try that version.

    I didn't activate the "bake from multires object", as I don't understand what it is supposed to do (enabling it in 3.1 removes tangent space options, which makes no sense to me).
  • OblongUV
    Options
    Offline / Send Message
    OblongUV node
    pior said:
    FWIW, no issue whatsoever in 3.1

    High using Multires, Low, Low with baked normalmap.



    So while that doesn't help much with your issue, perhaps you could try that version.

    I didn't activate the "bake from multires object", as I don't understand what it is supposed to do (enabling it in 3.1 removes tangent space options, which makes no sense to me).
    Ah sorry might have been a bit unclear. I'm using "bake from multires". Are you using a cage/extrusion here? I'm trying to specifically use "bake from multires" because it can bake it without having to bother with a cage. But so far I've only found it useful for organic because it does not work well with creasing on the raw low-poly. I typically bake with cages but wanted to try this method out.
  • pior
    Options
    Online / Send Message
    pior grand marshal polycounter
    I would say that the need to use a cage or no cage should be irrelevant to the choice of overall workflow, since both cage and cage-less baking work as expected in Blender anyways ( FWIW I did not use a cage here, and simply controlled the bake with the usual extrusion and distance settings).

    Considering that "bake from multires" seems non-functional in 3.1 (as it disables options vital for any baking, see below), I can only suspect that it is perhaps still experimental/limited in other versions - hence the limitations you are seeing, maybe.



    IMHO using a cage or no cage shouldn't be a factor influencing your workflow. And a workflow relying heavily on using the same mesh for ingame low and subdiv source seems somewhat dangerous ...
  • OblongUV
    Options
    Offline / Send Message
    OblongUV node
    pior said:
    I would say that the need to use a cage or no cage should be irrelevant to the choice of overall workflow, since both cage and cage-less baking work as expected in Blender anyways ( FWIW I did not use a cage here, and simply controlled the bake with the usual extrusion and distance settings).

    Considering that "bake from multires" seems non-functional in 3.1 (as it disables options vital for any baking, see below), I can only suspect that it is perhaps still experimental/limited in other versions - hence the limitations you are seeing, maybe.



    IMHO using a cage or no cage shouldn't be a factor influencing your workflow. And a workflow relying heavily on using the same mesh for ingame low and subdiv source seems somewhat dangerous ...

    I became interested in it because it was able to bake the armpits here without any artifacts. It produces very clean normals quite easily as long as the topology is okay. Using cages I always have trouble on sharp angles like this that are not cage-friendly. If it doesn't work with hard-surface/creasing I will only stick to it with organic.


  • pior
    Options
    Online / Send Message
    pior grand marshal polycounter
    It's definitely interesting for sure.

    Looking at it again, attempting what you describe with 3.1 leads to a result similar to what you are getting : a bake capturing the smooth profile of the normals from the multires high, but arranged according to the geometry of the low. But this happens only if "bake from multires" is turned off. With it off, nothing bakes at all.

    In 3.6, actually enabling "bake from multires" does produce a result, but that's something else altogether (a faint surface information) (right) : 



    Overall this feature feels like a byproduct of Displacement baking, specifically meant to capture surface information to be later applied to a subdivided low. I would assume that it would only be possible to get something like what you describe if the hard high had first been rebuild using a shrinkwrap - which of course would default the purpose of what you are trying to do.

    If anything I would say that the result it gives (with the option turned off) is quite interesting - it may not capture the roundness of the hard high, but at least it produces something perfectly following the geo of the low, without waves.


    Now whether or not it could be leveraged accurately on a full asset is another story. It doesn't look much different than simply using a "pseudo high" made of a copy of the low with hard edges and a round edge shader.
  • OblongUV
    Options
    Offline / Send Message
    OblongUV node
    pior said:
    It's definitely interesting for sure.

    Looking at it again, attempting what you describe with 3.1 leads to a result similar to what you are getting : a bake capturing the smooth profile of the normals from the multires high, but arranged according to the geometry of the low. But this happens only if "bake from multires" is turned off. With it off, nothing bakes at all.

    In 3.6, actually enabling "bake from multires" does produce a result, but that's something else altogether (a faint surface information) (right) : 



    Overall this feature feels like a byproduct of Displacement baking, specifically meant to capture surface information to be later applied to a subdivided low. I would assume that it would only be possible to get something like what you describe if the hard high had first been rebuild using a shrinkwrap - which of course would default the purpose of what you are trying to do.

    If anything I would say that the result it gives (with the option turned off) is quite interesting - it may not capture the roundness of the hard high, but at least it produces something perfectly following the geo of the low, without waves.


    Now whether or not it could be leveraged accurately on a full asset is another story. It doesn't look much different than simply using a "pseudo high" made of a copy of the low with hard edges and a round edge shader.
    If you're using bake from multires, what it considers low-poly is what the Viewport Level is in the modifier. What's considered the high-poly is the render level in the modifier. This is the settings I baked this with: 


    Isn't this workflow pretty default in zbrush though? Was a long time since I used it but I remember you could bake like this, not projecting with a cage but interpolating subdivision levels, not sure if it's the same issue there on crease/hard surface.
  • pior
    Options
    Online / Send Message
    pior grand marshal polycounter
    Such surface information transfer is typical of rendering pipelines leveraging subdivision+displacement. This is IMHO precisely why the bake from multires follows the geo of the low : the subdivision at rendering time would take care of the rounding of the base model, and then the displacement is applied for the fine details. So outside of the weirdness of the tickbox behavior, I would say that what you are getting is exactly what should be happening.

    Leveraging that sort of baking for game assets could probably be done, but I suspect you'll run into more unexpected issues very fast on an actual asset - like for instance details not quite appearing where they should be.
  • OblongUV
    Options
    Offline / Send Message
    OblongUV node
    pior said:
    Such surface information transfer is typical of rendering pipelines leveraging subdivision+displacement. This is IMHO precisely why the bake from multires follows the geo of the low : the subdivision at rendering time would take care of the rounding of the base model, and then the displacement is applied for the fine details. So outside of the weirdness of the tickbox behavior, I would say that what you are getting is exactly what should be happening.

    Leveraging that sort of baking for game assets could probably be done, but I suspect you'll run into more unexpected issues very fast on an actual asset - like for instance details not quite appearing where they should be.

    I see, it makes sense. Thanks. I'm mostly trying to make game-assets. I think this might still be useful but not in as many cases as I was hoping, but it's good to know about. And if it's not for real time it seems great since you could use something like subdiv 1 as the "low poly" and it would look good depending on use-case.
  • pior
    Options
    Online / Send Message
    pior grand marshal polycounter
    Well I think it's an interesting approach for sure - really quite equivalent to baking a round edge shader on a hard-edged Low. It would be interesting to see if an asset could be done fully that way (knowing that the Low would need to be dense enough to not have overly facetted cylinders).

    One worry is the triangulation though, as it would have to be done after the fact hence requiring to chose the "Fixed" method in this case.

    Left : low + multires 3x with creased edges
    Middle : raw low
    Right : low with the result of normalmap and AO bakes "on itself" (but oddly enough, without enabling "bake from multires").



    The one problem I see is the way edges shifts because of subdivision : 


    Definitely something to experiment with on the side with not-so important assets.

  • OblongUV
    Options
    Offline / Send Message
    OblongUV node
    pior said:
    Well I think it's an interesting approach for sure - really quite equivalent to baking a round edge shader on a hard-edged Low. It would be interesting to see if an asset could be done fully that way (knowing that the Low would need to be dense enough to not have overly facetted cylinders).

    One worry is the triangulation though, as it would have to be done after the fact hence requiring to chose the "Fixed" method in this case.

    Left : low + multires 3x with creased edges
    Middle : raw low
    Right : low with the result of normalmap and AO bakes "on itself" (but oddly enough, without enabling "bake from multires").



    The one problem I see is the way edges shifts because of subdivision : 


    Definitely something to experiment with on the side with not-so important assets.

    I too had hurdles with the triangulation initially, but I solved it by baking it to a quad only mesh first using the "bake from multires" setting. Then I would to a regular, selected to active cageless bake using extrusion set to 0.000001m and stacking the triangulated mesh on the quad-only mesh with the normal-map, and baking that to triangulated. Baking normals takes normal maps fed into shader into account. I managed to automate the process with python. From what I can tell, if you can use a subdivided mesh as highpoly and you don't need to use creasing this works great, so a lot of organics.
  • okidoki
    Options
    Offline / Send Message
    okidoki polycounter lvl 2
    pior said:
    It's definitely interesting for sure.

    The main differenc i see for 3.1.2 and 3.6.9 is.. the island margins are baked a bit differently bit seem not affect the model itslef at all.



    Additionaly: since this was done with a subdiv level of only 3 and smooth shading and no seams at all.. Could it be that using 5 and maybe flat-shading leads and maybe too small islands margins had lead to this ?? Also i tried to model some curvation on this "button thing" like so:


    Maybe some more information about the actual geometry, UVs  and other settings ( or the actual used blender version) might help to solve this even better ? 
Sign In or Register to comment.