Inheritance: GlTF_FloatArray
Exemplo n.º 1
0
    public void setBindShapeMatrix(Transform mesh)
    {
        Matrix4x4 mat = Matrix4x4.identity;

        bindShapeMatrix      = new GlTF_Matrix(mat);
        bindShapeMatrix.name = "bindShapeMatrix";
    }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
    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);
        }
    }