Procházet zdrojové kódy

Merge pull request #1837 from gonchar/master

Support Maya 2018 Collada Export
Kim Kulling před 7 roky
rodič
revize
3390185270
2 změnil soubory, kde provedl 19 přidání a 0 odebrání
  1. 16 0
      code/ColladaParser.cpp
  2. 3 0
      code/ColladaParser.h

+ 16 - 0
code/ColladaParser.cpp

@@ -222,6 +222,7 @@ void ColladaParser::ReadStructure()
     }
     }
 
 
 	PostProcessRootAnimations();
 	PostProcessRootAnimations();
+    PostProcessControllers();
 }
 }
 
 
 // ------------------------------------------------------------------------------------------------
 // ------------------------------------------------------------------------------------------------
@@ -360,6 +361,21 @@ void ColladaParser::ReadAnimationClipLibrary()
 	}
 	}
 }
 }
 
 
+void ColladaParser::PostProcessControllers()
+{
+  for (ControllerLibrary::iterator it = mControllerLibrary.begin(); it != mControllerLibrary.end(); ++it)
+  {
+    std::string meshId = it->second.mMeshId;
+    ControllerLibrary::iterator findItr = mControllerLibrary.find(meshId);
+    while(findItr != mControllerLibrary.end()) {
+      meshId = findItr->second.mMeshId;
+      findItr = mControllerLibrary.find(meshId);
+    }
+    
+    it->second.mMeshId = meshId;
+  }
+}
+
 // ------------------------------------------------------------------------------------------------
 // ------------------------------------------------------------------------------------------------
 // Re-build animations from animation clip library, if present, otherwise combine single-channel animations
 // Re-build animations from animation clip library, if present, otherwise combine single-channel animations
 void ColladaParser::PostProcessRootAnimations()
 void ColladaParser::PostProcessRootAnimations()

+ 3 - 0
code/ColladaParser.h

@@ -87,6 +87,9 @@ namespace Assimp
 		/** Reads the animation clip library */
 		/** Reads the animation clip library */
 		void ReadAnimationClipLibrary();
 		void ReadAnimationClipLibrary();
 
 
+        /** Unwrap controllers dependency hierarchy */
+        void PostProcessControllers();
+    
 		/** Re-build animations from animation clip library, if present, otherwise combine single-channel animations */
 		/** Re-build animations from animation clip library, if present, otherwise combine single-channel animations */
 		void PostProcessRootAnimations();
 		void PostProcessRootAnimations();