@ -23,37 +23,37 @@ import com.jme3.scene.plugins.blender.objects.ObjectHelper;
* /
* /
public class BoneContext {
public class BoneContext {
// the flags of the bone
// the flags of the bone
public static final int CONNECTED_TO_PARENT = 0x10 ;
public static final int CONNECTED_TO_PARENT = 0x10 ;
/ * *
/ * *
* The bones ' matrices have , unlike objects ' , the coordinate system identical to JME ' s ( Y axis is UP , X to the right and Z toward us ) .
* The bones ' matrices have , unlike objects ' , the coordinate system identical to JME ' s ( Y axis is UP , X to the right and Z toward us ) .
* So in order to have them loaded properly we need to transform their armature matrix ( which blender sees as rotated ) to make sure we get identical results .
* So in order to have them loaded properly we need to transform their armature matrix ( which blender sees as rotated ) to make sure we get identical results .
* /
* /
public static final Matrix4f BONE_ARMATURE_TRANSFORMATION_MATRIX = new Matrix4f ( 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , - 1 , 0 , 0 , 0 , 0 , 0 , 1 ) ;
public static final Matrix4f BONE_ARMATURE_TRANSFORMATION_MATRIX = new Matrix4f ( 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , - 1 , 0 , 0 , 0 , 0 , 0 , 1 ) ;
private BlenderContext blenderContext ;
private BlenderContext blenderContext ;
/** The OMA of the bone's armature object. */
/** The OMA of the bone's armature object. */
private Long armatureObjectOMA ;
private Long armatureObjectOMA ;
/** The OMA of the model that owns the bone's skeleton. */
/** The OMA of the model that owns the bone's skeleton. */
private Long skeletonOwnerOma ;
private Long skeletonOwnerOma ;
/** The structure of the bone. */
/** The structure of the bone. */
private Structure boneStructure ;
private Structure boneStructure ;
/** Bone's name. */
/** Bone's name. */
private String boneName ;
private String boneName ;
/** The bone's flag. */
/** The bone's flag. */
private int flag ;
private int flag ;
/** The bone's matrix in world space. */
/** The bone's matrix in world space. */
private Matrix4f globalBoneMatrix ;
private Matrix4f globalBoneMatrix ;
/** The bone's matrix in the model space. */
/** The bone's matrix in the model space. */
private Matrix4f boneMatrixInModelSpace ;
private Matrix4f boneMatrixInModelSpace ;
/** The parent context. */
/** The parent context. */
private BoneContext parent ;
private BoneContext parent ;
/** The children of this context. */
/** The children of this context. */
private List < BoneContext > children = new ArrayList < BoneContext > ( ) ;
private List < BoneContext > children = new ArrayList < BoneContext > ( ) ;
/** Created bone (available after calling 'buildBone' method). */
/** Created bone (available after calling 'buildBone' method). */
private Bone bone ;
private Bone bone ;
/** The length of the bone. */
/** The length of the bone. */
private float length ;
private float length ;
/ * *
/ * *
* Constructor . Creates the basic set of bone ' s data .
* Constructor . Creates the basic set of bone ' s data .
@ -174,10 +174,15 @@ public class BoneContext {
}
}
/ * *
/ * *
* The method returns the length of the bone .
* If you want to use it for bone debugger take model space scale into account and do
* something like this :
* < b > boneContext . getLength ( ) * boneContext . getBone ( ) . getModelSpaceScale ( ) . y < / b > .
* Otherwise the bones might not look as they should in the bone debugger .
* @return the length of the bone
* @return the length of the bone
* /
* /
public float getLength ( ) {
public float getLength ( ) {
return length * bone . getModelSpaceScale ( ) . y ;
return length ;
}
}
/ * *
/ * *