Example #1
0
    // *ALWAYS* returns the states of the shape keys to FRAME ZERO
    // This may, if any of the shape keys are applied result in a deformed
    // mesh, a backup should always be retained.
    public void Reset()
    {
        foreach (DictionaryEntry de in meshObjects)
        {
            GameObject      meshObject = (GameObject)de.Key;
            List <ShapeKey> s          = (List <ShapeKey>)de.Value;
            // Get the basis mesh
            Vector3[] mesh = (Vector3[])((VertexContainer)basisMeshes[meshObject]).vertices.Clone();
            for (int i = 0; i < s.Count; i++)
            {
                ShapeKey shapeKey = s[i];
                if (!startShapes.ContainsKey(shapeKey))
                {
                    continue;
                }
                shapeKey.strength = (float)startShapes[shapeKey];
                mesh = shapeKey.applyShapeToVertices(mesh);
            }

            Mesh m;

            if (meshObject.GetComponent("SkinnedMeshRenderer") == null)
            {
                MeshFilter f = (MeshFilter)meshObject.GetComponent("MeshFilter");
                m = f.mesh;
            }
            else
            {
                MeshFilter f = (MeshFilter)meshObject.GetComponent("SkinnedMeshRenderer");
                m = f.sharedMesh;
            }

            m.vertices = mesh;
        }
    }
Example #2
0
    private void accumulate()
    {
        foreach (DictionaryEntry de in meshObjects)
        {
            GameObject      meshObject = (GameObject)de.Key;
            List <ShapeKey> s          = (List <ShapeKey>)de.Value;
            // Get the basis mesh
            Vector3[] mesh = (Vector3[])((VertexContainer)basisMeshes[meshObject]).vertices.Clone();
            for (int i = 0; i < s.Count; i++)
            {
                ShapeKey shapeKey = s[i];
                shapeKey.strength = shapeKeyStrengthAtTime(shapeKey, currentTime);
                mesh = shapeKey.applyShapeToVertices(mesh);
            }

            Mesh m;

            if (meshObject.GetComponent("SkinnedMeshRenderer") == null)
            {
                MeshFilter f = (MeshFilter)meshObject.GetComponent("MeshFilter");
                m = f.mesh;
            }
            else
            {
                MeshFilter f = (MeshFilter)meshObject.GetComponent("SkinnedMeshRenderer");
                m = f.sharedMesh;
            }

            m.vertices = mesh;
        }
    }