OSDN Git Service

Changes to Y-is-Up-Axis issue.
authorKaelthas_Spellsinger@o2.pl <Kaelthas_Spellsinger@o2.pl@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Sun, 23 Oct 2011 14:30:22 +0000 (14:30 +0000)
committerKaelthas_Spellsinger@o2.pl <Kaelthas_Spellsinger@o2.pl@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Sun, 23 Oct 2011 14:30:22 +0000 (14:30 +0000)
git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@8516 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

engine/src/blender/com/jme3/scene/plugins/blender/BlenderLoader.java
engine/src/blender/com/jme3/scene/plugins/blender/meshes/MeshHelper.java
engine/src/blender/com/jme3/scene/plugins/blender/objects/ObjectHelper.java

index fd25d13..4999829 100644 (file)
@@ -210,7 +210,9 @@ public class BlenderLoader extends AbstractBlenderLoader {
                        helper = blenderContext.getHelper(CurvesHelper.class);\r
                        helper.setyIsUpAxis(true);\r
                        helper = blenderContext.getHelper(ArmatureHelper.class);\r
-                       helper.setyIsUpAxis(true);                      \r
+                       helper.setyIsUpAxis(true);\r
+                       helper = blenderContext.getHelper(MeshHelper.class);\r
+                       helper.setyIsUpAxis(true);\r
                }\r
                MaterialHelper materialHelper = blenderContext.getHelper(MaterialHelper.class);\r
                materialHelper.setFaceCullMode(blenderKey.getFaceCullMode());\r
index 6584fa6..9b74f40 100644 (file)
@@ -498,9 +498,16 @@ public class MeshHelper extends AbstractBlenderHelper {
 \r
         Pointer pMVert = (Pointer) meshStructure.getFieldValue("mvert");\r
         List<Structure> mVerts = pMVert.fetchData(blenderContext.getInputStream());\r
-        for (int i = 0; i < verticesAmount; ++i) {\r
-            DynamicArray<Number> coordinates = (DynamicArray<Number>) mVerts.get(i).getFieldValue("co");\r
-            vertices[i] = new Vector3f(coordinates.get(0).floatValue(), coordinates.get(1).floatValue(), coordinates.get(2).floatValue());\r
+        if(this.fixUpAxis) {\r
+               for (int i = 0; i < verticesAmount; ++i) {\r
+                DynamicArray<Number> coordinates = (DynamicArray<Number>) mVerts.get(i).getFieldValue("co");\r
+                vertices[i] = new Vector3f(coordinates.get(0).floatValue(), coordinates.get(2).floatValue(), coordinates.get(1).floatValue());\r
+            }\r
+        } else {\r
+               for (int i = 0; i < verticesAmount; ++i) {\r
+                DynamicArray<Number> coordinates = (DynamicArray<Number>) mVerts.get(i).getFieldValue("co");\r
+                vertices[i] = new Vector3f(coordinates.get(0).floatValue(), coordinates.get(1).floatValue(), coordinates.get(2).floatValue());\r
+            }\r
         }\r
         return vertices;\r
     }\r
index 71cd407..1089b8b 100644 (file)
@@ -282,14 +282,6 @@ public class ObjectHelper extends AbstractBlenderHelper {
 \r
                //load parent inverse matrix\r
                Pointer pParent = (Pointer) objectStructure.getFieldValue("parent");\r
-               Structure parent = null;\r
-               if(pParent.isNotNull()) {\r
-                       try {\r
-                               parent = pParent.fetchData(blenderContext.getInputStream()).get(0);\r
-                       } catch (BlenderFileException e) {\r
-                               LOGGER.log(Level.WARNING, "Cannot fetch parent for object! Reason: {0}", e.getLocalizedMessage());\r
-                       }\r
-               }\r
                Matrix4f parentInv = pParent.isNull() ? Matrix4f.IDENTITY : this.getMatrix(objectStructure, "parentinv");\r
                \r
                //create the global matrix (without the scale)\r
@@ -309,12 +301,18 @@ public class ObjectHelper extends AbstractBlenderHelper {
                                                                          size.get(1).floatValue() * scaleY, \r
                                                                          size.get(2).floatValue() * scaleZ);\r
                \r
-               //the root object is transformed if the Y axis is UP\r
-               if(fixUpAxis && (pParent.isNull() || (parent!=null && !this.shouldBeLoaded(parent, blenderContext)))) {\r
+               if(fixUpAxis) {\r
                        float y = translation.y;\r
                        translation.y = translation.z;\r
                        translation.z = -y;\r
-                       rotation = this.upAxisRotationQuaternion.mult(rotation);\r
+                       \r
+                       y = rotation.getY();\r
+                       float z = rotation.getZ();\r
+                       rotation.set(rotation.getX(), z, -y, rotation.getW());\r
+                       \r
+                       y=scale.y;\r
+                       scale.y = scale.z;\r
+                       scale.z = -y;\r
                }\r
                \r
                //create the result\r