モデルビューの射影行列をどのような目的で使用していますか?シェーダーにモデルビュー投影行列が必要なのはなぜですか?
モデルビューの射影行列をどのような目的で使用していますか?シェーダーにモデルビュー投影行列が必要なのはなぜですか?
回答:
モデル、ビュー、および射影行列は、3つの別々の行列です。オブジェクトのローカル座標空間からワールド空間へのマップ、ワールド空間からカメラ空間へのビュー、カメラからスクリーンへの投影。
3つすべてを構成する場合、1つの結果を使用してオブジェクト空間から画面空間までずっとマッピングできます。これにより、入力頂点位置からプログラム可能なパイプラインの次のステージに渡す必要があるものを計算できます。
古い固定機能パイプラインでは、モデルとビューを一緒に適用し、それらから派生した別の結果を使用してライティングを実行します(オブジェクトに何らかのスケーリングを適用した場合でも、法線がユニット長であるように、いくつかの修正を加えます) )、次に投影を適用します。OpenGLに反映されていることがわかります。モデルとビューマトリックスを分離することはなく、それらを単一のモデルビューマトリックススタックとして保持します。したがって、シェーダーに反映されることもあります。
そのため、構成されたモデルビューの投影行列は、多くの場合、シェーダーが各モデルに読み込んだ頂点から画面にマッピングするために使用されます。これは必須ではありません。同じことを実現する方法はたくさんあります。可能なすべての線形変換を可能にするため、これは通常の方法です。そのため、それよりも少ない構成のバージョンも、昔ながらの固定パイプラインの世界では標準でした。
行列が便利だから。行列は、さまざまなスペースに関する位置/方向の変換に役立ちます(スペースは、3つの垂直軸と原点によって定義できます)。
@ legends2kによってコメントで指定された本の例を以下に示します。
カルテシアの居住者は、原点が町の中心にかなり敏感に中心に置かれ、軸がコンパスの基点に沿って向けられている自分の都市の地図を使用します。ディスレクシアの住民は、座標が任意の点を中心とし、軸が任意の方向に走り、おそらく当時は良い考えであった都市の地図を使用します。両方の都市の市民はそれぞれのマップに非常に満足していますが、カルテシアとディスレクシアの間の最初の高速道路の予算を立てるタスクを割り当てた州交通機関のエンジニアは、両方の都市の詳細を示すマップが必要であるため、3番目の座標を導入します必ずしも誰よりも優れているわけではないが、彼よりも優れているシステム。
ここに別の例があります
ワールド座標を使用して、頂点位置を持つゲームで自動車オブジェクトを作成したとします。まったく異なる世界の他のゲームでこの同じ車を使用しなければならない場合、位置を再度定義する必要があり、計算は複雑になります。これは、車内のウィンドウ、フード、ヘッドライト、ホイールなどの位置を、新しい世界に対して再度計算する必要があるためです。
モデル、ビュー、および投影の概念を理解するには、このビデオを参照してください。(強くお勧めします)
次に、これを見て、世界の頂点がどのように行列として表され、どのように変換されるかを理解してください。