Subversion Repositories AndroidProjects

Rev

Rev 1800 | Rev 1804 | 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;
1782 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
    {
40
        mMatrices = new Matrix4[mBoneInfluences.length];
41
        for (int i = 0; i < mMatrices.length; i++)
1800 chris 42
        {
43
            ModelNode bone = mBoneInfluences[i];
1788 chris 44
 
1800 chris 45
            Quaternion q = new Quaternion(0.5f, -0.5f, 0.5f, 0.5f);
46
 
47
            mMatrices[i] = new Matrix4();
48
            mMatrices[i].identity();
49
            //mMatrices[i].copyFrom(bone.getGlobalTransform());
50
 
51
            mMatrices[i].multiply(bone.transform.calcMatrix());
52
            mMatrices[i].multiply(bone.bindPose.calcMatrix().getInverse());
53
 
54
        }
55
 
1788 chris 56
        return mMatrices;
57
    }
58
 
1720 chris 59
    // Getters/Setters==================================================================================
1723 chris 60
 
1777 chris 61
        public final Material getMaterial() { return mMaterial; }
1723 chris 62
 
1777 chris 63
        public final MeshGroup getMeshGroup() { return mMeshGroup; }
64
 
1780 chris 65
        public final void setBoneInfluences(ModelNode[] influences)
66
        {
67
                mBoneInfluences = influences;
1801 chris 68
        }
1780 chris 69
 
1801 chris 70
        public final void setBoneTransforms(Transform[] transforms)
71
        {
72
                mBoneTransforms = transforms;
73
 
74
                mMatrices = new Matrix4[mBoneTransforms.length];
1782 chris 75
                for (int i = 0; i < mMatrices.length; i++)
1801 chris 76
                        mMatrices[i] = mBoneTransforms[i].calcMatrix();
1780 chris 77
        }
1782 chris 78
 
1779 chris 79
        public final ModelNode[] getBoneInfluences() { return mBoneInfluences; }
80
 
1782 chris 81
        public final Matrix4[] getBoneMatrices() { return mMatrices; }
82
 
83
 
1720 chris 84
}