2

我不太明白什么是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);
            }
        }
4

2 回答 2

2

effect.World 不是代表世界的矩阵。它是一个矩阵,表示 3d 对象(网格、模型)相对于 3d 游戏世界的位置和方向。每个对象将具有不同的效果。如果它们的位置不同和/或指向不同,则世界矩阵。

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

  1. 模型的顶点很难对局部空间进行建模。
  2. 然后 effect.World 将它们转换为游戏世界空间。
  3. 然后 effect.View 将它们转换为相机空间。
  4. 然后 effect.Projection 将它们转换为 2d 屏幕空间和“volia”,您的像素着色器知道在哪里绘制什么。
于 2012-12-29T16:49:44.470 回答
1

来自 MSDN;

BasicEffect.World

获取或设置世界矩阵。使用这个矩阵来改变模型的位置,使用世界坐标

BasicEffect.View

获取或设置视图矩阵。使用这个矩阵来改变相机的位置和方向

我认为粗线可以解释它们的区别。我还发现了一些有用的文章;

于 2012-12-29T13:30:14.643 回答