Ver Fonte

Fixing animation clip import

BearishSun há 9 anos atrás
pai
commit
1c3d88dc71

+ 17 - 1
Source/BansheeFBXImporter/Source/BsFBXImporter.cpp

@@ -1602,7 +1602,7 @@ namespace BansheeEngine
 			{
 				float dot = quat.dot(lastQuat);
 				if (dot < 0.0f)
-					quat = Quaternion(-quat.x, -quat.y, -quat.z, -quat.w);
+					quat = -quat;
 			}
 
 			return quat;
@@ -1784,6 +1784,22 @@ namespace BansheeEngine
 				keyFrame.value = fbxCurve->KeyGetValue(i);
 				keyFrame.inTangent = fbxCurve->KeyGetLeftDerivative(i);
 				keyFrame.outTangent = fbxCurve->KeyGetRightDerivative(i);
+
+				// DEBUG VALUES
+				float leftAuto = fbxCurve->KeyGetLeftAuto(i);
+				float rightAuto = fbxCurve->KeyGetRightAuto(i);
+
+				float leftWeight = fbxCurve->KeyGetLeftTangentWeight(i);
+				float rightWeight = fbxCurve->KeyGetRightTangentWeight(i);
+
+				FbxAnimCurveTangentInfo leftInfo = fbxCurve->KeyGetLeftDerivativeInfo(i);
+				FbxAnimCurveTangentInfo rightInfo = fbxCurve->KeyGetRightDerivativeInfo(i);
+
+				FbxAnimCurveDef::EInterpolationType interpMode = fbxCurve->KeyGetInterpolation(i);
+				FbxAnimCurveDef::ETangentMode tangentMode = fbxCurve->KeyGetTangentMode(i);
+				//float tangent = Math::cubicHermiteD1(keyFrame.time)
+
+				int a = 5;
 			}
 		}
 	}

+ 3 - 3
Source/BansheeUtility/Include/BsQuaternion.h

@@ -77,14 +77,14 @@ namespace BansheeEngine
 		{
 			assert(i < 4);
 
-			return *(&w+i);
+			return *(&x+i);
 		}
 
 		float& operator[] (const size_t i)
 		{
 			assert(i < 4);
 
-			return *(&w+i);
+			return *(&x+i);
 		}
 
 		/**
@@ -354,7 +354,7 @@ namespace BansheeEngine
         static const Quaternion ZERO;
         static const Quaternion IDENTITY;
 
-		float x, y, z, w;
+		float x, y, z, w; // Note: Order is relevant, don't break it
 
 		private:
 			static const EulerAngleOrderData EA_LOOKUP[6];