ノーマルマップ
読み: のーまるまっぷ
ポリゴン表面の法線方向を RGB 画像として記録し、少ないポリゴン数で凹凸のある質感をリアルタイムに表現するテクスチャ技術。ライティング計算に使用される。
ノーマルマップ (normal map) は、3D モデル表面の法線ベクトル情報を RGB テクスチャとしてエンコードしたものである。各ピクセルの R、G、B チャンネルがそれぞれ法線の X、Y、Z 成分に対応し、ライティング計算時にピクセル単位で法線方向を変化させることで、実際にはフラットなポリゴン上に凹凸があるかのような陰影を生成する。
- タンジェントスペース: 最も一般的な形式。ポリゴン表面に対する相対的な法線方向を記録する。青紫色 (RGB: 128, 128, 255) が「変化なし」を意味し、これが平坦な面のデフォルト色となる
- オブジェクトスペース: ワールド座標系での絶対的な法線方向を記録する。虹色に見えるのが特徴で、変形しないオブジェクトに適する
- ハイポリからの生成: 数百万ポリゴンのハイポリモデルの法線情報を、数千ポリゴンのローポリモデル用テクスチャに焼き付ける (ベイク)。xNormal や Substance Painter で実行できる
- 画像からの生成: グレースケールのハイトマップから Sobel フィルタ等で法線を算出する。
NormalMap-Onlineなどのツールで手軽に変換可能
ゲーム開発では、10 万ポリゴンのキャラクターモデルに 2048x2048 のノーマルマップを適用することで、数千万ポリゴン相当のディテールを 60fps で描画できる。DirectX と OpenGL では Y 軸の向きが逆転する (緑チャンネルの反転) ため、エンジン間でのテクスチャ移行時には注意が必要である。