public static Vector3 fetchScaleVector(TkAnimNodeData node, TkAnimMetadata animMeta, int frameCounter) { //Load Frames //Console.WriteLine("Setting Frame Index {0}", frameIndex); TkAnimNodeFrameData frame = animMeta.AnimFrameData[frameCounter]; TkAnimNodeFrameData stillframe = animMeta.StillFrameData; Vector3 v; if (node.ScaleIndex < frame.Scales.Count) { v = new Vector3( frame.Scales[node.ScaleIndex].x / frame.Scales[node.ScaleIndex].t, frame.Scales[node.ScaleIndex].y / frame.Scales[node.ScaleIndex].t, frame.Scales[node.ScaleIndex].z / frame.Scales[node.ScaleIndex].t); } else //Load stillframedata { int scaleindex = node.ScaleIndex - frame.Scales.Count; v = new Vector3( stillframe.Scales[scaleindex].x / stillframe.Scales[scaleindex].t, stillframe.Scales[scaleindex].y / stillframe.Scales[scaleindex].t, stillframe.Scales[scaleindex].z / stillframe.Scales[scaleindex].t); } return(v); }
public static Vector3 fetchTransVector(TkAnimNodeData node, TkAnimMetadata animMeta, int frameCounter) { //Load Frames //Console.WriteLine("Setting Frame Index {0}", frameIndex); TkAnimNodeFrameData frame = animMeta.AnimFrameData[frameCounter]; TkAnimNodeFrameData stillframe = animMeta.StillFrameData; Vector3 v; //Load Translations if (node.TransIndex < frame.Translations.Count) { v = new Vector3(frame.Translations[node.TransIndex].x, frame.Translations[node.TransIndex].y, frame.Translations[node.TransIndex].z); } else //Load stillframedata { int transindex = node.TransIndex - frame.Translations.Count; v = new Vector3(stillframe.Translations[transindex].x, stillframe.Translations[transindex].y, stillframe.Translations[transindex].z); } return(v); }
public static void fetchTransVector(TkAnimNodeData node, TkAnimMetadata animMeta, int frameCounter, ref Vector3 v) { //Load Frames //Console.WriteLine("Setting Frame Index {0}", frameIndex); TkAnimNodeFrameData frame = animMeta.AnimFrameData[frameCounter]; TkAnimNodeFrameData stillframe = animMeta.StillFrameData; TkAnimNodeFrameData activeFrame; int transIndex = -1; //Load Translations if (node.TransIndex < frame.Translations.Count) { transIndex = node.TransIndex; activeFrame = frame; } else //Load stillframedata { transIndex = node.TransIndex - frame.Translations.Count; activeFrame = stillframe; } v.X = activeFrame.Translations[transIndex].x; v.Y = activeFrame.Translations[transIndex].y; v.Z = activeFrame.Translations[transIndex].z; }
public static void fetchRotQuaternion(TkAnimNodeData node, TkAnimMetadata animMeta, int frameCounter, ref Quaternion q) { //Load Frames //Console.WriteLine("Setting Frame Index {0}", frameIndex); TkAnimNodeFrameData frame = animMeta.AnimFrameData[frameCounter]; TkAnimNodeFrameData stillframe = animMeta.StillFrameData; TkAnimNodeFrameData activeFrame = null; int rotIndex = -1; //Check if there is a rotation for that node if (node.RotIndex < frame.Rotations.Count) { activeFrame = frame; rotIndex = node.RotIndex; } else //Load stillframedata { activeFrame = stillframe; rotIndex = node.RotIndex - frame.Rotations.Count; } q.X = activeFrame.Rotations[rotIndex].x; q.Y = activeFrame.Rotations[rotIndex].y; q.Z = activeFrame.Rotations[rotIndex].z; q.W = activeFrame.Rotations[rotIndex].w; }
//Animation frame data collection methods public static Quaternion fetchRotQuaternion(TkAnimNodeData node, TkAnimMetadata animMeta, int frameCounter) { //Load Frames //Console.WriteLine("Setting Frame Index {0}", frameIndex); TkAnimNodeFrameData frame = animMeta.AnimFrameData[frameCounter]; TkAnimNodeFrameData stillframe = animMeta.StillFrameData; OpenTK.Quaternion q; //Check if there is a rotation for that node if (node.RotIndex < frame.Rotations.Count) { int rotindex = node.RotIndex; q = new OpenTK.Quaternion(frame.Rotations[rotindex].x, frame.Rotations[rotindex].y, frame.Rotations[rotindex].z, frame.Rotations[rotindex].w); } else //Load stillframedata { int rotindex = node.RotIndex - frame.Rotations.Count; q = new OpenTK.Quaternion(stillframe.Rotations[rotindex].x, stillframe.Rotations[rotindex].y, stillframe.Rotations[rotindex].z, stillframe.Rotations[rotindex].w); } return(q); }
private void loadData() { for (int j = 0; j < NodeCount; j++) { TkAnimNodeData node = NodeData[j]; //Init dictionary entries anim_rotations[node.Node] = new OpenTK.Quaternion[FrameCount]; anim_positions[node.Node] = new Vector3[FrameCount]; anim_scales[node.Node] = new Vector3[FrameCount]; for (int i = 0; i < FrameCount; i++) { NMSUtils.fetchRotQuaternion(node, this, i, ref anim_rotations[node.Node][i]); //use Ref NMSUtils.fetchTransVector(node, this, i, ref anim_positions[node.Node][i]); //use Ref NMSUtils.fetchScaleVector(node, this, i, ref anim_scales[node.Node][i]); //use Ref } } }
public static void fetchScaleVector(TkAnimNodeData node, TkAnimMetadata animMeta, int frameCounter, ref Vector3 s) { //Load Frames //Console.WriteLine("Setting Frame Index {0}", frameIndex); TkAnimNodeFrameData frame = animMeta.AnimFrameData[frameCounter]; TkAnimNodeFrameData stillframe = animMeta.StillFrameData; TkAnimNodeFrameData activeFrame = null; int scaleIndex = -1; if (node.ScaleIndex < frame.Scales.Count) { scaleIndex = node.ScaleIndex; activeFrame = frame; } else //Load stillframedata { scaleIndex = node.ScaleIndex - frame.Scales.Count; activeFrame = stillframe; } s.X = activeFrame.Scales[scaleIndex].x / activeFrame.Scales[scaleIndex].t; s.Y = activeFrame.Scales[scaleIndex].y / activeFrame.Scales[scaleIndex].t; s.Z = activeFrame.Scales[scaleIndex].z / activeFrame.Scales[scaleIndex].t; }