Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.fbx模型中设置特定骨骼的动画_C#_Animation_Xna_Fbx - Fatal编程技术网

C# 在.fbx模型中设置特定骨骼的动画

C# 在.fbx模型中设置特定骨骼的动画,c#,animation,xna,fbx,C#,Animation,Xna,Fbx,我已经尝试了一段时间来查找有关如何在fbx模型中移动特定骨骼的信息。我可以通过直接在模型上旋转根节点来实现 public void Update(GameTime gameTime) { _model.Bones["RootNode"].Transform = Matrix.CreateRotationY(MathHelper.ToRadians(_ANGLE)) * _model.Bones["RootNode"].Transform; UpdateModelTransform

我已经尝试了一段时间来查找有关如何在fbx模型中移动特定骨骼的信息。我可以通过直接在模型上旋转根节点来实现

public void Update(GameTime gameTime)
{
    _model.Bones["RootNode"].Transform = Matrix.CreateRotationY(MathHelper.ToRadians(_ANGLE)) * _model.Bones["RootNode"].Transform;
    UpdateModelTransforms();
}
模型应该是正确的,因为它是由专业的3D艺术家制作的,在XNA model Viewer中,所有东西都是可移动的,看起来还可以。我可以选择一个特定的骨骼,并根据需要移动它,但当涉及到通过XNA中的代码选择相同的骨骼时,我无法让它工作。该模型在Maya中创建,使用默认的phong着色器。 下面是我觉得最适合做这件事的代码,取自世界各地的不同教程

第二种方法适用于根节点,但在选择特定骨骼时,不会发生任何情况!有人注意到我做错了什么吗

_model = _contentManager.Load<Model>("Models\\kenny_v002");

_originalBoneTransforms = new Matrix[_model.Bones.Count];
_worldTransforms = new Matrix[_model.Bones.Count];
_transforms = new Matrix[_model.Bones.Count];

_model.CopyAbsoluteBoneTransformsTo(_transforms);
_model.CopyAbsoluteBoneTransformsTo(_originalBoneTransforms);

public void Update(GameTime gameTime)
{
    int boneIndex = _model.Bones["RootNode"].Index;

    _transforms[boneIndex] = Matrix.CreateRotationY(_ANGLE) * _originalBoneTransforms[boneIndex];

    //Root bone
    _worldTransforms[0] = _transforms[0];

    //Child bones
    for (int bone = 1; bone < _worldTransforms.Length; bone++)
    {
        int parentBone = _model.Bones[bone].Parent.Index;
        _worldTransforms[bone] = _transforms[bone] * _worldTransforms[parentBone];
    }
}

public void Draw()
{
    foreach (ModelMesh mesh in _model.Meshes)
    {
        foreach (BasicEffect effect in mesh.Effects)
        {
            effect.EnableDefaultLighting();

            effect.World = _worldTransforms[mesh.ParentBone.Index];
            effect.Projection = _projection;
            effect.View = _view;
        }
        mesh.Draw();
    }
}
是否足以修改骨骼?或者我也必须修改网格吗