「Pixal3D」で画像から3Dモデルを作る方法!3Dモデルをローカル生成できるAIを試そう

Pixal3Dで画像を3Dモデル化! 生成AI一般

今回はAIによる3Dモデル生成に関する話題で

「Pixal3D」で画像から3Dモデルを生成する方法

をわかりやすくご紹介するという内容になっております。

3DモデルというとAIの世界では未開拓の分野であり、「AIではまだまだ実用的な3Dモデルは作れないだろう」と言われてきました。しかしひとまず実用性を置いておけば3Dモデルを生成できるAIモデルは以前から存在しており研究が続けられています。

そのような中、数か月前に3Dモデルを生成できるオープンウェイトのAI「Pixal3D」が公開されました。これを使うと1枚の画像から高精度のテクスチャ付き3Dモデルを生成できるとのことで、遅ればせながら私も試してみることにしました。

ここではこのPixal3Dの導入方法や使い方を丁寧に解説していきますね。

Pixal3Dとは?

公式リポジトリ

Pixal3Dについて

Pixal3Dは中国の清華大学とテンセントの研究機関が開発・提供している3Dモデル生成AIです。主な特徴は次のとおり。

  • 1枚の画像からテクスチャ付きの高精度な3Dモデルを生成可能
  • 入力画像の視点に忠実でありながら見えない部分もきちんと生成できる
  • マルチビュー画像(=複数視点の画像)からの3Dモデル生成にも対応
  • オープンウェイトなので誰でも無料で使用でき、ローカル環境で動かすこともできる

従来のAIは「見た目上それっぽい3Dモデル」を作るだけだったのですが、Pixal3Dでは従来とは異なる手法を使って「忠実度を重視した3Dモデル」を作るように開発されたそうです。具体的には

  • 入力視点に基づく座標空間で直接生成
  • 2Dと3Dの対応関係の問題を解決

することにより、従来よりも入力画像に忠実な3Dモデルの生成が可能になったようです。

なおPixal3Dのライセンスは「MITライセンス」で、比較的自由に活用することができます。

Pixal3Dで実際に生成した3Dモデルの例

下記はサンプルとして私が実際にPixal3Dを使って生成した3Dモデルです。

入力画像:

ツキノワグマのキャラクターのフィギュア風画像

出力された3Dモデルのスクリーンショット(Blenderで開いたものを撮影):

ちょっと歪だけどそれっぽい3Dモデルが生成されました。
なんか一見するとカクカクしていてローポリっぽく見えますが、実はものすごいハイポリで頂点数はなんと35万近くあります。まだローポリ生成技術は発達していないみたいです。

あと、UVとテクスチャを見てみるとぐちゃぐちゃでテクスチャのどの部分が3Dモデルのどの部分に対応しているのかが全く分からないところを見ても、テクスチャ付き3Dモデル生成のハードルがいかに高いかが分かりますね。


※なお美少女フィギュア風キャラクターの画像からの3Dモデル化も試してみましたが、クオリティ的にはあまりいい出来ではなくお見せできるレベルではありませんでした。美少女キャラクターなどハイクオリティな見た目を求められる場合の3Dモデル生成はまだまだダメみたいです。

Pixal3Dの導入方法(ComfyUIへの導入)

ではここからが本題でPixal3Dの導入方法を解説していきます。主な手順は次のとおり。

  1. ComfyUIをインストールする
  2. Pixal3D用のComfyUIワークフローを導入する
  3. 必要なモデルをダウンロードする

それぞれ詳しく見ていきましょう。

手順1:ComfyUIのインストール

まず、このブログをご覧になるような方は既にご存じかと思いますが…この手のAIを手軽に動かすなら「ComdyUI」というツールを使うのが一番なので「まだインストールしてないよ」という方は下記の記事を参考にしてComfyUIのインストールを行ってください。

既に導入済みの方は念のため最新版にアップデートしておきましょう。

手順2:Pixal3D用のComfyUIワークフローを導入

次にComfyUIを開いてPixal3D用のワークフローを導入します。

ComfyUIのテンプレート集にはPixal3D用のワークフローがある…のですが、公式テンプレートでは「TRELLIS.2」というPixal3Dの元になったAIと一体化したワークフローになっています。しかし実質的にPixal3DはTRELLIS.2の改良版みたいなものであり、特にこだわりがなければ導入するのはPixal3Dのほうだけでいいと思います。

そこでここでは私が公式テンプレートを改造したワークフローを配布します。下記のZipファイルをダウンロード&展開して中身のJSONファイルをComfyUIにドラッグ&ドロップしてください。

下記のようなやたら横長のワークフローが表示されればOKです。

Pixal3D用のComfyUIワークフロー

手順3:必要なモデルのダウンロード

そうしたら「モデルが足りない」という旨のエラーが出ると思いますので、エラーのところに出るダウンロードボタンを押して必要なモデルをダウンロードしましょう。執筆時点のComfyUIではボタンを押しても何も反応がないように見えますが、画面右上の最小化ボタンの隣にダウンロードマークが出ますのでそこでダウンロード状況を確認してください。

全てのモデルをダウンロードできたら「不足しているモデル」の横の更新アイコンを押せばエラーが消えます。それでも「入力がありません」というエラーは残りますが、これは3Dモデル生成に必要な参照画像が設定されていないことによるエラーで、画像を登録すれば直るので心配する必要はありません。

Pixal3Dの使い方:具体的な3Dモデル生成方法

さて、導入が済んだら早速Pixal3Dを使って画像から3Dモデルを生成してみましょう。ワークフローは複雑ですが使い方はとても簡単で、「画像を読み込む」ノードに3Dモデル化したい画像をドラッグ&ドロップし、青い「実行する」ボタンを押すだけです。お使いのPCの性能にもよりますがだいたい5分くらいで3Dモデルが出来上がります。

画像を読み込むノードに画像をドラッグ&ドロップ

ちなみに透過していない画像の場合はデフォルトのままでOKですが、透過PNGを参照画像として使う場合は「Switch: Remove Background」ノードのトグルをOFFにすると画像の背景削除処理をスキップしてより素早く生成することができます。

背景を除去するかどうかを指定するためのノード

生成した3DモデルをBlenderで調整(ローポリ化)する方法

生成した3DモデルはComfyUIフォルダの「outputs\3d」の中にあります。ファイル形式は「GLB」というあまり見慣れない形式ですが、これは3DCG制作ソフトのBlenderで開くことができます。

Blenderを起動してGLBファイルをドラッグ&ドロップすると下記のようなダイアログが出ます。基本的にはデフォルトでOKですが、「頂点をマージ」にチェックを入れておくと不要な頂点を消してくれるので3Dモデルをそこそこ最適化できます。

※上記のダイアログが出ず読み込めない場合は、「glTF」形式を扱えるアドオンが有効になっているかを確認してください。

無事3Dモデルを読み込めると、下記のように表示が黒っぽくなるほどの膨大な頂点を持った3Dモデルであることがわかります。

Pixal3Dで生成した3DモデルをBlenderにインポートした場合の例

さすがにこのままではゲーム開発等には使えないので、使いやすくするために頂点数を削減してみましょう。手っ取り早く頂点数を削減するには「デシメート」というモディファイアを使います。

Blenderのデシメートモディファイア

サンプルモデルの頂点数はおよそ「35万」なので、比率を「0.05」程度のかなり小さな値にして頂点数を15000くらいまで下げてみました。

Pixal3Dで生成した3DモデルをBlenderで最適化した場合の例

(モデル形状のシンプルさに比べると)まだ十分ハイポリですがこれ以上頂点数を減らすとモデルがぐちゃぐちゃになってしまうようだったので、まあこのくらいで良しとしましょう。

おわりに

以上、Pixal3Dで画像から3Dモデルを生成する方法をご紹介しました。3Dモデル生成の分野はまだまだこれからといったところで今のところ実用性はイマイチですが、例えばゲームの背景に使うオブジェクトをちょっと作るくらいなら使えるかもしれません。いずれにしてもこの分野の今後の進展にも期待したいですね。

この記事が何かしらお役に立てば幸いです。