protected override void Initialize() { CharacterTexture = Content.Load <Texture2D>("swat"); RifleTexture = Content.Load <Texture2D>("hk_mp5n"); CharacterMesh = new SkinnedModel(); CharacterMesh.GraphicsDevice = GraphicsDevice; CharacterMesh.FilePath = @"Content\Soldier.fbx"; CharacterMesh.Initialize(); CharacterMesh.Meshes[0].Texture = Content.Load <Texture2D>("swat"); AnimationIdle = new SkinnedModelAnimation(); AnimationIdle.FilePath = @"Content\Rifle Idle.dae"; AnimationIdle.Load(); AnimationRunning = new SkinnedModelAnimation(); AnimationRunning.FilePath = @"Content\Rifle Run.dae"; AnimationRunning.Load(); AnimationWalk = new SkinnedModelAnimation(); AnimationWalk.FilePath = @"Content\Rifle Walking.dae"; AnimationWalk.Load(); ModelRifle = new SimpleModel(); ModelRifle.GraphicsDevice = GraphicsDevice; ModelRifle.FilePath = @"Content\mp5.3ds"; ModelRifle.Initialize(); ModelInstance = new SkinnedModelInstance(); ModelInstance.Mesh = CharacterMesh; ModelInstance.SpeedTransitionSecond = 0.4f; ModelInstance.Initialize(); ModelInstance.SetAnimation(AnimationIdle); HeadBoneAnimationInstance = ModelInstance.GetBoneAnimationInstance("soldier_Head"); HandBoneAnimationInstance = ModelInstance.GetBoneAnimationInstance("soldier_RightHand"); SimpleModelEffect = this.Content.Load <Effect>("SimpleModelEffect"); SkinnedModelEffect = this.Content.Load <Effect>("SkinnedModelEffect"); var Position = new Vector3(500, 200, 0); var Direction = new Vector3(0, 200, 0); ViewMatrix = Matrix.CreateLookAt(Position, Direction, Vector3.Up); ProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(60), GraphicsDevice.DisplayMode.AspectRatio, 0.1f, 5000f); base.Initialize(); }
void DrawSkinnedModel(SkinnedModelInstance skinnedModelInstance, GameTime gameTime) { SkinnedModelEffect.Parameters["SunOrientation"].SetValue(Vector3.Normalize(new Vector3(3, 5, 2))); SkinnedModelEffect.Parameters["World"].SetValue(skinnedModelInstance.Transformation); SkinnedModelEffect.Parameters["WorldViewProjection"].SetValue(skinnedModelInstance.Transformation * ViewMatrix * ProjectionMatrix); foreach (var meshInstance in skinnedModelInstance.MeshInstances) { SkinnedModelEffect.Parameters["gBonesOffsets"].SetValue(meshInstance.BonesOffsets); SkinnedModelEffect.Parameters["Texture1"].SetValue(meshInstance.Mesh.Texture); GraphicsDevice.SetVertexBuffer(meshInstance.Mesh.VertexBuffer); GraphicsDevice.Indices = meshInstance.Mesh.IndexBuffer; GraphicsDevice.DepthStencilState = DepthStencilState.Default; foreach (EffectPass pass in SkinnedModelEffect.CurrentTechnique.Passes) { pass.Apply(); GraphicsDevice.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, meshInstance.Mesh.FaceCount); } } }