- Home /
Problem about mirror flip of a mesh
There is a problem about set mirror flip to skinned mesh. When I set scale = -1 (the code: myTransform.localScale = new Vector3(-1,1,1)) to a skinned mesh, the mesh is mirrored and this flip is OK in most of its animations. However, in a few frames of animations, the mesh has a problem. Everything is wrong: the texture of the mesh is turned over, the light is wrong. I think the normals are reversed.
Why only a few frames have the reversed normal problem, and is there a solution to fix it? The environment is Maya2011 and Unity3.4. I have tried both .fbx and .mb file, both have the problem.
The picture without scale:
The picture with scale = -1 and has the problem:
Answer by CProuse · Jan 11, 2012 at 09:27 PM
I know this is a really late answer, but while I was having this same problem, I've found little to no answers to why this was happening. What I found out was that when a Mesh is flipped on a single axis by a negative scale, the winding should have flipped but this was not the case. What I found out was that the mesh does go inside out, but Unity tries to correct this and calculate the new winding order. In a static mesh it would perform admirably but in an animated mesh, certain keyframes would cause the mesh to do what you see there. I thought it was something in the animation keyframes causing this but after checking over everything several times over, finally found out what Unity was doing. We finally fixed this by instead of using the scale to flip a animated, we flipped the skinned mesh in code and flipped the winding order of all the triangles to turn the mesh back right side out.
Gladly there is a response. Could you give the sample code of "flipped the skinned mesh in code and flipped the winding order of all the triangles to turn the mesh back right side out." I don't know the related function in Unity.
Answer by Kryptos · Jan 11, 2012 at 10:05 PM
Flipping object is a bad practice. Whenever possible, try to combine rotation and reverse animation (reading keyframe in reverse order). Or create an animation for every cases.
The reason is that normals and binormals are not flipped. For that reason, the faces of your mesh are broken (some might be flipped, some not).
Your answer
Follow this Question
Related Questions
Maya to Unity Scale Factor Issues 0 Answers
Scale collider independent of gameObject. 1 Answer
Mirroring a mesh? 1 Answer
Imported Maya File mesh missing after Git sync 1 Answer
Maya LT - Export group as single FBX 0 Answers