次の項目は別ページに分割しました。
関連ページ:
テクスチャの基本的な使い方は次のページにまとめています。
法線マップ
ドキュメント:
Normal Map Node | Blender Manual [Official]
概要
法線マップは、モデル表面の微細なディテールを表現するために用いるテクスチャで、法線の方向を RGB の色として表現したものである。物体表面で照明が反射する方向を法線マップで制御することにより、メッシュモデルのジオメトリよりも細かい表現ができる。シェーダーノードで画像をノーマルマップノードに接続して利用する。
参考:
よくわからないノーマルマップ講座 概論編 #2 | Sandy Virtual City
Normal Map Technical Details | polycount
使い方
参考:
オブジェクトにノーマルマップを適用する方法 | シンジのブログ
ベクトル空間形式
- タンジェント空間 (Tangent Space)
- オブジェクト空間 (Object Space)
- ワールド空間 (World Space)
- Blender オブジェクト空間 (Blender Object Space)
- Blender ワールド空間 (Blender World Space)
ドキュメント:
Normal Map Node | Blender Manual [Official]
参考:
Tangent vs Object Space vs World Space – Blender Artists Community
Bake Normal space: Camera vs World vs Object vs Tangent – Blender Stack Exchange
スウィズル (Swizzle)
法線ベクトルの X / Y / Z 各成分を、テクスチャ画像の RGB チャンネルにどのように割り当てるかを指定する。主に使われている割り当ては、OpenGL 準拠と DirectX 準拠の2通りが存在している。Blender 及び Unity は、既定では OpenGL 準拠の割り当てを使用している。Unreal Engine は DirectX 準拠であるが、「Flip Green Channel」オプションにより OpenGL 準拠に対応できるので、特に用途が定まっていない場合は OpenGL 準拠で出力しておけばよい。
ソフトウェア | 赤 (R) | 緑 (G) | 青 (B) |
---|---|---|---|
Blender | +X | +Y | +Z |
Unity | +X | +Y | +Z |
Unreal Engine | +X | -Y または +Y | +Z |
参考:
OpenGL と DirectX – ノーマルマップ | 真面目な 3DCG Tips
ノーマルマップの種類/GL と DirectX でアップ方向が異なる注意点 | 人柱系 CG モデラーの Tips ブログ
Normal Map Technical Details | polycount
Programs Normal map OpenGL or DirectX | Marcel van Duijn
DirectX vs OpenGL Normal Map | TextureCan
Fix Inverted Normal (Unreal Engine) | Motion Forge Pictures
DirectX vs OpenGL normal maps – Blender Stack Exchange
デフォルト値
凹凸を表現しないデフォルトの法線マップ値は RGB として 0.5, 0.5, 1.0
を与える。
参考:
What is a 0 “null” normal map? – Computer Graphics Stack Exchange
ノーマルマップを作成する
高精細なノーマルマップをベイクするには次のような設定を用いる。
- 色空間は
Non-Color
を使用する。 - テクスチャ画像の大きさを用途に応じて十分に大きく取る。
- 「新規画像」 (New Image) を作成する際に
32ビット浮動小数点
(32-bit Float
) を有効にする。 - PNG 形式での保存時に「色深度」 (Color Depth) を
16
ビットカラーチャンネルを使用する。 - ハードエッジで綺麗な法線をベイクして使用するためには、UV マップの該当するエッジをシームとして設定する。
注意点
- テクスチャをベイクする際は、基本的にサンプル数
1
でレンダリングしてよい。 - 「ベベル」 (Bevel) ノードを使用する場合はサンプリング数をある程度上げる必要がある。
タンジェント空間
(Tangent Space
) ではカスタム法線をベイクできないので、カスタム法線をベイクする際はオブジェクト空間
(Object Space
) を使用する。
参考:
Blender/Unity を用いたノーマルマップの作成/適用手順 | XR-Hub
メッシュの差分からノーマルマップをベイクする手順 | XR-Hub
ノーマルマップノード (Normal Map Node)
ドキュメント:
Normal Map Node | Blender Manual [Official]
参考:
Normal Map | Blender Cycles memo
Why does UV orientation affect tangent space normals? – Blender Stack Exchange
法線編集モディファイアー (Normal Edit Modifier)
ドキュメント:
Normal Edit Modifier | Blender Manual [Official]
参考:
法線編集モディファイアー – リアルな陰影からアニメっぽい陰影まで | ほろほろりドットコム
データ転送 (Data Transfer)
他のオブジェクトからカスタム法線の情報を転送するには、「データ転送」 (Data Transfer) モディファイアーを使用する。
参考:
Data Transfer Modifier | Blender Manual [Official]
ベント法線マップ (Bent Normal Map)
効果
- ライトビルドの後に発生するライト漏れを減少させる。
- ディフューズ間接ライティングを改善する。
応用
- リフレクションオクルージョン/スペキュラオクルージョン
ドキュメント:
ベント法線マップ | Unreal Engine ドキュメント [公式]
参考:
Bent Normal Map の効果とその作り方 | 3DCG school
Real-Time Ambient Occlusion | Ian Purvis and Luke Tokheim
How do I bake a Bent Normal Map in Blender – Blender Stack Exchange
How to bake a Bent Map (Object Space Normal) correctly with Cycles? – Blender Stack Exchange
Is Object Space Normals the same as Bent Normals – Blender Stack Exchange
接線
ドキュメント:
Tangent Node | Blender Manual [Official]
Geometry Node | Blender Manual [Official]
bpy.types.Mesh.calc_tangents | Blender Python API [Official]
コード:
gpu_shader_material_tangent.glsl – GitHub
参考:
How are UV based tangents calculated? – Blender Stack Exchange
Why Geometry’s Tangent are difference from Tangent node? – Blender Stack Exchange
#101303 Custom tangents are destroyed upon FBX import and export | Blender Projects
法線マップを合成する
参考:
Blending in Detail | Self Shadow
UV マップのシームで境界が目立つ
参考:
Seams on normal map – Blender Stack Exchange
ビューポートの動作が重くなる
現象:
ビューポートで Eevee によるマテリアルプレビューを使用すると動作が重くなる。
参考:
#72168 Normal Maps causing crazy lag in Eevee | Blender Projects [Official]
デモ
Bump / Normal Comparison – Eevee
チュートリアル
Adding Normal and Bump Maps (Luwizart)
Using Normal Maps and Displacement Maps! (The CG Essentials)
Normal Maps / Instant Realism to Materials (Brandon’s Drawings)
Normals, Normal Maps, and Bump Maps Explained (grey_goo)
The Secret of Normal Maps (Pierrick Picaut)
How Tangent Normal Mapping Works (aVersionOfReality)
Advanced Normal Map Tips (Aidy Burrows)
プレイリスト
Customizing Normals (aVersionOfReality) – YouTube
Combine Normal Maps
入手:
Combine Normal Maps | Blend Swap
Ambient Occlusion Direction
コード:
Customizing Normals (aVersionOfReality)
入手:
Customizing Normals Series Project Files | Gumroad
視聴:
Customizing Normals (aVersionOfReality) – YouTube
Advanced Normal Map Creation Tips
動画:
Advanced Normal Map Tips (Aidy Burrows)
参考: