如何将模型与特定骨骼上的另一个模型联系起来?

时间:2012-12-19 08:58:27

标签: c# model xna game-engine mesh

我遇到一个模型附加到另一个模型上的“骨”准确的难度。 我搜索了几个论坛但没有结果。我看到很多人都问了同样的问题,但没有真正的结果看不到任何回应。 发现线程:

https://gamedev.stackexchange.com/questions/21129/how-to-attach-two-xna-models-together

https://gamedev.stackexchange.com/questions/44515/how-can-i-attach-a-model-to-the-bone-of-another-model

https://stackoverflow.com/questions/11391852/attach-model-xna

但我认为这是可能的。

这是我的代码示例附加了我的播放器手的“立方体”

private void draw_itemActionAttached(Model modelInUse)
    {
        Matrix[] Model1TransfoMatrix = new Matrix[this.player.Model.Bones.Count];
        this.player.Model.CopyAbsoluteBoneTransformsTo(Model1TransfoMatrix);
        foreach (ModelMesh mesh in modelInUse.Meshes)
        {
            foreach (BasicEffect effect in mesh.Effects)
            {
                Matrix model2Transform = Matrix.CreateScale(1f) * Matrix.CreateFromYawPitchRoll(0, 0, 0);

                effect.World = model2Transform * Model1TransfoMatrix[0]; //root bone index
                effect.View = arcadia.camera.View;
                effect.Projection = arcadia.camera.Projection;
            }
            mesh.Draw();
        }
    }

1 个答案:

答案 0 :(得分:2)

这种方法可能有所不同,但通常的做法是将一个或多个骨骼添加到“可装备”中,无论它们是否为手持设备。这样,对象的骨骼可以在运行时添加到播放器中,从而“装备”所需位置的项目。

一些阅读:http://en.csharp-online.net/XNA_Game_Programming%E2%80%94PlayerWeapon