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
\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
\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
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