3 minute read

Microsoft よりリリースされた、画像から 3D モデルを生成する TRELLIS.2 が ComfyUI でも実行できるようなので、こちらを試してみます。

概要

  • ComfyUI で生成できました
  • GeForce RTX 2070 (VRAM 8GB) でも生成できました

準備

カスタムノード

ComfyUI を docker compose で構築する で用意した Docker Compose の環境を使います。ただ、このときのコンテナだと CUDA のバージョンが 12.1 となっていて、TRELLIS.2 のインストールがうまくいかないので、CUDA のバージョンを 12.8 に変更します。なお、CUDA のバージョンと言っても CUDA ライブラリや GeForce のドライバを変更する必要はなく、以下のコマンドのように PyTorch を入れ替える (アンインストールしてから CUDA 12.8 の PyTorch をインストール) だけで大丈夫です。

pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

そのうえで ComfyUI を起動したら、ComfyUI Manager からカスタムノードをインストールします。インストールするのは、

Custom Node

こちらの ComfyUI_essentials、GeometryPack、TRELLIS2 の 3 つ。TRELLIS2 は、バージョン 0.1.1 を使いました。latest にすると VRAM 使用量が多かったり、生成に失敗したりしましたが、バージョン 0.1.1 だと安定して生成できたのでこちらのバージョンを使います。

モデルは実行時に自動的にダウンロードされるので、手動でダウンロードする必要はないようです。

ワークフロー

読み込み~リサイズ~マスク生成

workflow1

Load Image は通常の画像を読み込みます。TRELLIS.2 は 512 ピクセルや 1024 ピクセルの正方形の画像が適しているようなのと、RTX2070 でも生成できるように解像度を下げたい場合に便利なので、Image Resize を挟んでいます。TRELLIS.2 Remove Background で背景マスクを生成して次の処理へ渡します。

モデル読み込み~生成

workflow2

Load TRELLIS.2 DinoV3 と Load TRELLIS.2 Shape Model でモデルを読み込みます。Load TRELLIS.2 Shape Model で resolution を選択できるので、元画像を 512 ピクセルにしている場合はここも 512 にします。

TRELLIS.2 Image to Shape が生成を行うノードです。seed はあまり変更する必要はないと思うので、control_after_generate は fixed のままでいいように思います。ss_guidance_strength と shape_guidance_strength は元画像にどれくらい忠実にするか、という指標で、ss_sampling_steps と shape_sampling_steps は生成を行うステップ数です。どちらも大きくした方が良い結果が得られるようですが、大きくしすぎると VRAM がより多く必要となるようです。

メッシュ出力

workflow3

生成された 3D モデルを参照できます。マウスでモデルを動かすこともできます。また、前段の Remesh ノードの target_face_count の数値を変更すると、メッシュの粗さを変更できます。形状にもよりますが、5,000 ~ 10,000 くらいが形状のわかる数値だと思います。それより小さいとメッシュが粗すぎて形状がわからない感じになります。

JSON ファイル

Trellis2 Image-to-3D workflow.json

実行

実行してみると、先ほどのパラメータの場合は 4 分程度でメッシュが出力されます。STL で保存できるので、それを Ultimaker Cura で読み込んでみることもできます。

cura

内部が中空だったりと、このまま出力するには少し問題もありそうですが、形状としては違和感ない形がローカルでも生成できそうです。

更新日時: