TRELLIS による画像から3Dアセットへの変換(ソースコードと実行結果)
【概要】
TRELLISは、1枚の画像から3Dアセット(3次元の形状と見た目のデータ)を生成する学習済みモデルである。このページでは、Windows上でTRELLISを動かす手順、WebUI(ブラウザで操作する画面)の使い方、Pythonプログラムからの実行方法を示す。生成した3DモデルはGLB形式(形状とテクスチャを1つにまとめた3Dファイル形式)で保存する。
【目次】
【関連する外部ページ】
- Microsoft公式リポジトリ: https://github.com/microsoft/TRELLIS
- Microsoft公式プロジェクトページ: https://microsoft.github.io/TRELLIS/
- Hugging Face公式モデル: https://huggingface.co/JeffreyXiang/TRELLIS-image-large
【サイト内の関連情報】
1. TRELLIS による画像から3Dアセットへの変換
概要
TRELLISは、Microsoftが開発した3Dアセット生成モデルであり、テキストや画像のプロンプト(生成の手がかりとなる入力)から3Dアセットを生成する。Structured LATent(SLAT:構造化潜在表現)という統一された表現を使用して、Radiance Fields(輝度場)、3D Gaussians(3次元ガウシアン)、メッシュ(三角形網)など様々な形式で出力することができる。
主な特徴
- 学習済みモデル
- ジオメトリ(幾何形状)と鮮やかなテクスチャを持つ3Dアセットの生成
インストール
IgorAherne氏によるTRELLISのフォーク版(派生版)「trellis-stable-projectorz」を使用する。
このフォークの特徴
- メモリ使用量を半分に削減するためint32をint64の代わりに使用する
- 商用利用を阻害する依存関係の除去を進行中である
- Windows向けの簡単なインストールを提供している
管理者権限でコマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
次のコマンドを実行する。
curl -L -o v40_py311_trellis_stableprojectorz.zip https://github.com/IgorAherne/trellis-stable-projectorz/releases/download/latest/v40_py311_trellis_stableprojectorz.zip
mkdir C:\TRELLIS
tar -xf v40_py311_trellis_stableprojectorz.zip -C C:\TRELLIS
cd C:\TRELLIS
run-gradio-fp16.bat
WebUIの使用
run-gradio-fp16.bat の実行後、ブラウザで http://127.0.0.1:7860 を開き、Gradio(Pythonで作るWeb画面の仕組み)のインターフェースにアクセスする。
参考文献
- 公式論文: Xiang, J., et al. "Structured 3D Latents for Scalable and Versatile 3D Generation" (2024) - arXiv:2412.01506
- Microsoft公式リポジトリ: https://github.com/microsoft/TRELLIS
- Microsoft公式プロジェクトページ: https://microsoft.github.io/TRELLIS/
- Hugging Face公式モデル: https://huggingface.co/JeffreyXiang/TRELLIS-image-large
- IgorAherne フォーク版: https://github.com/IgorAherne/trellis-stable-projectorz
2. TRELLIS による画像から3Dアセットへの変換プログラム
実行手順
環境のセットアップとコードの実行
次のソースコードを C:\TRELLIS\a.py という名前で保存し、コマンドプロンプトで次を実行する。1行目でインストール先へ移動し、2行目でTRELLIS専用のPython環境(仮想環境)を有効にする。
cd C:\TRELLIS
code\venv\Scripts\activate.bat
python a.py
出力フォーマット
TRELLISは以下の形式で3Dアセットを生成する。
outputs['gaussian']: 3D Gaussians(3次元ガウシアン)のリストoutputs['radiance_field']: Radiance Fields(輝度場)のリストoutputs['mesh']: メッシュ(三角形網)のリスト
ソースコード
import os
import sys
import torch
from PIL import Image
# Windows向けの環境設定
os.environ['SPCONV_ALGO'] = 'native'
os.environ['ATTN_BACKEND'] = 'xformers'
# TRELLISのパラメータ
SEED = 42
SPARSE_STRUCTURE_SAMPLER_PARAMS = {
"steps": 12,
"cfg_strength": 7.5,
}
SLAT_SAMPLER_PARAMS = {
"steps": 12,
"cfg_strength": 3.0,
}
# TRELLISがインストールされていない場合に備えてパスを追加
sys.path.insert(0, './code')
def main():
from trellis.pipelines import TrellisImageTo3DPipeline
from trellis.utils import postprocessing_utils
device = 'cuda' if torch.cuda.is_available() else 'cpu'
print(f'使用デバイス: {device}')
# 学習済みモデルの自動ダウンロードと読み込み
print('モデルを読み込み中...')
pipeline = TrellisImageTo3DPipeline.from_pretrained("JeffreyXiang/TRELLIS-image-large")
if device == 'cuda':
pipeline.cuda()
print('モデルの読み込み完了')
# 入力画像の読み込み
image_path = input('画像ファイルのパスを入力: ')
image = Image.open(image_path)
# 3Dモデルの生成
print('3Dモデルを生成中...')
outputs = pipeline.run(
image,
seed=SEED,
sparse_structure_sampler_params=SPARSE_STRUCTURE_SAMPLER_PARAMS,
slat_sampler_params=SLAT_SAMPLER_PARAMS
)
# 結果の保存
glb = postprocessing_utils.to_glb(
outputs['gaussian'][0],
outputs['mesh'][0],
simplify=0.95,
texture_size=1024
)
glb.export('output_3d_model.glb')
print('3Dモデルを output_3d_model.glb に保存しました')
if __name__ == "__main__":
main()