LLMが3Dモデル情報を出力するLLaMA-Mesh、そのBlenderアドオンであるMeshGenで遊びます。
番外編では、ChatGPTを使って同じく3Dモデリングさせてみます。
はじめに
近年は3Dモデルを出力する生成AIモデルも続々出てきています。
ローカルで簡単に試せるものはないかと探していると、NVIDA Labsが最近発表した"LLaMA-Mesh"というモデルを見つけました。
LLaMA-MeshのBlenderアドオンであるMeshGenも公開されており、Blenderにインストールしてローカルで実行することも可能です。
今回はこれをBlenderで実行して遊んでみます。
また、番外編では同じお題をChatGPTを使って3D生成させてみて、結果を比較します。
# 作業環境 Blender 4.2.0 M2 MacBook Air メモリ16GB
The English translation of this post is here.
LLaMA-Meshをざっくり理解する
LLaMA-Meshは3Dモデルをそのまま出力するタイプの生成AIモデルではなく、テキスト生成のLLMモデルを拡張して3D情報を出力するようにしたものです。
3Dモデル情報はテキストとして出力されます。 各頂点の座標と面の位置をモデルが出力し、それを外部のソフトが3Dモデルとして解釈/構築するという流れです。
実際に論文では、このモデルを用いて生成したとされる3Dモデルの例が示されています:
なかなかいい感じに3Dモデルが生成できているように見えますね。
ちなみにこのようなテキスト生成モデルの拡張としての3D生成には、下記のような利点があると論文では謳われています。
- LLMがすでに備えている空間的知識を活用できる
- 対話型の3D生成フローが可能
- 3Dモデルの理解が可能
今回はこのモデルを実際にBlender上で試してみることが主旨なので、研究内容自体にはこれ以上は深入りしません。 詳細は論文をご覧ください。
MeshGenで3Dモデリング
MeshGenは、LLaMA-MeshをBlender上で実行できるようにしたアドオンです。 今回はこれを使ってBlender上で3Dモデルを生成させてみます。
MeshGenをBlenderにインストールする
まずはMeshGenをBlenderにインストールします。
私の作業環境は、Blender4.2.0 / M2 MacBook Airです。 MeshGenでは、GPUはNVIDIA/CUDAのみサポートされているので、今回はCPUで実行します。
まずはReleaseページから、作業環境に対応するアセットをダウンロードします。 Windows/Mac/Linuxそれぞれ、GPU用とCPU用が用意されています。
ダウンロードできたら、下記の手順でアドオンをインストールします。
- Blender上タブから、"Edit" > "Preferences" を選択
- "Add-ons"タブから右上の下矢印を選択
- "Install from Disk"から、先ほどダウンロードしたzipファイルを選択
- インストールが終わったら、"meshgen"アドオン設定から"Download Required Models"をクリック
これでMeshGenアドオンのインストールおよびモデルのダウンロードが終わりました。
それでは早速使ってみます。
MeshGenの使い方
MeshGenは、下記の手順で使います。
- "N"キー(または"View" > "Sidebar") > "MeshGen"を選択
- "Load Generator"をクリック
- プロンプトを入力して"Generate Mesh"をクリック
なお、生成結果のランダムさを調整するパラメータであるTemperatureは、プロンプト入力欄下の"Options"から設定できます。
ではいよいよ、実際に3Dモデルを生成していきます。
机の3Dモデルを生成する
まずはデフォルトのプロンプトのまま、机の3Dモデルを生成します。
# プロンプト:
Create a 3D obj file using the following description: a desk
CPUでモデルを実行してるため、生成が終わるまでに結構な時間が必要でした (約2分ほど)。
出来上がった結果がこちら:
惜しい。
なかなか論文に示されているようには上手くいきませんね。
椅子の3Dモデルを生成する
続いて、論文の例にもある椅子の生成プロンプトでやってみます。
# プロンプト:
Create a 3D obj file using the following description: 3D rendering of a model chair
結果がこちら:
ちょっと厳しいですね。
Face(面)生成が途中で途切れてしまったのか、頂点があっても面がない部分も見られます (頂点もそこまで椅子っぽい形にはなってませんが)。
盆栽の3Dモデルを生成する
論文にも例示されてない難しめのケースとして、盆栽を生成させてみます。
# プロンプト:
Create a 3D obj file using the following description: Japanese Bonsai
結果:
やはり難しいようです。
このままだと流石に不完全燃焼なので、同じお題をChatGPTにも3Dモデル生成させてみます。
番外編: ChatGPTで3Dモデリング
この手順でやっていきます:
- ChatGPT o1にプロンプトを渡し、Blender Pythonコードを生成させる
- 生成されたBlender PythonコードをBlenderのScriptingに手動でコピペし、そのまま実行する
なお、ChatGPTとやりとりを繰り返してブラッシュアップするようなことは今回はしません。
机の3Dモデルを生成する
まずは机を試してみます。
# プロンプト: Write a Blender Python code for creating 3D mesh of a desk
生成されたBlender Pythonコードを実行した結果がこちら: