2

GLSLシェーダーで法線マッピングを行うための法線モデル行列を計算する必要があります。私はこれが正しいことを確認したいと思います:ビュー(カメラモデル)マトリックスにジオメトリモデルマトリックスを乗算すると、ビューマトリックスはすでに反転されているはずですか?ここここにあるようなオンラインの例からは明らかではありません。また、場合によっては、結果の行列を転置することもあります。なんで?では、OpenGLで通常のモデル行列を作成する正しい方法は何ですか?

現在、私はこのようにしています:

glm::mat4 view = inverse(GetCameraModel());
glm::mat3 normalModelMatr= glm::mat3(view * mesh.GetModel());

これは行く方法ですか?

4

1 に答える 1

5

正しい正規行列は、モデル ビュー行列の逆転置です。異なる量で軸をスケーリングする不均一なスケーリングを行わない場合、行列の逆行列は直交であるため、その転置に等しくなります。したがって、2 つの操作は相殺され、元の行列になります。

不均一なスケーリングを行うと、行列は直交せず、逆転置を行う必要があります。

法線の回転とスケーリングのみが必要で、変換は必要ないため、上部の 3x3 マトリックスを使用します。

したがって、不均一なスケーリングを使用しない限り、通常の行列は正しいです。

于 2012-12-11T18:42:54.553 に答える