蒼水技術録

蒼水家技術録

蒼水が普段制作とか勉強とかして覚えたことを復習としてまとめてるものです。 それが最適解かどうかはわからないけど、何を目的として始めて、何が必要で、実際何をやって、どうなったか、まで全部過程を残すための技術ブログです。

Blender Tips編 #2 -Blender2.8でのテクスチャベイクの覚書-

どうも蒼水です。
Blender2.8系になってからEeveeが搭載されましたが、従来のレンダラの廃止でベイクがちょ~っとめんどくなったのでその覚書しておこうと思います。

今回の目的

2.8系でベイクってどうやるんだっけ?という疑問の解決、フローを確認するという目的で書いておく目的です。
ちょっとめんどくさくなったのが悲しみ...。

そもそもベイクとは?何のためにするの?

ベイクはテクスチャにライティング済みの状態や、アンビエントオクルージョン、ノーマルなどを焼きこむことを言います。
言葉だといまいちわかりにくいですね...。
いろいろ使用用途はあるんですが、今回はテクスチャを描く前にUV島にマスクをするための領域をベイクで作成したりします。
フォトショで島ごとに単色で塗りつぶされていると島ごとに自動選択するのが大変楽になるのでいつもやっています。

また、アンビエントオクルージョン(AO)やノーマルの作成にもたまに使ったりします。
いろいろベイクできるものがあるので試してみると良いかなと思います。

Blender2.8系でのベイク方法

レンダラーの変更

Cyclesレンダラーを使います。ということでEeveeからCyclesに変更しましょう。ここがちょっと面倒になった...。あと若干重い...(でも前よりだいぶ軽い気がする)
Eeveeにはベイク機能がないのでしょうがないんですよね...。

f:id:Yui_Aomi:20200320214250p:plain
レンダラーをCyclesに変更する

ベイク用テクスチャとマテリアルの設定

ベイクするためにはマテリアルの設定は必須なのはBlender2.8と変わらないのです。
UVエディタでベイク用に画像を新規作成しておきます。(持ち込んでも良いですがBlender側で新規で作ったほうがたぶん楽です。)

f:id:Yui_Aomi:20200320220309p:plain
新規画像の作成

新規で画像を作成しただけではマテリアルが適用されていないのでマテリアルタブから適用しておきます。
左上、シェーダーエディタで画像テクスチャに先ほどの画像が指定されており、ノードがシェーダーに繋がれていれば準備OKです。
ここがきちんと設定されていないとエラーを吐かれてベイクが失敗します。

実際ベイクすると左下のようなテクスチャが指定した画像にベイクされます。(ベイク方法は後述)
f:id:Yui_Aomi:20200320221651p:plain

ベイクを実行する

レンダープロパティでレンダラーをCyclesに変更すると、項目にベイクが現れるのでベイクしたいオブジェクトを選択した状態でベイクをクリックして実行します。
マテリアルの設定がきちんとされていればベイクされます。
f:id:Yui_Aomi:20200320222032p:plain

これでベイクすることができます。

今回はとりあえず統合でベイクしましたが、今回の目的としては単色として塗りつぶしてほしいのこれではダメですね。
*統合はライティング等も含めた最終的なレンダリング結果をテクスチャに焼きこむ設定です。

今回はマスク用に単色で塗りつぶした画像を生成したいのでこれではダメなのでそのやり方を次項で解説します。

マスク用のテクスチャをベイクする

マテリアルを適用したとき最初に設定されているシェーダーであるプリンシプルBSDFシェーダーでOKなので以下の設定を行います。
設定はここまでの解説と基本同じですが、ベイク時の設定をディフューズにすることで真黒く単色で塗りつぶされた結果を得られます。
ただし、指定した画像がそのまま出てきますのでBlender内で新規画像を作成するときに必ずブランクを指定する必要があります(or何色でも良いので単色のテクスチャを持ってくる)

f:id:Yui_Aomi:20200320223932p:plain
ベイク設定をディフューズに変更
f:id:Yui_Aomi:20200320223352p:plain
ブランクを指定
結果としてこんな感じになります。これなら自動選択でUV島ごとに選択しやすくなる!という魂胆です。これをフォトショに持ち込んで使います。
f:id:Yui_Aomi:20200320224010p:plain

ちなみに単色ではない画像を使うとこうなります。
これは寿司の画像を指定してベイクした場合。つまりそういうことです。
f:id:Yui_Aomi:20200320223738p:plain

おまけ(他のベイク設定に関して)

他の設定っていろいろありますがそのうち自分が良く使う2つだけどんな感じに使うのか少しだけ書きます。

アンビエントオクルージョン(AO)

詳しくは端折りますがAOを焼いてくれます。これを乗算するだけでいい感じクオリティが上がるのでめっちゃ使ってます。
簡単に言うと溝(エッジ部分)とかをいい感じに暗くしてくれるやつです。詳しく知りたい方はググりましょう。AOすこ...。
下画像(3Dビューはベイクしたものを貼ったもの)みたいな感じにくぼんだ部分の隅っこ部分に行くほど暗くなる性質を持ちます。これがいい感じに立体感を出してくれるんですよね。とりあえず焼いて乗算しとけ。
(*白黒のまま乗算するとちと汚いのでグラデーションマップ等で色を調整することを推奨します)

f:id:Yui_Aomi:20200320225404p:plain
AOはいいぞ

ノーマル

これは若干手順がややこしいのできちんと解説します。

■①ハイポリ/ローポリ両方のモデルを用意する。
基本的にノーマルを焼く場合はハイポリモデルの法線をローポリに貼り付けて軽量化する目的のために使用されます。
でので、同じモデルのハイローを用意しましょう。
今回は例として以下のようなモデルを用意します。
f:id:Yui_Aomi:20200320230435p:plain
また、用意した二つのモデルは重ねておきます。
重ねておかないと意図しない結果になる場合があるので重ねておいた方が無難です。なんかちらちらするけど気にしないで重ねておきましょう。
f:id:Yui_Aomi:20200320230603p:plain

■②ベイク設定
ベイクタイプをノーマルに変更します。
また、さらに下にある選択→アクティブという項目にチェックを入れ、レイの距離の設定を行います。
f:id:Yui_Aomi:20200320230744p:plain

レイの距離というのはハイとローの高さ(深さ)の違いだと思ってください。
参考画像置いておきます。基本的にはハイとローの深さの違いだと思っておけば良いと思います。
f:id:Yui_Aomi:20200320231332p:plain

今回で言えば深さも何もない立方体(0cm)と深さのある立方体(20cm)なのでレイの距離は20cm、と言えます。
ここをきちんとしないと正確な結果が得られない場合があります。とはいえ実際の深さ<設定値ならば基本大丈夫です(検証済み)
深さ20cmのとき50cmに設定しても期待した結果が得られます。めんどかったらとりあえず設定値はデカくしとけ(雑)

■③ベイクする
ベイクする際は必ずハイポリモデル→ローポリモデルの順番で選択した状態でベイクを実行します。逆だとダメです。
マテリアル設定でノーマルマップノードをつないで確認すると、ただの立方体の方(ローポリモデル)の方にもきちんと法線が反映されてることが確認できます。
f:id:Yui_Aomi:20200320232148p:plain

こんなかんじでハイポリ→ローポリ、みたいなフローを踏む際はこういった方法でノーマルを作成します。軽率に軽量化していけ。
モバイル環境やVRだと余計に意識しちゃう。

まとめ

ベイクはEeveeだと使えないのでCyclesを使う。
UV展開してベイクするテクスチャ用意してマテリアル設定してベイク設定してポチー
完成!

ベイクいろんなとこで活躍するので酷使していこうな...!

前回
atelier-aomi.hatenablog.com

次回
atelier-aomi.hatenablog.com