[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