public void TestPlayAnimation() { var controller = new AnimationControllerSkeleton(null); Skeleton skeleton; TheWizards.Animation.Animation animation; CreateTestAnimation(out skeleton, out animation); controller.SetAnimation(0, animation); var p = new Vector3(4, 5, 4); var m1 = Matrix.RotationAxis(Vector3.Normalize(new Vector3(-1, 4, 3)), 4) * Matrix.Translation(p); var m2 = Matrix.RotationAxis(Vector3.Normalize(new Vector3(3, 2, 8)), 4) * Matrix.Translation(p); var game = new DX11Game(); var visualizer = new SkeletonVisualizer(); game.GameLoopEvent += delegate { controller.ProgressTime(game.Elapsed); controller.UpdateSkeleton(); skeleton.UpdateAbsoluteMatrices(); visualizer.VisualizeSkeleton(game, skeleton); }; game.Run(); }
public void TestInterpolateBoneRelativeMatrices() { var controller = new AnimationControllerSkeleton(null); var p = new Vector3(4, 5, 4); var m1 = Matrix.RotationAxis(Vector3.Normalize(new Vector3(-1, 4, 3)), 4) * Matrix.Translation(p); var m2 = Matrix.RotationAxis(Vector3.Normalize(new Vector3(3, 2, 8)), 4) * Matrix.Translation(p); var game = new DX11Game(); var factor = 0f; float dir = 1; game.GameLoopEvent += delegate { factor += game.Elapsed * dir; if (factor > 1) { dir = -1; } if (factor < 0) { dir = 1; } var m = controller.InterpolateBoneRelativeMatrices(m1, m2, factor); game.LineManager3D.DrawGroundShadows = true; game.LineManager3D.AddLine(p, Vector3.TransformCoordinate(MathHelper.Up * 5, m1), Color.Red); game.LineManager3D.AddLine(p, Vector3.TransformCoordinate(MathHelper.Up * 5, m2), Color.Green); game.LineManager3D.AddLine(p, Vector3.TransformCoordinate(MathHelper.Up * 5, m), Color.Yellow); }; game.Run(); }