public void setBindShapeMatrix(Transform mesh) { Matrix4x4 mat = Matrix4x4.identity; bindShapeMatrix = new GlTF_Matrix(mat); bindShapeMatrix.name = "bindShapeMatrix"; }
private GlTF_Node(GlTF_Globals globals, string name, Matrix4x4 mat, GlTF_Node parent) : base(globals) { this.Parent = parent; if (parent != null) { parent.m_children.Add(this); } this.matrix = new GlTF_Matrix(globals, mat); this.name = name; }
public void Populate(SkinnedMeshRenderer smr, List <Transform> skeletons) { name = GetNameFromObject(smr.transform); if (smr.rootBone != null) { boneNames = new List <string>(); List <Matrix4x4> boneMats = new List <Matrix4x4>(); var parent = smr.rootBone.parent; if (parent != null) { var mat = Matrix4x4.TRS(parent.localPosition, parent.localRotation, parent.localScale); bindShape = new GlTF_Matrix(mat); } else { bindShape = new GlTF_Matrix(Matrix4x4.identity); } bindShape.name = "bindShapeMatrix"; skeletons.Add(smr.rootBone); for (var i = 0; i < smr.bones.Length; ++i) { var found = IsBoneInHierarchy(smr.rootBone, smr.bones[i]); if (!found) { // set as its own skeleton to prevent error if it doesn't get included in rootBone hierarchy skeletons.Add(smr.bones[i]); } boneNames.Add(GlTF_Node.GetNameFromObject(smr.bones[i])); boneMats.Add(smr.sharedMesh.bindposes[i]); } ibmAccessor = new GlTF_Accessor("accessor_ibm_" + name, GlTF_Accessor.Type.MAT4, GlTF_Accessor.ComponentType.FLOAT); ibmAccessor.bufferView = GlTF_Writer.mat4BufferView; ibmAccessor.Populate(boneMats.ToArray()); GlTF_Writer.accessors.Add(ibmAccessor); } }