7
\$\begingroup\$

This problem boggles my mind. I have an animation running on a face object (imported from Blender). At a few points in the animation, the normals switch direction! It causes the mesh to blink.

Of course this animation won't work in its current state. Even odder, I slowed down the animation sample in Unity to 1 so I could isolate the frames it happens on. There are no keyframes on the face when this happens!

What could be causing this? It only happens on this one animation. I can't find anything with extensive web searching. I've also tried recalculating normals and applying transformations, but it doesn't help.


These screen shots depict the same two frames, one frame before it happens (left) and the frame when it happens (right), just from different angles.

front view

back view

side view

I'd very much appreciate any input or guidance to fixing this!

\$\endgroup\$
3
  • 1
    \$\begingroup\$ Check your keyframes for backwards normals. Even if the moment they flip isn't on a keyframe, that might just be when the interpolation between two keys passes the halfway mark. \$\endgroup\$
    – Anko
    Sep 24, 2014 at 22:13
  • \$\begingroup\$ any good? answers.unity3d.com/questions/591105/… \$\endgroup\$
    – MGB
    Oct 14, 2014 at 14:03
  • \$\begingroup\$ the interpolation sounds like a good lead, you should check and see if you have any skale keys in the negatives. \$\endgroup\$
    – 3D Sauce
    Oct 21, 2014 at 3:09

1 Answer 1

1
\$\begingroup\$

I 'think' I know what this is. This is not about the normals, it's about the choice of Binormal and Tangent vectors that the mesh exporter plugin chose - they are usually selected based on UV and don't consider the Winding Order of the polygon: the Binormal and Tangent have the wrong handedness sometimes, and if I remember correctly, there is a way we can detect and flip it in the shader. If I'm completely off track, it's still probably a bug in the exporter, not a bug in the engine.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .