示例#1
0
        //Converts from the disk format to the human readable format
        public BlendshapeState Extract()
        {
            BlendshapeState bs = new BlendshapeState();

            bs.name          = name;
            bs.shapeIndex    = shapeIndex;
            bs.frameIndex    = frameIndex;
            bs.deltaVertices = new Vector3[deltaVerticesLength];
            bs.deltaNormals  = new Vector3[deltaNormalsLength];
            bs.deltaTangents = new Vector3[deltaTangentsLength];

            int j = 0;

            foreach (Vector3Cereal v in deltaVertices)
            {
                Vector3 vector = v.Get(ref j);
                bs.deltaVertices[j] = vector;
            }
            foreach (Vector3Cereal v in deltaNormals)
            {
                Vector3 vector = v.Get(ref j);
                bs.deltaNormals[j] = vector;
            }
            foreach (Vector3Cereal v in deltaTangents)
            {
                Vector3 vector = v.Get(ref j);
                bs.deltaTangents[j] = vector;
            }

            return(bs);
        }
示例#2
0
        //Converts the nice blendshape state into a serializable less human readable format
        public void Fill(BlendshapeState bs)
        {
            name       = bs.name;
            shapeIndex = bs.shapeIndex;
            frameIndex = bs.frameIndex;

            Dictionary <int, Vector3> deltaVerticesDict = ConvertVectorArrayToCompressedDict(bs.deltaVertices, 0.0001f);
            Dictionary <int, Vector3> deltaNormalsDict  = ConvertVectorArrayToCompressedDict(bs.deltaNormals, 0.0001f);
            Dictionary <int, Vector3> deltaTangentsDict = ConvertVectorArrayToCompressedDict(bs.deltaTangents, 0.0001f);

            deltaVertices = new Vector3Cereal[deltaVerticesDict.Count];
            deltaNormals  = new Vector3Cereal[deltaNormalsDict.Count];
            deltaTangents = new Vector3Cereal[deltaTangentsDict.Count];

            deltaVerticesLength = bs.deltaVertices.Length;
            deltaNormalsLength  = bs.deltaNormals.Length;
            deltaTangentsLength = bs.deltaTangents.Length;

            int i = 0;

            foreach (int key in deltaVerticesDict.Keys)
            {
                Vector3 vector = deltaVerticesDict[key];
                deltaVertices[i++].Fill(vector, key);
            }

            i = 0;
            foreach (int key in deltaNormalsDict.Keys)
            {
                Vector3 vector = deltaNormalsDict[key];
                deltaNormals[i++].Fill(vector, key);
            }

            i = 0;
            foreach (int key in deltaTangentsDict.Keys)
            {
                Vector3 vector = deltaTangentsDict[key];
                deltaTangents[i++].Fill(vector, key);
            }
        }