差分

ナビゲーションに移動 検索に移動

法線マッピング

957 バイト追加, 2020年4月9日 (木) 09:45
編集の要約なし
'''法線マッピング'''([[英語]]:normal mapping)とは、[[バンプマッピング]]の発展形で、[[バンプマップ]]では[[ピクセル]]単位で「高さ」の情報を持つのに対して、[[法線マップ]]では[[ピクセル]]単位で「XYZの[[ベクトル]]」を持つものをいう。
 
== 概要==
バンプマップなしの場合は頂点に[[法線]]を持たせ、2つの頂点の[[法線]]と[[ピクセル]]の位置から大雑把にピクセルの[[法線]]を算出する。 バンプマップありの場合はこれに「高さ」をかけ合わせてもう少し精度をよく算出していた。
なお、デメリットもある。 まず法線マップの[[データ]]の作成は非常に敷居が高い。 [[ZBrush]]では[[スカルプト]]でゴシゴシやるとモデルと一緒に出力できるらしい。 [[スカルプト]]を使えるツールなど素人には買えるわけがない(無償で使える[[Fusion 360]]で出力できるかもしれないが試してはいない)。
 
== 値変換 ==
一般的な[[プログラマブルシェーダー]]には法線マップ専用の受け口はない。
そのため法線マップは[[テクスチャマップ]]に変換して[[シェーダー]]に渡すことになる。
 
この際に法線ベクトルの各値は「-1から+1」の範囲なのに対して、
[[テクスチャ]]の[[RGB]]の[[データ]]は「0から+1」の範囲となっているため以下のような変換を行う必要がある。
格納値 = (法線 + 1.0) * 0.5
 
この格納値をプログラマブルシェーダー内で再び法線ベクトルに戻して利用する。
法線 = 2.0 * 格納値 - 1.0;
 
== 上方向 ==
3D空間では「Y軸が上方向」ということが多いが、
法線空間では「Z軸が上方向」というのが一般的である。
 
=== フラット ===
Z軸が上方向なので以下がフラットである。
法線ベクトル(0,0,1) = 格納値(0.5, 0.5, 1.0)
 
== 関連項目==
*[[法線]]

案内メニュー