モデリング行列の変換
質問:
GLM では、ViewMatrix を簡単に設定できるにもかかわらず、次を使用して ModelMatrix を設定します。 glm::lookAt では、オブジェクトの位置と回転が不正確になります。 glm::lookAt を使用してオブジェクトの向きをカメラの位置に合わせるにはどうすればよいですか? それともカスタム関数を作成する必要がありますか?
答え:
コンピューター グラフィックスでは、変換が適用されます。 3D 空間内のオブジェクトを正確に配置します。このプロセスには、ModelMatrix、ViewMatrix、ProjectionMatrix の 3 つの主要な変換行列が関係します。
モデル座標:
シーン内の各メッシュには、モデル空間と呼ばれる独自のローカル空間があります。頂点座標はこの空間内で定義され、ModelMatrix はワールド空間でのオブジェクトの位置、方向、相対サイズを定義します。
ワールド座標:
ワールド空間は座標です。複数のオブジェクトが配置されるシーン全体のシステム。
ビュー スペース:
ビュー スペースは、ビューの位置、視線を使用して、表示パースペクティブに対して相対的に定義されます。 、上方向。ビュー座標系の逆行列は ViewMatrix で、オブジェクトをワールド空間からビュー (目) 空間に変換します。
クリップ座標:
クリップ空間座標は均一であり、シーンの切り抜き。点の x、y、z コンポーネントが、反転された w コンポーネントと同次座標の w コンポーネントによって定義される範囲内にある場合、点はクリップ空間内にあります。
射影行列:
ProjectionMatrix は、シーンの 3D ポイントからビューポートの 2D ポイントへのマッピングを記述し、ビュー空間をクリップ空間に変換します。
正規化されたデバイス座標:
パース分割変換クリップ空間座標を (-1, -1, -1) ~ (1, 1, 1) の範囲内の正規化されたデバイス座標に変換します。
ウィンドウ座標:
正規化されたデバイス座標は次のとおりです。ウィンドウ座標 (画面座標) と深度バッファーの深度に線形にマッピングされ、ビューポートと深度範囲を定義します。
以上がModelMatrix に glm::lookAt を使用すると、GLM でオブジェクトの位置と回転が不正確になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。