接線空間法線マップが完全に青ではないのはなぜですか?


11

法線マップが青くならないのはなぜですか?法線のZ成分は青で表されるので、法線マップは主に青色である必要があると思います。法線はZ方向のサーフェスの外側を指しているため、Z成分が支配的であるため、主な色として青が表示されます。

定義により、接線空間は表面に垂直です。どの時点でも、法線は常にZ(青の方向)を指し、X(赤の方向)またはY(緑の方向)はありません。したがって、法線マップ(「法線マップ」であるため)は、法線の色が青(R = x = 0、G = y = 0、B = z = 1)であり、中間に陰影がない必要があります。

しかし、法線マップはそうではなく、陰影のグラデーションがあります。これはなぜですか?

回答:


19

接線空間は、幾何学的法線、つまりポリゴンの補間された頂点法線に対して垂直です。法線マップは、幾何法線によって定義された接線空間を基準にしたシェーディング法線を提供します。シェーディング法線がジオメトリック法線と同じでない場合(つまり、ジオメトリでモデル化されていないフィーチャを含む詳細な表面テクスチャがあるため)、法線マップは「フラットブルー」(RGB 128、128、255)から逸脱しています。

これは、法線マップの要点のようなものです。これらは、ポリゴンでこれらの小さな詳細をすべてモデル化していなくても、サーフェスの詳細で小規模な形状を照明とシェーディングで表す方法です。


1
詳しく説明すると、法線マップは通常、接線空間で行われます。これは、メッシュがアニメーション化されても正確に保たれるためです。たとえば、モデル空間の法線マップでは、法線マップをアニメーションと並行してアニメーション化する必要があります(これは特に複雑になります)。スケルトンや任意のラグドールなど)。静的ジオメトリの場合、すべてが青ではないモデル空間でモデル空間を作成できず、ピクセルシェーダーが少しだけ単純化されるという技術的な理由はありません(一貫性を犠牲にして、より多くのシェーダーが必要になり、さらに多くのシェーダーが必要になります)選択の変更)。
MaulingMonkey

1
(通常のマップデータも、モデル空間にある場合、通常、メッシュ上の複数の場所で再利用できません)
MaulingMonkey

+1; 最後のパラは質問の鍵です-それらがあった表面が完全に平らであると仮定されていた場合、それらは青色になります。表面にある程度の粗さがあると想定されていた場合、法線マップは、追加のジオメトリを指定する必要なくその粗さをモデル化します。
Maximus Minimus

2

簡単な答えは、範囲の偏りによるものです。

法線の範囲は、各コンポーネント(x、y、z)に対して-1,0〜1.0です。一方、24ビットRGBイメージとして保存される法線マップは、各コンポーネントの範囲が0〜255です。

つまり、ゼロであったすべてのコンポーネントは、法線マップ(128に丸める)で127.5(正確な中央)になります。

法線ベクトル(0,0,1)は、法線マップイメージでは(128,128,255)になり、純粋な青(0,0,255)ではなく、紫がかった色になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.