dskjal
広告
広告

Blender で法線のベイク

カテゴリ:blender

目次

他のアプリを使う

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

テンプレ設定

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

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

テンプレ設定

テンプレ設定

ローポリのシェーディング

大抵はローポリ側をスムーズシェーディングにするとうまくいく。

しかし平面に凹凸をベイクしたい場合は、ローポリ側を自動スムーズやフラットシェーディングにした方が上手くいく。ローポリ側を自動スムーズやフラットシェーディングでベイクするとベベルが上手くベイクできないので、画像処理ソフトでスムーズシェーディングにした法線と合成する必要があるかもしれない。

詳細はハードエッジ問題を参照。

トラブルシューティング

一部のみベイクできない

ベイクできない

ベイクできない法線

ローポリ法線と直交する法線はベイクできない。下の画像の突き出し部分の側面(赤で示した部分)は、ローポリ法線と直交しているのでベイクできない。

左がローポリで、右がハイポリとする。赤で示した部分はベイクできない

左がローポリで、右がハイポリとする。赤で示した部分はベイクできない

ベイク用 UV を使う

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

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

ライトマップパック UV 展開

ライトマップパック UV 展開

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

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

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

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

テクスチャの解像度

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

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

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

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

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

保存

保存

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

ハードエッジ問題

ローポリをスムーズシェーディングにすると、平面部分の法線がゆがむ。

平面部分のゆがんだ法線。右はハイポリメッシュ

平面部分のゆがんだ法線。右はハイポリメッシュ

ローポリをフラットシェーディングにすると、角の部分の法線が正しくベイクされない。

ベベル部分が黒くなっている

ベベル部分が黒くなっている

対策

平面部分の法線を保護。面を差し込む(I)が便利

平面部分の法線を保護。面を差し込む(I)が便利

外部リンク

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

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

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

ノードの設定

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

マテリアル設定

マテリアル設定

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

No active image found in material

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

法線に模様ができる場合

法線に変な模様が出る場合は「レイの距離」を変更してみる。ハードエッジ問題も関係があるかもしれない。

ベイク

ベイク

ベイク時のサンプル数

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

サンプル数を1にする

サンプル数を1にする

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

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

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

メッシュを複製する方法

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

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

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

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

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

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

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

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

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

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

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

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

利点
欠点

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

利点
欠点

そもそも法線空間とは

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

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

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

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

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

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

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

外部リンク

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)

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

外部リンク

Computing Tangent Space Basis Vectors for an Arbitrary Mesh (Lengyel’s Method)

Chapter 22. Baking Normal Maps on the GPU

関連記事

Blender 記事の目次


広告
広告

カテゴリ