public void TestImportAMCCreateRelativeMatrices() { AMCParser parser = new AMCParser(); using (var strm = EmbeddedFile.GetStream("MHGameWork.TheWizards.Tests.Features.Simulation.Animation.Files.TestAnimation02.amc")) { parser.ImportAMC(strm); } // Import skeleton var asfParser = new ASFParser(); using (var strm = EmbeddedFile.GetStream("MHGameWork.TheWizards.Tests.Features.Simulation.Animation.Files.TestSkeleton02.asf")) { asfParser.ImportASF(strm); } var skeleton = asfParser.ImportSkeleton(); var game = new DX11Game(); var vis = new SkeletonVisualizer(); for (int i = 0; i < skeleton.Joints.Count; i++) { skeleton.Joints[i].RelativeMatrix = Matrix.Identity; } float time = 0; float speed = 1; game.GameLoopEvent += delegate { game.LineManager3D.DrawGroundShadows = true; time += game.Elapsed; var sampleNum = (int)(time * 120 * speed) % parser.Samples.Count; for (int i = 0; i < parser.Samples[sampleNum].Segments.Count; i++) { var seg = parser.Samples[sampleNum].Segments[i]; var asfJoint = asfParser.Joints.Find(j => j.name == seg.JointName); var joint = skeleton.Joints.Find(j => j.Name == seg.JointName); Matrix relativeMat = parser.CalculateRelativeMatrix(seg, asfJoint); joint.RelativeMatrix = relativeMat; } skeleton.UpdateAbsoluteMatrices(); vis.VisualizeSkeleton(game, skeleton, new Vector3(4, 0, 4)); }; game.Run(); }
public void TestImportSkeletonFromASF() { var parser = new ASFParser(); var root = new ASFJoint(); parser.RootJoint = root; var child1 = new ASFJoint(); child1.length = 4; child1.direction = MathHelper.Up; root.children.Add(child1); var child2 = new ASFJoint(); child2.direction = MathHelper.Up; child1.children.Add(child2); var skeleton1 = parser.ImportSkeleton(); skeleton1.UpdateAbsoluteMatrices(); using (var strm = EmbeddedFile.GetStream("MHGameWork.TheWizards.Tests.Features.Simulation.Animation.Files.TestSkeleton01.asf")) { parser.ImportASF(strm); } var skeleton2 = parser.ImportSkeleton(); skeleton2.UpdateAbsoluteMatrices(); var game = new DX11Game(); var vis = new SkeletonVisualizer(); game.GameLoopEvent += delegate { vis.VisualizeSkeleton(game, skeleton1, new Vector3(4, 0, 4)); vis.VisualizeSkeleton(game, skeleton2, new Vector3(11, 0, 11)); }; game.Run(); }
public void TestImportASF() { var parser = new ASFParser(); using (var strm = EmbeddedFile.GetStream("MHGameWork.TheWizards.Tests.Features.Simulation.Animation.Files.TestSkeleton01.asf")) { parser.ImportASF(strm); } var game = new DX11Game(); game.GameLoopEvent += delegate { drawASFJoint(game, parser.RootJoint, new Vector3(4, 0, 4)); }; game.Run(); }