ホームページ >バックエンド開発 >C++ >glm::lookAt() を使用してモデル行列を設定できますか?

glm::lookAt() を使用してモデル行列を設定できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-10 05:52:02902ブラウズ

Can glm::lookAt() Be Used to Set the Model Matrix?

modelMatrix を変換する

一般的なレンダリング パイプラインでは、一連の行列を使用してシーン内のオブジェクトに変換が適用されます。

オブジェクト座標 (モデル) Space):

  • 単一オブジェクトのローカル空間。頂点の位置はこの空間で定義されます。

ワールド座標:

  • すべてのオブジェクトが配置されるシーンのグローバル座標系。

モデルマトリックス:

  • オブジェクトをモデル空間からワールド空間に変換します。位置、方向、およびスケーリングを定義します。

表示空間 (目の座標):

  • ビューアの位置、方向に基づく座標系、および上ベクトル。

ビューマトリックス:

  • ワールド空間からビュー空間に変換し、「カメラ」視点を提供します。

クリップ座標:

  • ビューに対するクリッピングに使用される同次座標錐台。

投影行列:

  • ビュー空間からクリップ空間に変換し、ビューポート上の 3D 点を 2D 点にマッピングします。

正規化されたデバイス座標(NDC):

  • 視点の分割に使用される、w コンポーネントで除算されたクリップ空間座標。

ウィンドウ座標 (画面座標):

  • ビューポートの座標

glm によるモデル行列の変換

glm::lookAt() は主にビューを設定するように設計されています。マトリックスをモデル マトリックスとして使用するには、次のような特定の変更を適用できます。

アドレスへの変換位置:

  • 結果の行列の 3 列目の要素を否定します: m_Orientation[3][0] = -m_Orientation[3][0]; ...

頂点シェーダー変換:

  • カメラ行列、モデル行列、頂点位置の乗算: gl_Position = CameraMatrix * ModelMatrix * Pos

注: このアプローチは望ましい結果を達成できますが、モデル行列の設定には最適ではありません。一般に、ライブラリによって提供される特定の関数を使用するか、モデル行列変換を処理する独自の関数を作成することをお勧めします。

以上がglm::lookAt() を使用してモデル行列を設定できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。