短い答え
法線マップと法線は2つの異なるものです。法線はメッシュ/サーフェスの幾何学的なプロパティであり、シェーディングとライティングの計算専用ではありませんが、実際には物理学など他の多くの用途があります。法線マップは、バンプをシミュレートするためにコンピューターグラフィックスで使用される代替法線ベクトルをエンコードするテクスチャです。
ロングアンサー
法線形状の法線ベクトルまたは(通常の頂点、例えば面法線)指定されたオブジェクトに垂直な線です。グラフィックスの法線は、通常、光の方向と表面の法線との内積をとることにより、表面全体の拡散反射を計算するなど、光の計算に使用されます。通常、法線はメッシュの幾何学的特性(面/頂点)に基づいて計算され、同じ平面にある2つの非平行エッジの外積を取ります。
OpenGLでは、頂点ごとに指定されているため、頂点ごとに法線が指定されます(そのため、頂点属性と呼ばれます)。法線はOpenGLによって面(三角形)の各頂点にわたって補間できるため、頂点ごとではなくピクセルごとに反射光を計算できるため、より正確な結果が得られます。
法線マッピング:一方、コンピュータグラフィックスでは、テクスチャマップの法線をエンコードする手法であるため、各法線はテクセルごとにエンコードされます。通常、バンプとへこみの照明を偽造するために使用されます(バンプマッピング、視差マッピングなど)。
法線はメッシュ/サーフェスの幾何学的プロパティに基づいて計算されるため、法線マップは、ポリゴンを追加せずにバンプをシミュレートしてサーフェスに詳細を追加できる代替法線を提供します。
通常、法線マップは、より詳細な3Dモデルを使用して生成され、このモデルに基づいて法線を計算し、法線マップにエンコードします。
なぜ両方が必要なのですか?
レンダリングについてのみ言えば、法線と法線マップは通常、最終的な照明効果を達成するために一緒に使用されます。良い例はバンプシェーダーです。接線空間と呼ばれるものを計算する幾何学的法線。通常、接線空間は法線マップの再利用性を提供するために使用されます。
法線はサーフェスの幾何学的属性と見なされ、光の計算だけでなく多くの用途があることに注意してください。一方、法線マップは通常、表面的な効果に使用されます。
答えを拡張して、接線空間が重要である理由を説明します。
簡単な答え:
正接空間は、基になるジオメトリに依存しない法線マップを作成するために使用されます。
[編集]接線空間の法線マップとワールド空間の法線マップを表す画像を追加しました。
長い答え:
下の図は、UV平面と接線空間を定義する法線を示しています。法線マップを生成するとき、使用される空間は常にZ方向を向く法線を持っていることがわかります(法線マップが青みがかる理由です) 、これは表面の曲率**を無視するのに役立ちます。
接線空間には、法線マップのエンコードが特定のメッシュ法線にバインドされていないという利点があります。法線マップをワールド空間またはオブジェクト空間でエンコードすると、エンコードする各法線はワールド空間で元のメッシュ法線がどのように変化するかに基づいた方向を持ち、法線マップがモデル変換の影響を受けることは言うまでもありません。
上記の2つの図では、接線空間が法線マップを作成していることは非常に明確です(右)。すべての法線はバンプの効果をシミュレートするために小さな変化でほぼ同じ方向にエンコードされているため、下にあるジオメトリとは無関係です。
**表面の曲率は、幾何学的なオブジェクトが平坦であるか、線の場合は真っ直ぐであるかによって逸脱する量によって定義されますが、これはコンテキストに応じて異なる方法で定義されます。