Home Technical Talk

How to reduce normal map baking artifacts caused by low/high poly mismatch?

I’m using a Blender + Substance Painter pipeline (baking and texturing) with a low-to-high workflow: first a low-poly model, then geometry refinement, bevels, and subdivision. Since I’ve only just started learning, I ran into a problem on the simplest possible model: a cylinder. I made a basic 20-sided cylinder (0.6 m in diameter) and a high-poly version of it by adding bevels and subdivision.


When I try to bake the normal map, I get artifacts caused by a mismatch between the high-poly and low-poly models. Because the meshes diverge, the angles smooth out worse than they could.

Even though this only shows up on glossy surfaces, which I’m not planning to use, I’d still like to understand what approaches exist for solving this kind of problem and how closer mesh correspondence can be achieved. I don’t want to go with an “eh, good enough” approach, even if nobody but me will ever notice.

I found an example of what I’m aiming for: https://sketchfab.com/3d-models/curvedelements-nm-test-f2bdc226edf441609a67d82fb1a8e6c6

But I can’t get any further than LP 01 RESD. I don’t understand what repurposed normals and matching curvature mean. Any result starting from 02 would be fine for me, but ideally I’d want something like LP 02 REMC RPNM. Or am I doing something fundamentally wrong? (The tutorials I watched did not cover cases like this.)

P.S. I hope mentioning Substance Painter doesn’t make this post off-topic. I’d rather not cross-post if I can get answers here.

Replies

  • Eric Chadwick
  • Benjammin
  • maaboo
    Thanks for the reply, yes, I've read this several times. Unfortunately, it is still unclear what exactly needs to be done. Perhaps this is one of those cases where the answer is right in front of me, yet I still cannot see it at all.
  • Thanez
    Online / Send Message
    Thanez interpolator
    Oh, I remember having exactly these issues.
    I think you're ending up in this situation because you're starting with some arbitrary cylinder size, and an edge width plucked from the ether.
    Why is your cylinder 60cm in diameter? Why is it 20 sided? Why are the edges so sharp on such a large object?
    If you have answers to these questions before bake time, you won't end up in this situation.
    Model a lip-balm instead. Or a knife. Follow refs. Start with what you want to make and how big it should be. Then place it on your screen so it takes up as many pixels as you want it to. Then choose how many segments you want for the look/feel/job the model has to do.
    Then choose how wide you need those edges so they'll be captured by the lowpoly properly.
    This is a balancing act, something you need to practice.

    As for how to REMC:
    Take your highpoly, delete the CatmullandorClark, chamfer the edge a bunch.
    Now your highpoly and lowpoly are the same, except for that edge.
    If you didn't use support loops, use support loops. Or weigh the normals so they point straight out the cylinder like flag poles.
    Bake :)



  • maaboo
    @Thanez Thanks a lot. As for the cylinder and its dimension it's because it represents a real-world object: steel barrel. Actually, these artifacts shouldn't be visible at all, since the game (I’m making this prop for) uses a top-down camera.

    You can call me a perfectionist  (and that would be true) but if there is a correct way to do something (even one I may not know yet) and a “good enough” way, I will always choose the first, even if the second is faster and cheaper.

    Sorry if I caused any unnecessary fuss, but this is my first prop and it should be the best. I’ll use this as my starting point.
  • maaboo
    Not to be a lurking leecher, here is what I've got so far. I invested some more time (thanks to all, who replied, especially @FrankPolygon) and now I’m halfway to a complete solution.
    First of all, I found this topic on StackExchange. I created the same node, and closed that (ahem!)king gaps:

    I used completely identical cylinders and the only difference was subd. As you can see, the silhouette of the left is MUCH closer to the original shape (it also seems a bit cleaner) than one on the right. You don't see dark artifacts from the original post, because bevels here are too big to introduce them. But believe me, custom subd also fixes it (which is not surprising). So if another poor unlucky bastard like me ever comes along — well, not quite so unlucky, if they can at least be pointed to this thread. ;-)

    As for the second question, it is still a problem for now, but no longer quite as difficult. I connected the clue I was given in reply to the question I asked on StackExchange, namely — to bake the top face from the low-poly version — with a relevant post by @gnoop here, which says roughly the same thing.

    If someone could suggest a workflow for that, the topic would be fully resolved

  • Thanez
    Online / Send Message
    Thanez interpolator
    Happy to hear I was wrong in assuming your model was nonspecific. Sorry I've been having trouble understanding, and communicating clearly, I've been operating on less than the minimum required amount of sleep.
    I can see no technical flaws in neither your Lowpoly or Highpoly, everything seems to be baked and rendered correctly.
    The only thing left you can be unhappy with then is your Lowpoly's ability to convey the illusion of being a Highpoly. 
    I'm pretty sure what you're missing now is to chamfer the edge on your lowpoly. I suggest making the chamfer's size so your lowpoly just barely covers the highpoly's edge. 
    If that doesn't do it for you, add more segments around the circumference. 

    Really cool that you've learned about manipulating the shrinkage of Catmull-Clark. That'll come in handy :)
    As for the second question, what I think you're looking for is bevel shade baking. IDK much about it, but google does.
    Searching "Bevel shader blender" on YT: https://www.youtube.com/watch?v=BCjw5FcHO_g
    It's definitely a workflow you should have in your tool chest.

    There isn't one god-tier workflow that reigns over all the others, that will always be optimal for all scenarios. There are almost as many ways to rome as you can imagine, and they all have their strengths and weaknesses. All of these find their nieches in different CG categories because of their usefulness.
    You'll find them in people's work, generally summed up in what software they use.
    I for one prefer variations of subdivision modeling. I find it gives me the most control, the most accuracy, and takes the most amount of time.
    I don't do this for work. This is my hobby, and I am in no rush at all. I like solving the geometry puzzles. I love spending time making tiny details look good because it makes me feel good.
    If I was on the clock, I wouldn't do the things I do the way I do. Takes too much damn time.

  • sacboi
    Offline / Send Message
    sacboi grand marshal polycounter
    Nice writeups @Thanez, although apologies think I'm derailing this topic a bit but yeah I've dabbled with Blender's rounded edge shader which indeed does bear looking into for future reference, if the OP should wish to do so at some point. Anyway briefly vanilla workflow is imo fairly adequate in terms of most hard surface use cases however once complexity iterates beyond a certain 'plateau' then plugins such as the Zen tool suite specifically BBQ introduces streamlined functionality by: 

    • Setting values per edge + vertex for an entire mesh
    • Custom preset groups via various measurement units
    • Stores values in mesh attributes & embeds materials non destructively
    • One click smart preview...and much more

    For example - a current personal project that seems to output quite reasonable results minimizing edge occlusion artifacts at close viewing distances, in particular.

  • Thanez
    Online / Send Message
    Thanez interpolator
    sacboi said:
    [...]apologies think I'm derailing this topic a bit[...]

    Hah, I'm pretty sure that's the opposite of derailment.
    I would gladly spend three months on that, and I'd love every second of it.
    If a professional spent three months on that, they'd get fired ;D

  • maaboo
    @sacboi Thanks for the suggestion, but unfortunately this doesn't apply to my case, since I'm making a game model and not the render. Unless my fellow programmer creates a magic shader for Unity  =)
  • pior
    Offline / Send Message
    pior grand marshal polycounter
    [...] since I'm making a game model

    A round edge shader can be baked to texture.
  • sacboi
    Offline / Send Message
    sacboi grand marshal polycounter
    The image I posted above is but only one among quite a number of normal texture bake tests, using both Blender's native bevel shader alongside implementing third party Zen tool suite BBQ which outputs imho very nice variable radius round edged chamfers at material level, so indeed as pior said "can be baked to texture". 

    Anyhow for complete inengine renders I've got heaps of work yet left in front of me, in order too finalize that particular large scale game ready asset and to clarify was not actually rendered with EEVEE (rasturizer) or Cycles (path tracer) just a basic simple lookdev - material viewport screen capture.

    I'm now wondering about your reasoning why this workflow is inapplicable in terms of prop creation techniques?
    I'd thought the pic alone conveyed the opposite in detail.  
  • Thanez
    Online / Send Message
    Thanez interpolator
    pior said:
    [...] since I'm making a game model

    A round edge shader can be baked to texture.
    And what OP was requesting as the "second question".
    Unless I'm mistaken?
  • pior
    Offline / Send Message
    pior grand marshal polycounter
    Well, it's a vast topic. To the OP : rather than attempting to solve something that you perceive as a problem by trying out a bunch of things, I'd suggest to : 

    - provide clear screenshots of your low, high, and bake.
    - describe clearly what you would like to improve
    - provide high and low source models
    - ask people for their opinion on ways to improve things.

    This will allow people to provide you with actual relevant examples and test files, rather than suggesting things that may not be that helpful in the long run. For instance : indeed, a round edge shader can be baked down. But going down that road at such an early stage of your learning would be ill-advised IMHO. At this time your focus should be on modeling, UVs, and baking.

    I would also suggest to use a test model more complex than a mere cylinder. Nothing crazy, but at least something more representative of an actual asset.
  • maaboo
    Thanez said:
    pior said:
    [...] since I'm making a game model

    A round edge shader can be baked to texture.
    And what OP was requesting as the "second question".
    Unless I'm mistaken?
    Well, you’ve got me stumped  =) I'd rephrase it now as "how to I bake something separately? (top, edges, any part of the model)"
  • okidoki
    Offline / Send Message
    okidoki interpolator
    Also: maybe publishing this exact example  geometry would be helpful to discuss this (blend-file and also as simple exported object e.g. as OBJ)?
  • maaboo
    okidoki said:
    Also: maybe publishing this exact example  geometry would be helpful to discuss this (blend-file and also as simple exported object e.g. as OBJ)?
    You mean cylinders?  :)
  • Thanez
    Online / Send Message
    Thanez interpolator
    Wait. I think I finally understand.
    You have baked a highpoly's surface detail information into a normal map onto Model_X.
    You now have a normal map that is tangentially related, forever connected and intertwined, inseperable with Model_X.
    You logically save this normal map as Model_X_TangentSpace_Normals.png

    For whatever reason, you decide that Model_X is inferior.
    You therefore make Model_Y. It has more segments, and has some chamfered edges where Model_X doesn't.
    You don't want to rebake.
    You want to just slap Model_X_TangentSpace_Normals.png onto Model_Y.

    Is this what you mean?
    You want a Tangent Space normal map that can and will work on multiple different variations of the same model?
    I want an answer to this before I go any deeper because answering is very involved and time-consuming, and I have other very time-consuming things that I'm obsessed with right now.
  • maaboo
    OK, thanks. I think then we could postpone this topic for a while at least until I get further into modeling. I'm learning Blender, Hardops+Boxcutter and general design principles at the same time and my head is going to explode.
  • Thanez
    Online / Send Message
    Thanez interpolator
    Nono, I wanna do it if that's what you're asking for. I just want to clarify first because it's kinda involved and goes into multiple topics.
  • gnoop
    Online / Send Message
    gnoop sublime tool
    If I do Sub-D  modelling   which lately tends to become preferable for some uncertain for me reason.   The hi to low  ray tracing baking  IMO is redundant at all.  Usually Sub-D model is easy to unwrap   and bring to sculpting already unwrapped .  So baking just surface  as  world /object space  in exr   image  and then  applying  that exr  as world/object space normals   on Sub-D low-res stage even triangulated  and then doing shader/surface  bake again  now as tangent space target   makes the  whole process pretty smooth .   No need for splits.  no parts naming  puzzles .   AO renders sometimes better  as Indirect illumination  AOV .   
     Small details could be painted in Painter.       
        The way is ancient . Not sure why nobody uses it nowaday.   
    Same goes to MoI or cad done  models . Even if you have to re-do some tessellation parts   projecting  UVs back is usually simple and done together with vertex/split normals .
  • sacboi
    Offline / Send Message
    sacboi grand marshal polycounter
    "Same goes to MoI or cad done  models . Even if you have to re-do some tessellation parts   projecting  UVs back is usually simple and done together with vertex/split normals ."

    Yeah picking up on what gnoop said, a few industry guys I know of swear by CAD workflows which I suppose their inhouse pipelines may support  i.e. CD Projekt Red, Treyarch and Sledgehammer Games but obviously wouldn't know if Moi is actually included in their individual toolkits? otherwise in my opinion results can be quite optimal.



    Edit:
    OP do highly recommend too also take note of pior's advice, at this point just focus on the fundamentals. 
  • okidoki
    Offline / Send Message
    okidoki interpolator
    maaboo said:
    You mean cylinders?  :)
    Well.. if this is your object of headache.. you beveled and subdivided one and somehow you got problems with the resulting "high poly geometry" while backing.. so there might be something you did which might "not fit" according the baking process in Substance.. (maybe even the triangulation in Substance) .. 

    ..since you are struggling with this and.. ( maaboo said:)
    ..ran into a problem on the simplest possible model: a cylinder. 

    And some others already made a lot of suggestion.  ¯\_(ツ)_/¯
Sign In or Register to comment.