/// <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); }
public SSSkeletalVertexRuntime(SSSkeletalVertex vertex) { _baseInfo = vertex; bindPoseNormal = Vector3.Zero; }