元記事:
Normal Maps
Normalマップ
球のNormalマップ
| | NormalマップはNormalを直接RGB値に格納した画像です。3Dゲームやレンダリングソフトで、偽の3Dレリーフを非常にリアルにマッピングするためのポピュラーな方法です。
BlenderのNormalマップでは、Normalを以下のように格納します。 X(-1.0〜1.0)を赤(R)の値(0〜255)に。 Y(-1.0〜1.0)を緑(G)の値(0〜255)に。 Z( 0.0〜1.0)を青(B)の値(0〜255)に。
すべての点のNormalがカメラの方向に向くため、負の値は格納されません。Blenderでは青の範囲すべてに格納していますが、他のいくつかの実装では(0.0〜1.0)を青色の(128〜255)に割り当てています。後者の方法はDoom3などに使用されています。
|
AOでレンダリングしたレリーフのサンプル(カラーマップとして使用するのもいいでしょう)
上記のレリーフをNormalマップにしたもの
| | Normalマップの作成 Blenderでのこのようなマップを作成するのは非常に簡単です。単に"Nor"を"MapInput"に適用し、Blend Textureをグラディエントの定義に使用するだけです。これを三つのテクスチャチャネルにコピーし、各マッピング座標をX、Y、Zのみに適切に設定します。 また、解像度を最大範囲にするため、青色成分(Z)に正の値にのみ割り当てることをお勧めします。
こちらにそのMaterialのサンプル.blendファイルがあります。
このマップは広範囲のNormal値を得るため、そして透視変換によるひずみを防ぐため、Orthoカメラでレンダリングするのを忘れないで下さい。
|
Normalマップ作成の手順。左から右に進みます。
1- 三つのチャネルをデフォルトのBlend Texture(横方法にグラデーション)で作成。
2- 二つめのチャネルを例にして、(Normalの)Y座標を(Blendの)Xに割り当てる。
3- 使用するテクスチャ座標を"Nor"に。
4- Map Inputで緑色を作成。
5- 前のチャネルに対し、その色をAddするようにする。
Normalマップの使用
Normalマップの使用は簡単で、TextureButtonsのImageパネルの"Normal map"ボタンを設定し、MaterialButtonsの"Map To"パネルで"Nor"を適用して下さい。
下の画像は上でレンダリングされたレリーフの、Normalマップとカラーマップを使用しています。これは単に平面をレンダリングしただけということを記しておきます!
Normalはレンダリングにのみ影響するため、影やAO、その他の'3D'効果を得ることはできません。これは単なるテクスチャにすぎないのです。
次期リリースのToDo
公式の2.36リリースは修正だけでしたが、私たちは少なくともこのBlenderへの"修正"に抗うことができませんでした。
Officially the 2.36 release was for fixes only, but we couldn't resist to at least "fix" this in Blender.
重要なこととして、現在のNormalマップのサポートはまだ完全ではないことを記しておきます。新しいリリースには二つの重要な追加が期待されます。
1)「Objectスペース」 VS. 「タンジェントスペース」
正のZ軸でマップにNormalを保存するだけで、モデル周辺をカバーすることができ、マップのNormalはそのFaceの方向にそって、(回転されて)適用されます。しかしながら、Blenderを使用し作成されたこのような「タンジェントマップ」は、現在は「タンジェントマッピング」の使用には適用できません。
現在のマッピングは「Objectスペース」のみです。
つまり、BlenderのNormalマップはフラットな板に適用した場合のみ正しくレンダリングされる、ということです。
注:現存するNormalが(負のZ軸も)すべて格納されているNormalマップも、Objectスペースを元にしています。しかし、このようなマップの作成はBlenderでは間違いなく非常に難しいです。
2)「パラレルマッピング」について
私たちは"Warp"Textureを追加しました(Textureページ参照)が、これは「パラレルマッピング」を実現するものとは異なります。後者はハイトフィールドを適用した場合に、そのテクスチャの動きを元にテクスチャの位置を変形するものです。これはNormalマップのみならず、Blenderのどのテクスチャでも使用できます。