Image to 3D
1枚の画像から 3Dモデル (GLB) をローカル生成し、ブラウザで確認するアプリ。
生成エンジンは TRELLIS.2 (Microsoft) の Apple Silicon / MPS ポートを使う。
形状生成のあとに ポリゴン削減 → UV再展開 → メッシュ修復 → 入力画像の投影 → オートリグ
をつなげられるステージ式パイプラインになっていて、リグ付き GLB (スキン + アニメーション)
まで一気に出力できる。
画像 ─> 前処理 ─> 3D生成 ─> ポリゴン削減 ─> UV展開/リベイク ─> メッシュ修復 ─> 投影 ─> オートリグ ─> GLB
(TRELLIS.2/MPS) (fast-simplification) (xatlas) (numpy) (Blender headless)
必要なもの
| |
|---|
| ハード | Apple Silicon (M1以降)、unified memory 24GB以上 |
| OS | macOS 12以降 (Metal 拡張を使う場合は 26以降) |
| Python | 3.11以上 (uv があると楽) |
| Node.js | 20以上 |
| Blender | 5.x (オートリグに使用。無くても生成はできる) |
| ディスク | 約20GB (依存1GB + モデル重み約15GB) |
セットアップ
1. アプリ本体
make setup
uv で .venv を作り、バックエンドの依存とフロントエンドの npm パッケージを入れる。
2. TRELLIS.2 (生成エンジン)
TRELLIS.2 は torch + Metal 拡張 + Python 3.11 という重い専用環境を要求するので、
アプリ本体とは別の venv に隔離して入れる。
先に Metal Toolchain を入れておくと生成が大幅に速くなる (数GBのダウンロード):
xcodebuild -downloadComponent MetalToolchain
続いて:
make setup-trellis
最後に Hugging Face の認証を通す。TRELLIS.2 本体 (MIT) は自由に落とせるが、
内部で使う特徴抽出器と背景除去モデルがゲート付きのため必要:
vendor/trellis-mac/.venv/bin/hf auth login
その上で以下のアクセス申請をする (通常は即時承認):
認証を通してから make setup-trellis をもう一度流すと、最後の工程で重み
(合計約15GB) を取得する。中断しても再実行で再開する。SKIP_WEIGHTS=1 を
付ければ飛ばせるが、その場合は初回生成時にまとめて落ちてくる。
セットアップ状況の確認:
PYTHONPATH=backend .venv/bin/python -m app.engines.trellis
未充足の前提条件は起動後の画面左上「セットアップ」パネルにも出る。
3. 起動
make serve
を開く。フロントを触りながら開発する場合は make dev
(Vite が :5173 で立ち、/api を :8100 にプロキシする)。
使い方
- 左パネルに画像をドラッグ&ドロップする (リポジトリ直下の
images/ と samples/ は初回起動時に自動で取り込まれる)
- サムネイルを選ぶ
- 生成プリセットを押す
| プリセット | 内容 |
|---|
| 形状のみ生成 | テクスチャベイクを省略。形の確認用 |
| テクスチャ付き生成 (標準) | PBRテクスチャをベイク。生成の標準 |
| 最高品質 (低速) | カスケード(1024) + 25ステップ + 入力画像の投影。細部が必要なとき。約14分 |
| 高ポリゴン (最大) | 面数48万 + 4096テクスチャ。ディテールは +5% 程度、51MB |
| ゲーム向け最適化 | + ポリゴン削減 (既定2万面) + UV再展開・リベイク |
| リグ付き生成 | + ヒューマノイド骨格の自動生成とスキニング |
メッシュ修復 (repair_mesh) は全プリセットで既定オン。入力画像の投影
(project_texture) は 最高品質 のみ既定オンで、他は詳細設定から有効にできる。
所要時間はプリセットごとに実測平均を記録して表示する (未計測のうちは「未計測」と出る。
推測値は表示しない)。
「詳細設定」でシード、解像度 (512/1024/1024_cascade/1536_cascade)、目標面数、
テクスチャ解像度などを個別に上書きできる。エンジンに mock を選ぶと、
TRELLIS.2 を使わずシルエット押し出しのダミーメッシュで
パイプラインとビューワの挙動を確認できる。
サーバを立てずに CLI から回すこともできる:
.venv/bin/python scripts/run_pipeline.py images/usa.png --pr