我不太了解effect.Worldeffect.View等是什么,为什么我们将矩阵放在其中?

foreach (ModelMesh mesh in model1.Meshes)
        {
            foreach (BasicEffect effect in mesh.Effects)
            {
                effect.World = Matrix.CreateWorld(Vector3.Zero, Vector3.Forward, Vector3.Up);
                effect.View = Matrix.CreateLookAt(Vector3.Zero, Vector3.Zero, Vector3.Up);
            }
        }

最佳答案

effect.World不是代表世界的矩阵。它是代表3d对象(网格,模型)相对于3d游戏世界的位置和方向的矩阵。每个对象的位置和/或指向不同时,它们的效果也会不同。

effect.View是一个矩阵,以(倒置的形式)表示摄像机相对于同一3d游戏世界的位置和方向。在大多数情况下,只有一个摄像头,但是可以有更多的摄像头(例如,后视镜将拥有自己的视点矩阵,而不是显示赛车游戏挡风玻璃上的主屏幕的主屏幕)。


模型的顶点很难模拟局部空间。
然后是effect.World将它们转换为游戏世界空间。
然后使用effect.View将它们转换为相机空间。
然后是effect.Projection将它们转换为2d屏幕空间和“ volia”,您的像素着色器知道在哪里绘制内容。

10-06 10:07
查看更多