Normal problems

Dear members,

due to a project's requirements, a character needs to be modeled (and later animated) in different pieces of head-neck-torso-limbs. Normals for all body parts are facing out and have been tested inside Maya high quality view port. Also all normal vertex directions at the seams have been checked and adjusted properly in Maya. Character has same problem with or without normal maps assigned to him.

The character has been exported into Unity with Fbx exporter 2011.3 version. Obvious problems appear at the body part seams. Fbx file has been re-imported into Maya scene and normals of the body parts look great inside Maya.

Following tests with different settings inside Unity engine.

At the first image: Calculate Normals is unchecked(under Tangent space) Skin Normals is unchecked (under Skinned Mess Render)

At the second image: Calculate Normals is unchecked(under Tangent space) Skin Normals is checked (under Skinned Mess Render)

At the third image: Calculate Normals is checked (under Tangent space) and smoothing angle=180(combinations of different angle have been performed also) Skin Normals is checked (under Skinned Mess Render)

At the fourth image: Calculate Normals is checked (under Tangent space) and smoothing angle=180(combinations of different angle have been performed also) Skin Normals is unchecked (under Skinned Mess Render)

alt text

thank you in advanced

It's almost impossible to create perfect seams in real time shading. Normal maps need to be perfectly (and I mean PERFECTLY) aligned (see: same pixel values) from mesh to mesh. That's why character makers always put seams in the less exposed parts of the body where possible. Also, from your model I guess it has faces in sections of the body. Like the leg is cut and there is a face inside it. This would explain why activating auto smoothing all becomes weird. My suggestion? Just change the seam locations and split the mesh at more "human" places! You may remain stuck in this vortex for weeks, so if it's not absolutely necessary to have the seams in there just change it.

I think normals are stored as “Tangent-Space” but all shaders are using them to offset the eyeNormal. This cannot lead to a correct result. Mostly this is “good-enough” - but sometimes not. I am afraid you have to rewrite the specular normal shader you are using.

Hint:
Vertex Shader : Store the matrix to rotate from tangentSpace to normalSpace
Fragment Shader : Get the pixel out of normal-map and rotate it via the stored matrix. Now everything should look fine.

I think normals are stored as “Tangent-Space” but all shaders are using them to offset the eyeNormal. This cannot lead to a correct result. Mostly this is “good-enough” - but sometimes not. I am afraid you have to rewrite the specular normal shader you are using.

Hint:
Vertex Shader : Store the matrix to rotate from tangentSpace to normalSpace
Fragment Shader : Get the pixel out of normal-map and rotate it via the stored matrix. Now everything should look fine.

I’ve had this problem, or at least a seam problem on my character when imported into Unity, looks great everywhere else but in Unity it had this problem. Thought it was the Normal maps that was causing the problem but it turned out all I had to do was paint along all the edges on my texture, this caused the seams in Unity to disappear, its a pain but at least I figured it out.