[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16137] branches/blender-2.47/source/ gameengine/Converter/BL_BlenderDataConversion.cpp: branches/blender-2.47

Diego Borghetti bdiego at gmail.com
Sun Aug 17 00:08:45 CEST 2008


Revision: 16137
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16137
Author:   bdiego
Date:     2008-08-17 00:08:45 +0200 (Sun, 17 Aug 2008)

Log Message:
-----------
branches/blender-2.47

Merge from trunk:
	Revision: 16127

Modified Paths:
--------------
    branches/blender-2.47/source/gameengine/Converter/BL_BlenderDataConversion.cpp

Modified: branches/blender-2.47/source/gameengine/Converter/BL_BlenderDataConversion.cpp
===================================================================
--- branches/blender-2.47/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2008-08-16 20:45:37 UTC (rev 16136)
+++ branches/blender-2.47/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2008-08-16 22:08:45 UTC (rev 16137)
@@ -1946,10 +1946,22 @@
 				//parentinversenode->SetLocalOrientation(parinvtrans.getBasis());
 
 				// Extract the rotation and the scaling from the basis
-				MT_Matrix3x3 inverseOrientation(parinvtrans.getRotation());
-				parentinversenode->SetLocalOrientation(inverseOrientation);
-				MT_Matrix3x3 scale(inverseOrientation.transposed()*parinvtrans.getBasis());
-				parentinversenode->SetLocalScale(MT_Vector3(scale[0][0], scale[1][1], scale[2][2]));
+				MT_Matrix3x3 ori(parinvtrans.getBasis());
+				MT_Vector3 x(ori.getColumn(0));
+				MT_Vector3 y(ori.getColumn(1));
+				MT_Vector3 z(ori.getColumn(2));
+				MT_Vector3 scale(x.length(), y.length(), z.length());
+				if (!MT_fuzzyZero(scale[0]))
+					x /= scale[0];
+				if (!MT_fuzzyZero(scale[1]))
+					y /= scale[1];
+				if (!MT_fuzzyZero(scale[2]))
+					z /= scale[2];
+				ori.setColumn(0, x);								
+				ori.setColumn(1, y);								
+				ori.setColumn(2, z);								
+				parentinversenode->SetLocalOrientation(ori);
+				parentinversenode->SetLocalScale(scale);
 				
 				parentinversenode->AddChild(gameobj->GetSGNode());
 			}
@@ -2129,7 +2141,24 @@
 								float* fl = (float*) blenderobject->parentinv;
 								MT_Transform parinvtrans(fl);
 								parentinversenode->SetLocalPosition(parinvtrans.getOrigin());
-								parentinversenode->SetLocalOrientation(parinvtrans.getBasis());
+
+								// Extract the rotation and the scaling from the basis
+								MT_Matrix3x3 ori(parinvtrans.getBasis());
+								MT_Vector3 x(ori.getColumn(0));
+								MT_Vector3 y(ori.getColumn(1));
+								MT_Vector3 z(ori.getColumn(2));
+								MT_Vector3 scale(x.length(), y.length(), z.length());
+								if (!MT_fuzzyZero(scale[0]))
+									x /= scale[0];
+								if (!MT_fuzzyZero(scale[1]))
+									y /= scale[1];
+								if (!MT_fuzzyZero(scale[2]))
+									z /= scale[2];
+								ori.setColumn(0, x);								
+								ori.setColumn(1, y);								
+								ori.setColumn(2, z);								
+								parentinversenode->SetLocalOrientation(ori);
+								parentinversenode->SetLocalScale(scale);
 								
 								parentinversenode->AddChild(gameobj->GetSGNode());
 							}





More information about the Bf-blender-cvs mailing list