您可以使用Microsoft 的SkinnedModelSample.确保在属性框中将fbx文件的ContentProcessor属性设置为SkinnedModelProcessor,然后您可以执行(需要优化):
主要游戏类:
AnimationPlayer player;// This calculates the Matrices of the animation
AnimationClip clip;// This contains the keyframes of the animation
SkinningData skin;// This contains all the skinning data
Model model;// The actual model
Run Code Online (Sandbox Code Playgroud)
LoadContent方法:
model = Content.Load<Model>("path_to_model");
skin = model.Tag as SkinningData;// The SkinnedModelProcessor puts skinning data in the Tag property
player = new AnimationPlayer(skin);
clip = skin.AnimationClips["run"];// The name of the animation
player.StartClip(clip);
Run Code Online (Sandbox Code Playgroud)
绘制方法:
Matrix[] bones = player.GetSkinTransforms();
// Compute camera matrices.
Matrix view = Matrix.CreateLookAt(new Vector3(0, 0, -30), // Change the last number according to the size of your model
new Vector3(0, 0, 0), Vector3.Up);
Matrix projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4,
device.Viewport.AspectRatio,
1,
10000);
// Render the skinned mesh.
foreach (ModelMesh mesh in model.Meshes)
{
foreach (SkinnedEffect effect in mesh.Effects)
{
effect.SetBoneTransforms(bones);
effect.View = view;
effect.Projection = projection;
effect.EnableDefaultLighting();
effect.SpecularColor = new Vector3(0.25f);
effect.SpecularPower = 16;
}
mesh.Draw();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7405 次 |
| 最近记录: |