お知らせ

次の項目は別ページに分割しました。

関連ページ:

テクスチャの基本的な使い方は次のページにまとめています。

法線マップ

ドキュメント:

Normal Map Node | Blender Manual [Official]

概要

法線マップは、モデル表面の微細なディテールを表現するために用いるテクスチャで、法線の方向を RGB の色として表現したものである。物体表面で照明が反射する方向を法線マップで制御することにより、メッシュモデルのジオメトリよりも細かい表現ができる。シェーダーノードで画像をノーマルマップノードに接続して利用する。

参考:

バンプマップとノーマルマップを理解する | STYLY

法線マップについて | しぐにゃもブログ

よくわからないノーマルマップ講座 概論編 #2 | Sandy Virtual City

Normal Map Technical Details | polycount

使い方

参考:

ノーマルマップで凹凸を表現しよう! | CGbox

法線マップの設定方法 | しぐにゃもブログ

オブジェクトにノーマルマップを適用する方法 | シンジのブログ

バンプマップでインターホンを作る | Unity の使い方

ベクトル空間形式

  • タンジェント空間 (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

Cycles でのノーマルマップ | QCGANIME

Blender で法線のベイク | dskjal

ノーマルマップノード (Normal Map Node)

ドキュメント:

Normal Map Node | Blender Manual [Official]

参考:

Cycles でのノーマルマップ | QCGANIME

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]

参考:

Normal Edit | CG 制作

法線編集モディファイアー – リアルな陰影からアニメっぽい陰影まで | ほろほろりドットコム

データ転送 (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

Bent Normals | polycount

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]

コード:

node_tangent.osl – GitHub

gpu_shader_material_tangent.glsl – GitHub

mesh_tangent.cc – GitHub

参考:

Tangent | Blender Cycles memo

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

法線マップを合成する

参考:

法線マップの合成 | dskjal

Blending in Detail | Self Shadow

UV マップのシームで境界が目立つ

参考:

Seams on normal map – Blender Stack Exchange

ビューポートの動作が重くなる

現象:

ビューポートで Eevee によるマテリアルプレビューを使用すると動作が重くなる。

参考:

#60613 Eevee: Normal maps in tangent space on animated character is slooow | Blender Projects [Official]

#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

コード:

AmbientOcclusionDirection.osl – Calculates AO and Average Direction where Ambient Light came from – GitHub Gist

Customizing Normals (aVersionOfReality)

入手:

Customizing Normals Series Project Files | Gumroad

視聴:

Customizing Normals (aVersionOfReality) – YouTube

Advanced Normal Map Creation Tips

動画:

Advanced Normal Map Tips (Aidy Burrows)

参考:

Advanced Normal Map Creation Tips | Creative Shrimp

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA