dskjal
広告
広告

Blender で法線のベイク

カテゴリ:blender

目次

他のアプリを使う

テンプレ設定

ベイク用 UV を使う

ベイク先のテクスチャの精度

法線マップをファイルに保存する際のフォーマット

ハードエッジ(自動スムーズ・フラットシェード)に注意

ノードの設定

法線に模様ができる場合

ベイク時のサンプル数

カスタム法線をベイクする

高さマップから法線マップを作成する

外部リンク

他のアプリを使う

Blender より Toolbag、Substance Painter、3D Coat の方が簡単かつ高品質にベイクできる。それらのアプリが利用できるならそちらの使用を推奨する。

テンプレ設定

ローポリが外側でハイポリが内側。ハイポリの方が大きいと法線が反転する。

ローポリメッシュをボーンやラティス等で変形させる場合は、法線空間にタンジェントを使う。法線空間にタンジェントを使う場合は、「選択物 -> アクティブ」にチェックを入れる。「選択物 -> アクティブ」の「押し出し」と「レイの最大距離」とを適当に設定する。

ローポリ側の自動スムーズを切る。

template
テンプレ設定

ローポリが鋭角の場合は、ローポリ側をスムーズシェーディングにしてタンジェント空間でベイクすると、角のベベルがうまくベイクできることがある。

ベイク用 UV を使う

ベイク用の UV にベースカラー(アルベド)の UV を使うことが多い。しかしベイク用 UV が使えるなら、そちらの方がテクスチャを効率的に使えるため、格納できる情報量が多くなる。

Blender の標準機能ならライトマップパックが使える。

light map pack
ライトマップパック UV 展開

ベイク先のテクスチャの精度

Blender でベイク先の法線テクスチャを作成する際に 32bit Float にチェックを入れる。そうしないと粗すぎて使い物にならない法線マップになる。

check 32bit
32bit Float にチェックを入れる

テクスチャの解像度

テクスチャの解像度が低いと角に筋が入る。

edge artifact
テクスチャの解像度が不足している

法線マップをファイルに保存する際のフォーマット

15% 圧縮した 16bit RGB png がおすすめだ。このフォーマットは 32bit Float と見た目がほとんど変わらずファイルサイズが小さい。

save
保存

より高い精度で法線マップを保存したい場合は OpenEXR で保存する。

ハードエッジ(自動スムーズ・フラットシェード)に注意

自動スムーズやフラットシェードが有効な場合、鋭角部分にアーティファクト(ノイズ)がでることがある。対策としては UV を切り離すか、ローポリ側を自動スムーズOff かつスムースシェードにする。

ただし Blender のハードエッジは UV を切り離してもうまく法線をベイクできないことがある。またローポリすぎるスムースシェードは法線情報がゆがむことがある

外部リンク

NORMALMAPをベイクする時の知識 その1

ハードエッジにノーマルマップをベイクする

ハードエッジにノーマルマップをベイクする02

ノードの設定

ベイク先の画像テクスチャノードが必要になる。アクティブな(最後に選択された)画像テクスチャノードに法線がベイクされるので画像テクスチャノードを選択しておく。

material
マテリアル設定

テクスチャの色空間を Non-Color にする。そうしないと法線マップにガンマがかかってしまう。

No active image found in material

No active image found in material エラーが出る場合は、ベイク元とベイク先との両方にベイクする画像ノードを作成しアクティブにしておく。

法線に模様ができる場合

法線に変な模様が出る場合は「レイの距離」を変更してみる。ハードエッジ(自動スムーズ・フラットシェーディング)に注意も関係があるかもしれない。

bake
ベイク

ベイク時のサンプル数

サンプル数をあげても法線のベイクの品質にはほとんど影響しない。なのでレンダリングのサンプル数を1にすることで、ベイクを高速に実行できる。ただしベベルシェーダを使う場合は通常のレンダリングと同じだけのサンプルが必要になる

sample setting
サンプル数を1にする

カスタム法線をベイクする

タンジェント空間で自分自身の法線はベイクできない。自分自身のカスタム法線をベイクするには3つ方法がある。

  1. オブジェクト空間にする
  2. メッシュを複製する(タンジェント空間対応)
  3. 一度素の法線をテクスチャにベイクする(タンジェント空間対応)

メッシュを複製する方法

この方法はデータ転送モディフィア等の法線をタンジェント空間でベイクできる。手順は以下のようになる。

  1. メッシュを複製する
  2. ベイク先のメッシュのデータ転送モディフィア等をオフにする
  3. 「ベイク」の「選択物→アクティブ」にチェックを入れる
  4. データ転送モディフィア等をオフにしたメッシュに法線をベイクする

一度素の法線をテクスチャにベイクする方法

この方法はデータ転送モディフィア等の法線をタンジェント空間でベイクできる。

まずテクスチャにデータ転送モディフィア等をオフにした法線をオブジェクト空間ベイクする。データ転送モディフィア等を有効にして、以下のノードで自分でタンジェント空間の法線を計算してベイクする。ベイクするときは「放射」のベイクタイプを使う。

to tangent space
カスタム法線をタンジェント空間に変換するノード

動作確認するときはデータ転送モディフィア等を無効にするのを忘れない。

タンジェント空間とオブジェクト空間

ボーンやラティス、シェイプキー等でメッシュを変形する場合はタンジェント空間を使う。メッシュの変形に法線が追従するのはタンジェント空間だけだからだ。オブジェクトレベルでの移動回転拡縮しかしないならオブジェクト空間も使える。

タンジェント空間の欠点はローポリ側の頂点法線(スムージング処理)の影響を受けることだ。オブジェクト空間はローポリ側の頂点法線を完全に無視するので、メッシュを変形させない小道具等はオブジェクト空間が使われることが多い。

タンジェント空間の利点と欠点

利点
欠点

オブジェクト空間の利点と欠点

利点
欠点

そもそも法線空間とは

法線空間とは法線ベクトルをどの姿勢(基底)で見るかを決めるものだ。オブジェクト空間はオブジェクトの原点の姿勢(基底)から見た法線がベイクされる。なので自分自身の法線もベイクできる。

それに対してタンジェント空間は、法線ベクトルから生成した姿勢(基底)から見る。タンジェント空間で自分自身の法線をベイクすると単色になるのは、基底ベクトルを法線ベクトルから生成するからだ。法線ベクトルから生成した姿勢(基底)から法線ベクトルを見ればすべて同じ値になるにきまっている。

タンジェント空間が別のメッシュを必要とするのはこれが理由だ。タンジェント空間で法線をベイクするには、基底を生成する法線ベクトル(ローポリ法線)とは異なる法線ベクトル(ハイポリ法線)が必要になる。

タンジェント空間は法線ベクトルから生成した基底から見た法線が記録されているので、頂点が変形して法線が変化してもそれに対応してベイクした法線が変化させられる。

タンジェント空間で自分自身の法線がベイクできないのはなぜか

法線をタンジェント空間に変換するにはふたつの法線が必要になる。ひとつはベイクしたいオブジェクト空間の法線。もうひとつはレンダリング時の法線だ。

たとえばデータ転送モディフィアで法線を転写しているとする。このとき、「ジオメトリ」ノードの法線ソケットでベイクしたい法線を取得できるが、レンダリング時の法線(データ転送モディフィア無効時の法線)は取得できない。自分自身の法線をタンジェント空間に変形するための情報が取得できないので、それはできない。

外部リンク

4. Cyclesでのノーマルマップ (Bakeその3)

Normal Map Technical Details

Tangent vs Object Space vs World Space

高さマップから法線マップを作成する

外部アプリで高さマップを作成する場合は、浮動小数点フォーマットで高さマップを作成保存できるアプリ(Krita, GIMP, Photoshop 等)で高さマップを作成する必要がある。また OpenEXR のような浮動小数点フォーマットで高さマップを保存しないと、法線マップにブロック状のバンドが発生する。

5 Must Know Tips With Bump/Normal Maps (Blender 2.8)



ゲームにおける法線マップの作成

Texture baking

Modeling High-Low Poly Models for Next Gen Games

Normal Map Modeling

Normal Map Online

高さマップから法線マップを生成するオンラインアプリ。

そのほか

アドオン

無料

EZ Baker

Bystedts Blender Baker($0+)

法線だけでなくシェーディングやライティングもベイクできる。

有料

Baketool 2.0 Final($14.95)

Bake Wrangler($15~$25)

ノードを使ってベイクの挙動を制御するアドオン。

Texture Splitter Ai($20)

アルベドテクスチャから法線マップや高さマップを生成するアドオン。

関連記事

Blender 記事の目次


広告
広告

カテゴリ