public UpdateInverseWorldTransform ( List |
||
bones | List |
|
Résultat | void |
public void UpdateInverseWorldTransform(List<Bone> bones)
{
var iwt = CalculateInverseWorldTransform(bones);
InverseWorldTransform = new float[] {
iwt[0, 0], iwt[0, 1], iwt[0, 2], iwt[0, 3],
iwt[1, 0], iwt[1, 1], iwt[1, 2], iwt[1, 3],
iwt[2, 0], iwt[2, 1], iwt[2, 2], iwt[2, 3],
iwt[3, 0], iwt[3, 1], iwt[3, 2], iwt[3, 3]
};
}
public static Bone FromCollada(node bone, int parentIndex, List <Bone> bones, Dictionary <string, Bone> boneSIDs, Dictionary <string, Bone> boneIDs) { var transMat = ColladaHelpers.TransformFromNode(bone); var colladaBone = new Bone(); colladaBone.TransformSID = transMat.TransformSID; var myIndex = bones.Count; bones.Add(colladaBone); boneSIDs.Add(bone.sid, colladaBone); if (bone.id != null) { boneIDs.Add(bone.id, colladaBone); } colladaBone.ParentIndex = parentIndex; colladaBone.Name = bone.name; colladaBone.LODError = 0; // TODO colladaBone.OriginalTransform = transMat.transform; colladaBone.Transform = Transform.FromMatrix4(transMat.transform); colladaBone.UpdateInverseWorldTransform(bones); if (bone.node1 != null) { foreach (var node in bone.node1) { if (node.type == NodeType.JOINT) { FromCollada(node, myIndex, bones, boneSIDs, boneIDs); } } } return(colladaBone); }