法線マップの色が青と紫になるのはなぜですか?


11

通常のマッピングについて学習しています。RGB値がXYZに変換されることを理解しましたが、私の質問はそれどのように変換され、なぜ法線マップが青と紫の色になっているのですか?

回答:


12

法線マップは-1から1までのベクトルをカバーしているので、この範囲を0-> 1に引き延ばして、すべてをRGBの範囲内に収めることができます。

したがって、通常は法線に変換を適用して、それを目に見えるものに変換します。

vec3 colour = vec3(0.5) + normal * 0.5;

青い色は、法線マップがプリミティブ(三角形など)の法線に対して使用され、デフォルトの(0,0,1)方向で三角形の法線からの逸脱がないことを示すためです。通常、フラグメントシェーダーは、実行時に現在のピクセルごとの法線に対してこの法線を回転させる必要があります。


このコードvec3 colour = vec3(0.5) + normal * 0.5;はRGBをXYZに変換していますか?
Abhinay Singh Negi

1
@AbhinaySInghNegiいいえ、色はRGBで、法線はXYZなので、これはXYZをRGBに変換しています。RGBをXYZにしたい場合は、vec3 normal = (colour - vec3(0.5)) * 2.0;
bram0101

20

接線空間の法線マップのみが主に青です。これは、青色が(0,0,1)の法線を表すためです。これは、三角形が平面xとyにある場合、つまり表面に垂直な場合に、変化しない法線になります。タンジェントxとバイタンジェントy(バイノーマルとも呼ばれます)は、赤と緑のチャネルでエンコードされ、これらは、三角形のサーフェス上のポイントのタンジェント空間法線を作成するために形成されます。

接線空間の法線マップが赤(1.0、0.0、0.0)でのみ色をエンコードする場合、これにより、三角形のサーフェスに平行な接線空間の法線が生成されます。これは、三角形がサーフェスとビューベクトルから90度でのみ照明されることを意味するため、決して見られません。この時点では、三角形を見ることができなくなります。

ワールドスペースの法線マップは、球体上の単位法線をエンコードするため、チャネルごとに[-1、1]から[0、1]にエンコードされると、主に異なる色になる可能性があります。

比較はここで見ることができます:

ここに画像の説明を入力してください

実際には、法線マップは通常、BC5などの2チャネル形式でエンコードされます。これは実際にはxとyのみを格納し、zは単位ベクトルであるため、zが再構築されます。これにより、ファイルサイズを増やすことなく、より多くのビットでより高い精度を維持できます。


接線空間は一意にパラメーター化されていませんが、周囲にメッシュ+接線空間の法線マップの画像がたくさんあります。接線空間の基準を定義する従来の方法はありますか?
Alec Jacobson、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.