/// <summary>
        /// Computes a vertex position based on the state of runtime joint hierarchy
        /// </summary>
        public Vector3 computeVertexPos(int vertexIndex)
        {
            Vector3          currentPos = Vector3.Zero;
            SSSkeletalVertex vertex     = _vertices [vertexIndex].baseInfo;

            for (int w = 0; w < vertex.weightCount; ++w)
            {
                var weight = _weights [vertex.weightStartIndex + w];
                var joint  = _hierarchy.joints[weight.baseInfo.jointIndex];

                Vector3 currWeightPos = Vector3.Transform(weight.baseInfo.position, joint.currentLocation.orientation);
                currentPos += weight.baseInfo.bias * (joint.currentLocation.position + currWeightPos);
            }
            return(currentPos);
        }
Пример #2
0
 public SSSkeletalVertexRuntime(SSSkeletalVertex vertex)
 {
     _baseInfo = vertex;
     bindPoseNormal = Vector3.Zero;
 }
 public SSSkeletalVertexRuntime(SSSkeletalVertex vertex)
 {
     _baseInfo      = vertex;
     bindPoseNormal = Vector3.Zero;
 }