Subversion Repositories AndroidProjects

Rev

Rev 1805 | Rev 1807 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1720 chris 1
package com.gebauz.bauzoid2.graphics.model;
2
 
1801 chris 3
import com.gebauz.bauzoid2.graphics.util.Transform;
1782 chris 4
import com.gebauz.bauzoid2.math.Matrix4;
1778 chris 5
import com.gebauz.bauzoid2.math.Quaternion;
6
import com.gebauz.bauzoid2.math.Vector3;
7
 
1720 chris 8
/**
9
 * Created by chris on 14.12.2014.
10
 */
11
public class ModelPart
12
{
13
    // Constants========================================================================================
14
 
15
 
1778 chris 16
 
1720 chris 17
    // Fields===========================================================================================
18
 
19
    private String mName = null;
20
 
21
    private MeshGroup mMeshGroup = null;
22
    private Material mMaterial = null;
23
 
1779 chris 24
        private ModelNode[] mBoneInfluences = null;
1801 chris 25
        private Transform[] mBoneTransforms = null;
1804 chris 26
        //private Matrix4[] mMatrices = null;
1779 chris 27
 
1720 chris 28
    // Methods==========================================================================================
29
 
30
    public ModelPart(String name, MeshGroup group, Material material)
31
    {
32
        mName = name;
33
 
34
        mMeshGroup = group;
35
        mMaterial = material;
36
    }
37
 
1788 chris 38
    public Matrix4[] calcBoneMatrices()
39
    {
1804 chris 40
        Matrix4[] matrices = new Matrix4[mBoneInfluences.length];
41
        for (int i = 0; i < matrices.length; i++)
1800 chris 42
        {
43
            ModelNode bone = mBoneInfluences[i];
1788 chris 44
 
1804 chris 45
            //Quaternion q = new Quaternion(0.5f, -0.5f, 0.5f, 0.5f);
1800 chris 46
 
1804 chris 47
                        matrices[i] = new Matrix4();
48
                        matrices[i].identity();
1806 chris 49
            matrices[i].multiply(bone.getGlobalTransform());
1805 chris 50
                        //matrices[i].multiply(mBoneTransforms[i].calcMatrix());
1800 chris 51
 
1804 chris 52
                        matrices[i].multiply(bone.transform.calcMatrix());
1805 chris 53
                        matrices[i].multiply(bone.bindPose.calcMatrix().getInverse());
54
                        //matrices[i].multiply(bone.bindPose.calcMatrix().getInverse());
55
                        //matrices[i].multiply(mBoneTransforms[i].calcMatrix().getInverse());
56
                        //matrices[i].multiply(bone.getGlobalTransform().getInverse());
1800 chris 57
 
58
        }
59
 
1804 chris 60
        return matrices;
1788 chris 61
    }
62
 
1720 chris 63
    // Getters/Setters==================================================================================
1723 chris 64
 
1777 chris 65
        public final Material getMaterial() { return mMaterial; }
1723 chris 66
 
1777 chris 67
        public final MeshGroup getMeshGroup() { return mMeshGroup; }
68
 
1804 chris 69
        private final void setBoneInfluences(ModelNode[] influences)
1780 chris 70
        {
71
                mBoneInfluences = influences;
1801 chris 72
        }
1780 chris 73
 
1804 chris 74
        private final void setBoneTransforms(Transform[] transforms)
1801 chris 75
        {
76
                mBoneTransforms = transforms;
1804 chris 77
        }
1801 chris 78
 
1804 chris 79
        public final void setBones(ModelNode[] influences, Transform[] transforms)
80
        {
81
                setBoneInfluences(influences);
82
                setBoneTransforms(transforms);
1780 chris 83
        }
1782 chris 84
 
1779 chris 85
        public final ModelNode[] getBoneInfluences() { return mBoneInfluences; }
86
 
1804 chris 87
        //public final Matrix4[] getBoneMatrices() { return mMatrices; }
1782 chris 88
 
1804 chris 89
        public final boolean isSkinned()
90
        {
91
                return (mBoneInfluences != null);
92
        }
1782 chris 93
 
1804 chris 94
 
1720 chris 95
}