如何在Xna中整体移动模型

本文关键字:移动 模型 Xna | 更新日期: 2023-09-27 18:30:15

我有一个在Blender中制作的模型,里面有单独的网格。当我把它放在Xna项目中并尝试通过矩阵平移移动模型时,所有单独的网格都朝着不同的方向移动。我的代码基本上单独更新每个网格。我应该使用更好的代码来使模型的网格一起移动吗?

如何在Xna中整体移动模型

如果你称之为:

    private void DrawModel(Model model, Matrix worldMatrix)
    {
        //Matrix array for number of bones
        Matrix[] modelTransformations = new Matrix[model.Bones.Count];
        //Put bones into matrix array
        model.CopyAbsoluteBoneTransformsTo(modelTransformations);
        //for every model
        foreach (ModelMesh mesh in model.Meshes)
        {
            foreach (BasicEffect effect in mesh.Effects)
            {
                //Add default lighting
                effect.EnableDefaultLighting();
                //Set default postion
                effect.World = modelTransformations[mesh.ParentBone.Index] * worldMatrix;
                //Set view
                effect.View = camera.viewMatrix;
                //Set projection
                effect.Projection = camera.projectionMatrix;
            }
            //Draw Model
            mesh.Draw();
        }
    }

然后像这样翻译你输入的世界矩阵:

modelWorld *= Matrix.CreateTranslation(XDir, YDir, ZDir);

你应该没有问题。至少,我是这样做的。