モデル マトリックスの変換
3D シーン内のオブジェクトの位置と方向を定義するには、通常、モデル マトリックスを使用します。 glm::lookAt() はビュー行列を設定するのに便利な関数ですが、モデル行列には直接適用できない場合があります。
モデル変換
モデル マトリックスは、頂点の位置をモデル空間 (オブジェクトのローカル座標系) からワールド空間 (シーン全体の座標系) に変換します。これは 3 つの主要要素で構成されます:
モデル マトリックスの作成
の代わりにglm::lookAt() を使用すると、次のようにモデル行列を手動で定義できます。 Structure:
[ X-axis.x, X-axis.y, X-axis.z, 0 ] [ Y-axis.x, Y-axis.y, Y-axis.z, 0 ] [ Z-axis.x, Z-axis.y, Z-axis.z, 0 ] [ trans.x, trans.y, trans.z, 1 ]
たとえば、オブジェクトを (0.4, 0.0, 0.0) に配置し、X 軸を中心に 45 度回転する場合、モデル行列を次のように定義します。
[ 1.0, 0.0, 0.0, 0.0 ] [ 0.0, 0.707, 0.707, 0.0 ] [ 0.0, -0.707, 0.707, 0.0 ] [ 0.4, 0.0, 0.0, 1.0 ]
シェーダー実装
内頂点シェーダーを作成したら、次のようにモデル マトリックスを使用して頂点の位置を変換できます:
gl_Position = CameraMatrix * ModelMatrix * Pos;
ここで:
以上がglm::lookAt() を使用せずにモデル行列を定義する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。