【问题标题】:How to move models in Xna as a whole?如何在 Xna 中整体移动模型?
【发布时间】:2012-04-19 13:48:00
【问题描述】:

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

【问题讨论】:

    标签: c# model matrix xna-4.0 blender


    【解决方案1】:

    如果你这样称呼:

        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);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 2014-09-05
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 2011-05-18
      相关资源
      最近更新 更多