예제 #1
0
 private void CachePoseInformation()
 {
     for (int i = 0; i < Poses.Length; i++)
     {
         _poseInformations[i] = new PoseInformation();
         InitializePose((Vector3[])Poses[i].vertices.Clone(), (Vector3[])Poses[i].normals.Clone(), _poseInformations[i]);
     }
 }
예제 #2
0
    private void InitializePose(Vector3[] poseVertices, Vector3[] poseNormals, PoseInformation poseInformation)
    {
        var deltaInfo = new List <DeltaInformation>();

        for (int i = 0; i < poseVertices.Length; i++)
        {
            var vertexDelta = poseVertices[i] - _baseVertices[i];
            if (!Mathf.Approximately(0f, vertexDelta.sqrMagnitude))
            {
                deltaInfo.Add(
                    new DeltaInformation
                {
                    VertexIndex = i,
                    VertexDelta = vertexDelta,
                    NormalDelta = poseNormals[i] - _baseNormals[i],
                });
            }
        }

        poseInformation.DeltaInformations = deltaInfo.ToArray();
    }