Doc:JA/2.6/Manual/Textures/Influence/Material/Bump and Normal

提供: wiki
移動先: 案内検索

Bump and Normal Maps

(バンプマップと法線マップ)

Description

(解説)

Normal Maps(法線マップ)と Bump Maps(バンプマップ)はどちらも同じ目的を持ちます。平らな表面の濃淡を変更して細かな凹凸があるように見せ、3D表面の細かな質感を真似ることです。各ピクセルの濃淡を変えるだけなので影は一切作らず、他のオブジェクトを遮ることもありません。表面に平行に近い浅い角度から見ると、表面の形状が本当のものではないことがわかるでしょう。

法線マップとバンプマップはどちらも、ピクセルの陰影処理に関わる法線角度(面の垂線の指す向き)を変えることで動作します。法線マップとバンプマップはよく同義語のように使われますが、若干の違いがあります。

Bump maps(バンプマップ)
カメラの観点(viewpoint)からのピクセルの相対的な高さである intensity(強度)を保存するテクスチャです。ピクセルは面の法線方向に、必要な分だけ動かされたように見えます("bump"(隆起)は、面の既存の法線ベクトルに沿って(法線ベクトルは変化させず)位置をずらすことだけで作られます)。グレイスケール画像を使うか、(画像を含む)RGBテクスチャの intensity 値を使うことができます。
Normal maps(法線マップ)
direction(向き)を保存する画像です。法線の向きが画像の RGB値に直接入っています。直線に沿う面から離れたピクセルだけをシミュレートするよりもにはるかに正確で、任意の方向に動かされたピクセルを任意の方法でシミュレートできます。欠点は、手描きで簡単に作れるバンプマップと違って、普通は何とかして生成する必要があり、マップを適用しようとしているジオメトリより高解像度のジオメトリから生成することもよくあります。
Blender の法線マップは法線を次のように保存します:
  • Red の (0-255) を X (-1.0 - 1.0) に対応づけ
  • Green の (0-255) を Y (-1.0 - 1.0) に対応づけ
  • Blue の (0-255) を Z (0.0 - 1.0) に対応づけ
法線はすべて観測者(viewer)のほうを向くので、負の Z 値は保存されません(どちらにしても見えません)。Blender は全範囲の blue を保存しますが、他の実装には blue の (128-255) を (0.0 - 1.0) に対応づけるものがあります。後者の変換は例えば "Doom 3" で使われています。

Workflow

(作業の流れ)

バンプマップと法線マップの作成と利用の流れは以下の通りです:

  1. 高精細(ハイポリ)のモデルをモデリングします
  2. バンプマップや法線マップを Bake(焼き込み)します
  3. より低精細のモデル(ローポリモデル)を作ります
  4. 通常の座標系でマップをローポリモデルにマッピングします

メッシュツールで高精細モデルを作る方法については、モデリングの章を参照してください。どこまで作りこむかはあなた次第です。たくさん隆起や細部(こぶ、しわ、突起)を作るほど、マップも高精細になります。

マップの Bake(焼き込み)とは、簡単にいえば、高精細メッシュ(ハイポリ)の細部描写を取り出して、頂点数を減らした同じ形のオブジェクトに用いることです。焼き込みは Blender の Render Bake 機能を使って行えます。

ローポリモデリングは Blenderのメッシュ編集ツールで行います。面の数は、通常は元の形状を示せる程度にすべきです。例えば、ハイポリモデルで細かく作られた耳が 1000枚の面でできているとします。ローポリモデルではこれを、元の耳のメッシュと同じ方向を向いた1枚の平面で置き換えることがあります。(ヒント: ここでは Blender の multi-resolution mesh モデリング機能を効果的に使えます)。

マッピングはテクスチャをローポリメッシュに適用する作業です。メッシュのマテリアルにテクスチャを適用する方法について、詳しくは テクスチャマッピングの章 を調べてみてください。バンプマップや法線マップでは特に次の点を確認してください:

  • バンプマップを使うときは、 テクスチャを Normal(法線)にマップして No RGB を有効化します。
  • 法線マップを使うときは、テクスチャを Normal(法線)にマップします。

2つのオブジェクトの座標系は一致しなければなりません。ハイポリモデルの UVマップを使ってベイクするなら、ローポリモデルの UVマッピングを行なって、UV座標をハイポリ画像の輪郭線にあうように並べる必要があります(ハイポリモデルの辺に揃える方法は UV展開 をご覧ください)。