Normals Shading oddly when armature posed.

Hi All

I’ve been working on making some simple characters seem more hi res through the power of Normal mapping. I’ve managed to sculpt a duplicated mesh of an original low res character, I’ve baked out the normal map and it all looks good when applied to the low res character but the moment I pose the character I get some funky shading on the deformed areas, see the attached image.


All the UVs seem correct and all of the Faces have been recalculated

Any advice would be greatly appreciated.

Tom

Those are object space normals which don’t work for models that deform. Use a tangent space normal map instead. :slight_smile:
I understand it can be done. But it requires specific circumstances.

Hi, I’ve just tried that and it results in the same thing.

Can you show an image of the model with the tangent space normal being deformed, and the node set up for that too?

I assume you’ve set the coordinates to tangent, instead of world, yes?

And baked out a tangent space map?

Sorry I did try and post this earlier but my browser bugged out on me for some reason. Yes I neglected to change the Normal node to Tangent Space after I rebaked to Tangent Space, it does indeed now work.

NEW PROBLEM:

I’m now getting these funky lines appearing near seams when I bake it, by this I mean the things that look like chicken bones.


Do those artifacts correspond with areas where the high and low detail meshes intersect and clip each other?

If so, the low poly may need to conform to the high a little closer. If you want to stick with just 2 models ,you could try expanding the low detail mesh a little in those areas so it covers the high.

Adjusting ray distance may make the problem worse though. The more you increase it the more of the surrounding area will be picked up.

A cage will give more control over how the rays are cast.

The image below on the left shows the intersection


The image on the right shows the Normals when I bake to the image node i.e. High res model selected only and “Selected to Active” unchecked. This yields a better result.

Just to confirm that my set up is:

• Low Res model with a Sub Div Modifier set to 1 level.
• Same model duplicated. No Sub Div but a Multires set to 4 subdivisions.
• Both models have simple diffuse materials but with the low res version featuring the necessary selected image node to bake to.

Methods used so far:

  1. I select the high res and then the low res, then do the “Selected to Active” method with Margin set to 16 and Ray set to 1. This results in the ‘Chicken Bone’ look.

  2. I select the high res version only and uncheck “Selected to Active” margin 16 (I understand that the margin is just a bleed) This results as in the right hand image above.

I’ve seen so many tutorials from so many versions of Blender that I’m getting a little lost in it all now.

If your not using selected to active then you’re baking to the source object. Which is a common practice for a diffuse only texture, where you bake an AO pass using just a low poly model. In this case though, you want the normal map information mapped to the low poly model from the high, not to itself. I’d be surprised if that normal map looked correct on the low poly.

I don’t want to complicate things more, but have you tried using a cage mesh? Cycles has had that capability for a while now.

Failing that have you tried reducing the ray distance? Too high a value can result in the rays picking up areas they shouldn’t. If you were agreeable, a blend file might be more useful to anyone reading this thread. Although some things can be easy to spot from a few images, there are occasions where the best way to sort a problem is with access to the source.

Well the low poly and the high poly model look almost identical now:


I guess it works because both models are the same but the high res has the Multires modifier applied and the low res has a Sub surface modifier applied.

As long as you’re happy with the end result that’s what matters. But isn’t it defeating the purpose of baking if you’re going to apply sub-surf to the low poly anyway. Is there still a good reduction in polycount compared to the source?

Absolutely there is a great reduction. The character is only 791 faces at base level, with the sub surf of 1 level it’s 3151 faces, compare that to the multires version of 193920 faces and it’s a no brainer.

These are for a crowd scene so they need to be relatively low res but were running really well with the sub surf of 1 anyway, so using normals to generate a bit more detail is perfect. When you consider most game characters are over 50000 polys it’s quite satisfying to know that I’ve got a good level of detail out of the normal map, they’ve got veins on the backs of their hands, totally unnecessary but I did it anyway to see if it would show up.