web-dev-qa-db-ja.com

モデルビュー投影マトリックスの目的

モデルビュー投影マトリックスを使用する目的は何ですか?シェーダーにモデルビュー投影マトリックスが必要なのはなぜですか?

98
Yuriy Vikulov

モデル、ビュー、および投影マトリックスは、3つの別個のマトリックスです。オブジェクトのローカル座標空間からワールド空間へのモデルマップ、ワールド空間からカメラ空間へのビュー、カメラからスクリーンへの投影。

3つすべてを構成する場合、1つの結果を使用してオブジェクト空間から画面空間までずっとマッピングでき、着信頂点位置からプログラム可能なパイプラインの次のステージに渡す必要があるものを計算できます。

古い固定機能パイプラインでは、モデルとビューを一緒に適用し、それらから派生した別の結果を使用してライティングを実行します(たとえば、オブジェクトにスケーリングを適用しても、法線はまだ単位長であるように)、投影を適用します。これはOpenGLに反映されており、モデルとビューマトリックスを分離せず、単一のモデルビューマトリックススタックとして保持しています。したがって、シェーダーに反映されることもあります。

そのため、シェーダーは、合成モデルビューの投影行列を使用して、各モデルにロードした頂点からスクリーンにマッピングすることがよくあります。必須ではありません。同じことを達成する方法はたくさんあります。すべての可能な線形変換が可能なので、それは普通です。そのため、古いバージョンの固定パイプラインの世界では、より構成の少ないバージョンも標準でした。

189
Tommy

マトリックスは便利だからです。行列は、異なる空間に関して位置/方向を変換するのに役立ちます(空間は、3つの垂直軸と1つの原点で定義できます)。

@ legends2kでコメントで指定されている本の例を次に示します。

カルテシアの住民は、都市の地図を使用します。原点は、コンパスの主要なポイントに沿って方向付けられた町と軸の中心に非常に賢明に中心を置いています。ディスレクシアの住民は、任意の点を中心とする座標と、おそらく当時は良いと思われた軸を任意の方向に走らせた都市の地図を使用しています。両都市の市民はそれぞれのマップに非常に満足していますが、州運輸技術者はデカルトとディスレクシアの間の最初の高速道路の予算を実行するタスクを割り当てました。必ずしも他の誰よりも優れているわけではないが、彼よりも優れたシステム。

別の例を示します。

ゲームの中で、世界の座標を使用して頂点位置を持つ自動車オブジェクトを作成したと仮定します。まったく異なる世界の他のゲームでこの同じ車を使用しなければならないと仮定すると、位置を再度定義する必要があり、計算が複雑になります。これは、新しい世界に関して車の窓、ボンネット、ヘッドライト、ホイールなどの位置を再度計算する必要があるためです。

モデル、ビュー、投影の概念を理解するには、 this ビデオを参照してください。 (強くお勧めします)

次に、 this を参照して、世界の頂点がどのように行列として表され、どのように変換されるかを理解します。

7
cegprakash