私はOpenGLグラフィックを学んでいて、影になっています。私が読んでいるチュートリアルでは、法線と光ベクトルをカメラ空間に変換するよう指示しています。どうしてこれなの?なぜあなたは模型の空間にコインを保つことができないのですか?モデル空間の代わりにカメラ空間を法線に使用するのはなぜですか?
次の質問は、モデル変換を処理する方法です。私は決定的な答えを見つけることができません。私は現在、次のコードを持っています:
vec3 normCamSpace = normalize(mat3(V) * normal);"
vec3 dirToLight = (V*vec4(lightPos, 0.0)).xyz;"
float cosTheta = clamp(dot(normCamSpace, dirToLight),0,1);"
Vはビューマトリックスまたはカメラマトリックスです。モデルの位置、回転、スケールが変わったときに、光の移動や編集方法が不明です。
よし。しかし、私はまだ、光源や位置をどのように変更して、回転や平行移動のようなものに対応できるかは不明です。 – user975989
標準的な方法は、頂点の位置を変換するのと同じようにライトの位置を変換することです。スポットライト(スポット方向が必要なスポットライト)の場合は、法線を変換するのと同じようにスポット方向を変換します。空間間の各変換行列(これは、ワールドからモデルローカルへの変換にも当てはまります)では、ノーマル変換は常にポジション変換の逆転置です。 – datenwolf