私は TBN の概念を理解できなかったと思います。バンプ マッピング、法線マッピングなどに使用されています。しかし、modelview マトリックスを使用してテクセルから法線を抽出することはできませんか? TBN マトリックスの説明が必要ですが、使用理由がよくわかりません。
1 に答える
使用するすべてのポイントとベクトルは、何らかの参照フレームで定義されていますが、あるフレームから別のフレームに変換できます。
テクスチャ マップから読み取る法線は、「接線空間」にあります。これは実際には必須ではありません。たとえば、それらをワールド空間で定義することもできます。しかし、考えてみてください。モデルを回転させた場合、法線はどうなりますか? 接線空間はモデルとともに回転します。つまり、法線も回転します (メッシュを変形/スキニングしても)。そうしないと、可能な回転ごとに異なる法線を指定する必要があります。
そのため、接線空間を使用することが事実上必要になっています (いずれにせよ、それは選択です)。
さて、問題は、あなたのライトとあなたの目はおそらく接線空間ではなく、ワールド空間で定義されているということです. たとえば、半角ベクトルなど
も同様です。それらがすべて同じ座標系にある場合にのみ、意味のある方法で計算できます。TBN を使用すると、あるものから別のものに変換できます。
頂点の法線だけでは十分ではありません (ただし、法線と T または B のいずれかは、外積を使用して計算できます)。方向は単一のベクトルでしか定義できず、「ねじ」では定義できないためです。そのため、少なくとももう 1 つのベクトルがなければ、法線は定義されず、すべての方向が等しく有効または無効な状態で、あらゆる方法で頂点法線を中心に回転する可能性があります。
同様の状況は、複数のテクセルを取得する必要がある場合にも発生します (たとえば、法線マップではなく高さマップをサンプリングする場合)。確かに、補間された UV 座標があります。したがって、サンプリングするテクセルは明確に定義されています。
しかし、ここでは、4x4 クワッドで他の 3 つのテクセルもサンプリングしたいと考えています。または、レイマーチングをしたいかもしれません。次のテクセルをどの方向にサンプリングしますか? 法線を中心に UV 座標系を好きなように回転させることができるため、わかりません。すべての回転は等しく有効または無効です。
TBN はそれを解決します。N は上向き (「テクスチャ イメージから離れて」) を指し、T と B は U と V と同じ方向を指すためです。