2025/01/23(木) [n年前の日記]
#1 [godot][cg_tools][blender] ゴルフボールを作りたい。その4
_昨日の作業
の続き。Windows10 x64 22H2 + Godot Engine 4.3 64bit でゴルフゲームっぽいものが作れないものかなと試してる。
ローポリモデルに指定できるゴルフボール用のノーマルマップ画像を作成したものの、Godot Engine上で凸凹具合が反対になってしまった点が気になったので、再度 blender上でベイクして作成し直した。
以下のようなノーマルマップ画像が得られた。CC0 / Public Domain ってことで。

_golfball_nmlmap2.png (328B, 512x512)
この画像なら、blender 3.6.19 LTS上でも、Godot Engine 4.3上でも、期待した見た目になってくれた。
どんな点に注意すれば期待したノーマルマップ画像が得られるのか、今一つ分かってないけれど…。もしかすると、「押し出し」の値を指定してベイクするか、もしくはローポリモデルのほうをハイポリゴンモデルより大きめにしてからベイクすると改善されるのかもしれない…?
ついでに、ディンプルが大きめの画像も作成してみた。これも CC0 / Public Domain ってことで。

_golfball_nmap.png (256KB, 512x512)
Godot Engine上で使ってみた結果は以下。
ローポリモデルに指定できるゴルフボール用のノーマルマップ画像を作成したものの、Godot Engine上で凸凹具合が反対になってしまった点が気になったので、再度 blender上でベイクして作成し直した。
以下のようなノーマルマップ画像が得られた。CC0 / Public Domain ってことで。

この画像なら、blender 3.6.19 LTS上でも、Godot Engine 4.3上でも、期待した見た目になってくれた。
どんな点に注意すれば期待したノーマルマップ画像が得られるのか、今一つ分かってないけれど…。もしかすると、「押し出し」の値を指定してベイクするか、もしくはローポリモデルのほうをハイポリゴンモデルより大きめにしてからベイクすると改善されるのかもしれない…?
ついでに、ディンプルが大きめの画像も作成してみた。これも CC0 / Public Domain ってことで。

Godot Engine上で使ってみた結果は以下。
◎ ノーマルマップをベイクする手順をメモ :
blender 3.6.19 LTS で、ハイポリゴンモデルの凸凹具合を、ローポリゴンモデルのノーマルマップにベイク(焼き付け)した際の手順を一応ざっくりとメモしておく。
出来上がったノーマルマップ画像は、ノーマルマップノードを経由して、プリンシプルBSDFのノーマルに入れることができる。ノーマルマップノードが無いとおかしな見た目になるので注意。
ベイク時の「押し出し」の値は、ベイクしたいオブジェクトからどれだけ離れた位置から内側向けのレイを飛ばすかの距離。上手くベイクされない時は、この値を増やして範囲を広げてやると改善される時があるらしい。
一応スクリーンショットも貼っておく。

参考ページは以下。
_【Blender】リアルに見せる技法!その名もノーマルマップ! - ゆるブレ!
_【Blender3.1】ノーマルマップで凹凸を表現しよう! | CGbox
_ノーマルベイクやり方|Kioshiki Kageji
_Blenderでノーマルマップを作成(ベイク)する方法 | STYLY
_ノーマルマップを上手にベイクする方法【blender3.4.1】 - YouTube
_【Blender】ノーマルベイク時のレイの考え方
- まずはハイポリゴンモデルを作成。
- 次にローポリゴンモデルを作成して、UV展開しておく。マテリアルも作成して割り当てておく。
- レンダーエンジンを Cycles にする。Cycles じゃないとベイクできない。
- ローポリモデルのマテリアルに画像テクスチャを追加して、画像を新規作成。色空間は「非カラー」にしておく。
- ハイポリモデル → ローポリモデルの順で複数選択。
- ベイクしたい画像テクスチャノードを選択。
- レンダープロパティで、ベイクの項目を開く。
- ベイクタイプは「ノーマル」。「選択物→アクティブ」にチェックを入れる。押し出しに、0.2 - 0.5m等を入れる。
- ベイクボタンを押すと、新規作成しておいた画像にノーマルマップがベイクされる。
- 画像を保存。
出来上がったノーマルマップ画像は、ノーマルマップノードを経由して、プリンシプルBSDFのノーマルに入れることができる。ノーマルマップノードが無いとおかしな見た目になるので注意。
ベイク時の「押し出し」の値は、ベイクしたいオブジェクトからどれだけ離れた位置から内側向けのレイを飛ばすかの距離。上手くベイクされない時は、この値を増やして範囲を広げてやると改善される時があるらしい。
一応スクリーンショットも貼っておく。

参考ページは以下。
_【Blender】リアルに見せる技法!その名もノーマルマップ! - ゆるブレ!
_【Blender3.1】ノーマルマップで凹凸を表現しよう! | CGbox
_ノーマルベイクやり方|Kioshiki Kageji
_Blenderでノーマルマップを作成(ベイク)する方法 | STYLY
_ノーマルマップを上手にベイクする方法【blender3.4.1】 - YouTube
_【Blender】ノーマルベイク時のレイの考え方
◎ TexToolsでベイク :
blender上で TexTools というアドオンを使うと、ベイクが少し楽になるらしい。試してみた。環境は、blender 3.6.19 LTS + TexTools 1.6.1。

たしかに、簡単にベイク作業を行うことができた。事前に画像を新規作成しておかなくても、いきなりベイクボタンを押せば作成してくれるし、サンプリング品質も別途指定できるし、「押し出し」の量も指定できる。
このアドオン、もしかして、レンダーエンジンを Cycles にしなくてもベイクしてくれるような…? 内部的にレンダーエンジンを Cycles に切り替えて処理してくれているのだろうか?
- ハイポリゴンモデルは、名前の最後に "_hp" をつけておく。
- ローポリゴンモデルは、名前の最後に "_lp" をつけておく。
- ハイポリゴンモデルとローポリゴンモデルの両方を複数選択。
- UVエディター内でNキーを押してサイドバーを表示。TexToolsタブを選択。
- 「ベイキング」を展開。
- ベイキングの種類として、Tangent Normal を選ぶ。
- 「ケージを押し出し」に適当な数値を入れる。
- 「AA」でサンプリング品質を選ぶ。
- 「Bake 1x」をクリックすれば、ノーマルマップをベイクすることができる。

たしかに、簡単にベイク作業を行うことができた。事前に画像を新規作成しておかなくても、いきなりベイクボタンを押せば作成してくれるし、サンプリング品質も別途指定できるし、「押し出し」の量も指定できる。
このアドオン、もしかして、レンダーエンジンを Cycles にしなくてもベイクしてくれるような…? 内部的にレンダーエンジンを Cycles に切り替えて処理してくれているのだろうか?
[ ツッコむ ]
以上、1 日分です。



