2

effect.Worldなどとeffect.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 つしかありませんが、それ以上のカメラが存在する場合もあります (たとえば、カー レース ゲームのフロント ガラスの外の景色を表示するメイン画面とは対照的に、バック ミラーには独自のビュー マトリックスがあります)。

  1. モデルの頂点は、ローカル空間をモデル化するのが困難です。
  2. 次に、effect.World がそれらをゲーム ワールド空間に変換します。
  3. 次に、effect.View がそれらをカメラ空間に変換します。
  4. 次に、effect.Projection がそれらを 2D スクリーン スペースに変換し、ピクセル シェーダーがどこに何を描画するかを認識します。
于 2012-12-29T16:49:44.470 に答える
1

MSDN から;

BasicEffect.World

ワールド マトリックスを取得または設定します。この行列を使用して、ワールド座標を使用してモデルの位置を変更します

BasicEffect.View

ビュー マトリックスを取得または設定します。この行列を使用して、カメラの位置と方向を変更します

太い線は、それらの違いが正確に何であるかを説明していると思います。また、役立つ記事もいくつか見つけました。

于 2012-12-29T13:30:14.643 に答える