Jelajahi Sumber

Merge pull request #285 from jdduke/blend_fix_mirror_winding

Properly orient mirrored blend mesh faces
Alexander Gessler 11 tahun lalu
induk
melakukan
62554a055d
1 mengubah file dengan 9 tambahan dan 0 penghapusan
  1. 9 0
      code/BlenderModifier.cpp

+ 9 - 0
code/BlenderModifier.cpp

@@ -248,6 +248,15 @@ void  BlenderModifier_Mirror :: DoIt(aiNode& out, ConversionData& conv_data,  co
 			}
 		}
 
+		// Only reverse the winding order if an odd number of axes were mirrored.
+		if (xs * ys * zs < 0) {
+			for( unsigned int i = 0; i < mesh->mNumFaces; i++) {
+				aiFace& face = mesh->mFaces[i];
+				for( unsigned int fi = 0; fi < face.mNumIndices / 2; ++fi)
+					std::swap( face.mIndices[fi], face.mIndices[face.mNumIndices - 1 - fi]);
+			}
+		}
+
 		conv_data.meshes->push_back(mesh);
 	}
 	unsigned int* nind = new unsigned int[out.mNumMeshes*2];