2025/01/22(水) [n年前の日記]
#1 [godot][cg_tools][blender] ゴルフボールを作りたい。その3
_昨日の作業
の続き。Windows10 x64 22H2 + Godot Engine 4.3 64bit でゴルフゲームっぽいものが作れないものかなと試してる。
3Dモデルとしてゴルフボールを作れないか試行錯誤中。Godot Engine 上で、球のメッシュ(SphereMesh)にテクスチャ画像を貼って、ゴルフボールっぽくしたいのだけど…。
3Dモデルとしてゴルフボールを作れないか試行錯誤中。Godot Engine 上で、球のメッシュ(SphereMesh)にテクスチャ画像を貼って、ゴルフボールっぽくしたいのだけど…。
◎ blenderでハイポリゴンのモデルを作成 :
まずはハイポリゴンの3Dモデルとして、ゴルフボールを作っておきたい。それさえあればレンダリングして実験用画像を作れるし。
blender でゴルフボールを作成する手順については、以下のチュートリアル動画が参考になった。ありがたや。blender 3.6.19 LTS で試してみた。
_【blender2.9】初心者向けチュートリアル|10分でつくるゴルフボール - YouTube
_【Blenderチュートリアル】色々なボールの作り方 - YouTube
_Blender 3D Modeling | How To Make Golf Ball In Blender | 1 Minute Blender Tutorial - YouTube
後からサブディビジョンサーフェスをかける手順と、最初にサブディビジョンサーフェスをかける手順がある模様。試したところ、前者は頂点数が若干少なく、丸みを持ったディンプルになって、後者は六角形が強調されたディンプルになる印象を受けた。
blender でゴルフボールを作成する手順については、以下のチュートリアル動画が参考になった。ありがたや。blender 3.6.19 LTS で試してみた。
_【blender2.9】初心者向けチュートリアル|10分でつくるゴルフボール - YouTube
_【Blenderチュートリアル】色々なボールの作り方 - YouTube
_Blender 3D Modeling | How To Make Golf Ball In Blender | 1 Minute Blender Tutorial - YouTube
後からサブディビジョンサーフェスをかける手順と、最初にサブディビジョンサーフェスをかける手順がある模様。試したところ、前者は頂点数が若干少なく、丸みを持ったディンプルになって、後者は六角形が強調されたディンプルになる印象を受けた。
◎ 球の画像を正距円筒図法に変換 :
Google Gemini 2.0に、「球の画像を正距円筒図法に変換するツールは無いかな?」と尋ねてみたら、「貴方の要望にピッタリのツールがありますよ!」と言ってきた。Dagik Earth Map Image Converter (DEMIC) というツールがあるらしい。本来は惑星の写真を正距円筒図法に変換するためのツールのようだなと…。
_ダジック・アースマップ画像変換ツール: Dagik Earth Map Image Converter(DEMIC) - ダジック・アース
Windows版の Demic_win.zip を入手して試用してみた。解凍して、今回は D:\Prog\DEMIC\ に置いておいた。Demic.exe を実行すると起動する。フォルダ内には Demic説明書.pdf というマニュアルも入っていた。
たしかに、Cube2DM よりそれっぽい画像に変換してくれる気がする…。まあ、Cube2DM は魚眼レンズで撮影した画像を変換するためのツールだろうから、比べるのはおかしいのかもしれないけれど…。
そのままだと、1枚の画像から180度分しか得られないので、blender上でハイポリゴンのゴルフボールを4方向からレンダリングして、GIMPで開いて360度分が入った正距円筒図法相当の画像に仕立ててみた。球の画像を正距円筒図法にすると端の部分がどうしてもボケてしまうので、他の画像を下のレイヤーとして配置して、レイヤーマスクでグラデーションをかけて、ボケてしまっている部分をうっすら消しながら馴染ませていった。
出来上がった画像は以下。CC0 / Public Domain ってことで。
_tex_ep_eevee.png (1.3MB, 2048x1024)
一応、psd と xcf を入れた zip も置いときます。
_tex_ep_eevee_psd_xcf.zip (16.05MB)
blender でローポリモデル(UV球)に貼ってみた。
イイ感じなのではなかろうか。
ただ、このテクスチャ画像は、IBLで照明を当てて、色がついてしまった状態の画像なので…。この3Dモデルを回転させると、照明とは無関係に、影やハイライトがついた状態でグルグル回ってしまって不自然な見た目になってしまう。本当に欲しいのは、ノーマルマップ画像かバンプマッピング画像なわけで…。
でもまあ、件のツールを使えば、球の画像から正距円筒図法の画像を作ることもできそうだと分かったので、これはこれで…。どこかしらの場面でこのツールが役立ちそうな気がする。ありがたや。
_ダジック・アースマップ画像変換ツール: Dagik Earth Map Image Converter(DEMIC) - ダジック・アース
Windows版の Demic_win.zip を入手して試用してみた。解凍して、今回は D:\Prog\DEMIC\ に置いておいた。Demic.exe を実行すると起動する。フォルダ内には Demic説明書.pdf というマニュアルも入っていた。
たしかに、Cube2DM よりそれっぽい画像に変換してくれる気がする…。まあ、Cube2DM は魚眼レンズで撮影した画像を変換するためのツールだろうから、比べるのはおかしいのかもしれないけれど…。
そのままだと、1枚の画像から180度分しか得られないので、blender上でハイポリゴンのゴルフボールを4方向からレンダリングして、GIMPで開いて360度分が入った正距円筒図法相当の画像に仕立ててみた。球の画像を正距円筒図法にすると端の部分がどうしてもボケてしまうので、他の画像を下のレイヤーとして配置して、レイヤーマスクでグラデーションをかけて、ボケてしまっている部分をうっすら消しながら馴染ませていった。
出来上がった画像は以下。CC0 / Public Domain ってことで。
_tex_ep_eevee.png (1.3MB, 2048x1024)
一応、psd と xcf を入れた zip も置いときます。
_tex_ep_eevee_psd_xcf.zip (16.05MB)
blender でローポリモデル(UV球)に貼ってみた。
イイ感じなのではなかろうか。
ただ、このテクスチャ画像は、IBLで照明を当てて、色がついてしまった状態の画像なので…。この3Dモデルを回転させると、照明とは無関係に、影やハイライトがついた状態でグルグル回ってしまって不自然な見た目になってしまう。本当に欲しいのは、ノーマルマップ画像かバンプマッピング画像なわけで…。
でもまあ、件のツールを使えば、球の画像から正距円筒図法の画像を作ることもできそうだと分かったので、これはこれで…。どこかしらの場面でこのツールが役立ちそうな気がする。ありがたや。
◎ ハイポリゴンモデルの凸凹をローポリモデルにベイク :
ハイポリゴンモデルの凸凹具合を、ローポリモデルのノーマルマップ画像にベイク(焼き付け)できないか試してみた。環境は blender 3.6.19 LTS。
作業手順は以下が参考になった。ありがたや。
_【Blender3.1】ノーマルマップで凹凸を表現しよう! | CGbox
_【Blender2.9】ベイクを使って効率化!焼きこみを行おう! | CGbox
「ハイポリゴンモデルもUV展開しておかないとマズいのかな? だとしたらかなり面倒臭いな。大変そうだ」と不安に思っていたけれど、それは完全に勘違いだった。ハイポリゴンモデルはUV展開等しておかなくていい。ローポリモデル側でUV展開してあればそれだけで作業できるらしい。
最初の作業時は、光源に対して変な方向に影がついて悩んだけれど、ノーマルマップノードを挿入しないまま、テクスチャ画像ノードの出力をいきなりノーマルに入れてしまっていたのがまずかったらしい。ノーマルマップノードを間に入れてやったら、それらしい結果になった。
出っ張り具合と引っ込み具合が逆になっている気がするけれど…。画像ウインドウ?内で、ノーマルマップ画像の緑チャンネルを反転してみたらそれらしいディンプルになった。これでいいのだろうか…?
得られたノーマルマップ画像は以下。CC0 / Public Domain ってことで。

_golfball_nmlmap.png (328KB, 512x512)
blender上で、ローポリモデルにノーマルマップとして設定してみた。
どう見てもローポリなのに、パッと見はゴルフボールのように見える。イイ感じなのではなかろうか…。これでいいんじゃないかな…。
作業手順は以下が参考になった。ありがたや。
_【Blender3.1】ノーマルマップで凹凸を表現しよう! | CGbox
_【Blender2.9】ベイクを使って効率化!焼きこみを行おう! | CGbox
「ハイポリゴンモデルもUV展開しておかないとマズいのかな? だとしたらかなり面倒臭いな。大変そうだ」と不安に思っていたけれど、それは完全に勘違いだった。ハイポリゴンモデルはUV展開等しておかなくていい。ローポリモデル側でUV展開してあればそれだけで作業できるらしい。
最初の作業時は、光源に対して変な方向に影がついて悩んだけれど、ノーマルマップノードを挿入しないまま、テクスチャ画像ノードの出力をいきなりノーマルに入れてしまっていたのがまずかったらしい。ノーマルマップノードを間に入れてやったら、それらしい結果になった。
出っ張り具合と引っ込み具合が逆になっている気がするけれど…。画像ウインドウ?内で、ノーマルマップ画像の緑チャンネルを反転してみたらそれらしいディンプルになった。これでいいのだろうか…?
得られたノーマルマップ画像は以下。CC0 / Public Domain ってことで。

blender上で、ローポリモデルにノーマルマップとして設定してみた。
どう見てもローポリなのに、パッと見はゴルフボールのように見える。イイ感じなのではなかろうか…。これでいいんじゃないかな…。
◎ Godot Engine上で使ってみた :
得られたノーマルマップ画像を、Godot Engine 4.3 x64 上で使ってみた。SphereMesh に設定する。
凸凹具合が反対になってしまった…。
ググったところ、ノーマルマップには DirectX版と OpenGL版があるそうで。blenderで使うノーマルマップ画像は OpenGL版らしい。でも、Godot Engine も OpenGL版を使いそうな気がするのだけど…。OpenGL互換がどうとか言ってるし…。
緑チャンネルを反転すれば DirectX版とOpenGL版の変換はできるらしいけど、今回は Godot Engine上で NormalMap の Scale を -1 にして対応してみることにした。
これでそれらしくなったのではなかろうか。
凸凹具合が反対になってしまった…。
ググったところ、ノーマルマップには DirectX版と OpenGL版があるそうで。blenderで使うノーマルマップ画像は OpenGL版らしい。でも、Godot Engine も OpenGL版を使いそうな気がするのだけど…。OpenGL互換がどうとか言ってるし…。
緑チャンネルを反転すれば DirectX版とOpenGL版の変換はできるらしいけど、今回は Godot Engine上で NormalMap の Scale を -1 にして対応してみることにした。
これでそれらしくなったのではなかろうか。
◎ 2025/01/23追記 :
Godot Engine上で凸凹具合が反対になった点が気になったので、blender上でノーマルマップ画像を作り直してみた。以下のような感じになった。

_golfball_nmlmap2.png (328KB, 512x512)
この画像なら、blender上でも、Godot Engine上でも、期待した凸凹具合になった。

この画像なら、blender上でも、Godot Engine上でも、期待した凸凹具合になった。
[ ツッコむ ]
以上です。





