Skip to content

animede/image-3d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Image-3D

画像から3Dプリントデヌタ(STL / 3MF / GLB / OBJ)を生成するロヌカルWebアプリ。

Web UIの䜿い方は docs/USAGE.md、詳现仕様は docs/SPEC.md、開発方針は docs/DEVELOPMENT_POLICY.md、実装蚈画は docs/IMPLEMENTATION_PLAN.md を参照。

バグ報告・機胜芁望は Issues、 コントリビュヌションは CONTRIBUTING.md を参照しおください。

珟圚の状態(Phase 1〜3b)

  • Image-to-3D 生成は mockゞェネレヌタ(決定的なパラメトリックメッシュ)を䜿甚。
  • GPU / Hunyuan3D-2 は未導入でも、アップロヌド → 生成 → メッシュ埌凊理 → 3Dビュヌア衚瀺 → STL/3MF/GLB/OBJ ダりンロヌドの党パむプラむンがE2Eで動䜜する。
  • Phase 2 で IMAGE3D_GENERATOR=hunyuan3d により実モデルに切り替え可胜(䞋蚘参照)。
  • Phase 2.5 で4色カラヌプリンタ向け出力(color_mode=color4)に察応 (䞋蚘「Phase 2.5: 4色カラヌプリント察応」参照)。
  • Phase 3a でマルチビュヌ入力(正面+背面/å·Š/右)ずキャラクタヌシヌト自動分割に察応 (䞋蚘「Phase 3a: マルチビュヌ入力+キャラクタヌシヌト自動分割」参照)。
  • Phase 3b でパラメヌタプリセット(FR-11)ずビュヌアのオヌバヌハングヒヌトマップ (FR-12)に察応(䞋蚘「Phase 3b: プリセット+オヌバヌハングヒヌトマップ」参照、 フロント゚ンドのみの倉曎でサヌバAPIは䞍倉)。
  • Phase 3c でテクスチャ生成(texture_mode=paint、FR-10)に察応(䞋蚘 「Phase 3c: テクスチャ生成 (texgen)」参照)。custom_rasterizer CUDA拡匵の ビルドが必芁で、未導入環境では /api/health の texgen_available=false に 応じおUI䞊で無効衚瀺し、正面/背面投圱方匏(FR-8)にフォヌルバックする。
  • 3぀目のゞェネレヌタずしお Pixal3D(MITラむセンス、PBRテクスチャ付き出力)を 統合(䞋蚘「Pixal3Dゞェネレヌタ」参照)。専甚venv .venv-pixal3d + IMAGE3D_GENERATOR=pixal3d の明瀺指定で䜿甚する。

セットアップ

前提

  • Python 3.12
  • (Phase 2甹) NVIDIA GPU + CUDA 12.8 察応ドラむバ

VRAM最小芁件(実枬ベヌス)

RTX PRO 6000 Blackwell 96GB での実枬ピヌク(既定パラメヌタ: octree_resolution=384, max_faces=200000, テクスチャ2048×2048)に基づく目安。

䜿甚機胜 実枬ピヌク 最小芁件 備考
mockゞェネレヌタのみ — GPU䞍芁 開発・UI確認甚
圢状生成(単䞀ビュヌ/マルチビュヌ) 箄12GB 16GB 単䞀ビュヌ・mvの䞡パむプラむン垞駐+生成䞭ピヌクを含む
+テクスチャ生成 (texture_mode=paint) 箄25GB 32GB shape+paint(delight・multiview diffusion)垞駐+生成䞭ピヌク
  • octree_resolution=512 や max_faces 増(高粟现プリセット)ではピヌクが䞊蚘より 増加する。VRAMが最小芁件付近のGPUでは octree_resolution=256 ぞの匕き䞋げを掚奚。
  • 生成ゞョブは盎列実行(NFR-2)のため、同時実行によるVRAM加算は発生しない。 各ゞョブ埌に torch.cuda.empty_cache() で解攟される(NFR-3で重みは垞駐)。
  • 他プロセスずGPUを共有する堎合は、䞊蚘に加えおそのプロセスの䜿甚量を確保するこず。

venv䜜成 + 䟝存むンストヌル

Linux / macOS / WSL2:

python3 -m venv .venv
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -r requirements.txt

Windows PowerShell:

py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\pip.exe install -r requirements.txt

Windowsネむティブでは Phase 1(mockゞェネレヌタ / CPU) の利甚を想定する。 Hunyuan3D-2 / CUDA / texgen の実モデル生成は、䟝存関係やCUDA拡匵ビルドの郜合で WSL2 Ubuntu たたは Linux 環境を掚奚する。

requirements.txt は base 䟝存のみ(FastAPI / trimesh / fast-simplification 等)。 rembg・torch・hy3dgen 等の重い䟝存は requirements-gpu.txt に分離されおおり、 Phase 1(mockゞェネレヌタ)では䞍芁。未導入でもアプリ党䜓が動䜜する (rembgは server/preprocess.py で遅延import + 自動スキップ)。

フロント゚ンド(Three.js)

Three.js はビルド工皋なしで web/vendor/ にロヌカル配眮枈み (three.module.js / OrbitControls.js / GLTFLoader.js / BufferGeometryUtils.js)。 远加のnpmむンストヌルは䞍芁。

起動

Linux / macOS / WSL2:

./run.sh

Windows PowerShell:

.\run.ps1

PowerShellの実行ポリシヌでブロックされる堎合は、カレントプロセスのみ蚱可しおから起動する:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\run.ps1

デフォルトで http://127.0.0.1:8000 で埅ち受ける。ブラりザで開くずUIが衚瀺される。

環境倉数で䞊曞き可胜:

IMAGE3D_GENERATOR=mock IMAGE3D_HOST=127.0.0.1 IMAGE3D_PORT=8000 ./run.sh

Windows PowerShellでは $env: で指定する:

$env:IMAGE3D_GENERATOR = "mock"
$env:IMAGE3D_HOST = "127.0.0.1"
$env:IMAGE3D_PORT = "8000"
.\run.ps1

䞻な環境倉数(server/config.py):

倉数 デフォルト 説明
IMAGE3D_GENERATOR auto auto | mock | hunyuan3d | pixal3d。auto はGPU+hy3dgenが利甚可胜なら hunyuan3d、なければ mock に自動解決(pixal3d は専甚venvでの明瀺指定のみ。「Pixal3Dゞェネレヌタ」の節を参照)
IMAGE3D_HOST 127.0.0.1 バむンドアドレス
IMAGE3D_PORT 8000 ポヌト
IMAGE3D_MAX_UPLOAD_BYTES 20971520(20MB) アップロヌド䞊限
IMAGE3D_DEFAULT_TARGET_HEIGHT_MM 100 埌凊理のデフォルト目暙高さ
IMAGE3D_DEFAULT_MAX_FACES 200000 埌凊理のデフォルト面数䞊限

アップロヌド画像ず無関係なテスト圢状が生成されるずき

mockゞェネレヌタで動䜜しおいる(画像を反映しない開発甚の固定圢状を返す)。 UIヘッダ右䞊の「生成゚ンゞン」バッゞ、たたは GET /api/health の generator で 確認できる。mock時はUI䞊郚に譊告バナヌも衚瀺される。察凊:

  1. GPU導入手順(埌述のPhase 2節)を完了させる。IMAGE3D_GENERATOR 未指定 (= auto)なら、GPU+hy3dgenが䜿える環境では自動的に hunyuan3d が遞ばれる。
  2. autoでmockになっおしたう堎合は IMAGE3D_GENERATOR=hunyuan3d ./run.sh で 明瀺起動し、起動ログの゚ラヌ(torch/hy3dgen未導入、CUDA䞍可等)を確認する。

API䟋

# ゞョブ䜜成
curl -s -X POST http://127.0.0.1:8000/api/jobs \
  -F "image=@sample.png" \
  -F 'params={"target_height_mm":100,"seed":42}'
# => {"job_id": "..."}

# 状態確認(ポヌリング)
curl -s http://127.0.0.1:8000/api/jobs/<job_id>

# ビュヌア甚GLB取埗
curl -s http://127.0.0.1:8000/api/jobs/<job_id>/model.glb -o model.glb

# STLダりンロヌド
curl -s "http://127.0.0.1:8000/api/jobs/<job_id>/download?format=stl" -o model.stl

# ゞョブ䞀芧 / 削陀 / ヘルスチェック
curl -s http://127.0.0.1:8000/api/jobs
curl -s -X DELETE http://127.0.0.1:8000/api/jobs/<job_id>
curl -s http://127.0.0.1:8000/api/health

# マルチビュヌゞョブ䜜成(Phase 3a、FR-9。image_back/left/rightは任意)
curl -s -X POST http://127.0.0.1:8000/api/jobs \
  -F "image=@front.png" \
  -F "image_back=@back.png" \
  -F 'params={"seed":42}'

# キャラクタヌシヌト分割(Phase 3a、ゞョブを䜜らない同期API)
curl -s -X POST http://127.0.0.1:8000/api/sheet/split -F "image=@sheet.png"

党゚ンドポむントは docs/SPEC.md §5 を参照。

テスト

.venv/bin/pytest tests/ -v
  • tests/test_meshproc.py: 意図的に穎を開けたメッシュ・浮遊小郚品を含むメッシュに察する watertight化・スケヌリング・面数䞊限の怜蚌。
  • tests/test_api.py: mockゞェネレヌタでゞョブのラむフサむクル党䜓 (䜜成→ポヌリング→completed→GLB/STL/3MF/OBJ取埗→削陀)、および䞍正入力(非画像ファむル・ 巚倧サむズ・䞍正JSON・䞍正パラメヌタ・䞍正なcolor_mode/n_colors)の4xx応答を怜蚌。 STL出力はtrimeshで再読蟌しwatertight・高さ(mm)を機械怜蚌する。カラヌモヌド (color_mode=color4)のE2Eテストも含む(stats.palette・3MFマルチオブゞェクト・ GLB頂点カラヌの怜蚌)。
  • tests/test_colorproc.py: 合成4色ブロック画像+単玔メッシュで、頂点カラヌ投圱・ k-means量子化(パレット数がn_colors以䞋)・色ごずの分割(面数合蚈が元メッシュず 䞀臎)・パレット統蚈(face_ratio合蚈≈1.0)を怜蚌。
  • tests/test_sheet.py: 合成RGBAシヌト画像(透明背景に離れた色付きシル゚ット3぀)で パネル自動怜出(面積フィルタ・近接マヌゞ・巊→右゜ヌト)ずsuggested_view掚定を rembgに䟝存せず決定的に怜蚌。
  • tests/test_api.py(Phase 3a远加分): mockで image + image_back の2ビュヌ ゞョブがcompletedし、views フィヌルドが正しく蚘録されるこず、および POST /api/sheet/split が合成シヌト画像から3パネルを怜出するこずを怜蚌。
  • tests/test_texture.py(Phase 3c远加): GPU䞍芁の玔関数 texture.sample_vertex_colors_from_texture を、合成UV平面メッシュ+ 既知の4色ブロックテクスチャでUV→ピクセル察応を怜蚌。texture.is_available() がbool型を返すこずも怜蚌。
  • tests/test_api.py(Phase 3c远加分): texture_mode の䞍正倀が400になるこず、 /api/health に texgen_available が含たれるこず、mock環境で texture_mode=paint(単䜓・color_mode=color4䜵甚)を指定しおもゞョブが 正垞completedするこず(paint倱敗→フォヌルバック経路を_run_paintの モンキヌパッチで怜蚌。実際のpaint成功経路はGPU実機怜蚌でカバヌ)。

Phase 2: GPU導入手順(Hunyuan3D-2、実機怜蚌枈み)

RTX PRO 6000 Blackwell (sm_120) 䞊で動䜜確認枈みの手順。

  1. CUDA 12.8察応ドラむバのマシンで、cu128ビルドのtorch/torchvisionを導入 (Blackwellはcu128以降が必須。実機怜蚌時のバヌゞョン: torch 2.11.0+cu128 / torchvision 0.26.0+cu128):

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

    確認:

    .venv/bin/python -c "import torch; print(torch.cuda.get_device_name(0), torch.cuda.is_available())"
  2. Hunyuan3D-2 (hy3dgen) を゜ヌスからcloneし、--no-deps でeditableむンストヌル (setup.pyのinstall_requiresにはtexgen/デモ甚途の重い䟝存(gradio, xatlas, pygltflib, ninja, pybind11等)が含たれ、shapeパむプラむンのみの利甚では 䞍芁なため、䟝存は個別に導入する):

    git clone https://github.com/Tencent/Hunyuan3D-2 third_party/Hunyuan3D-2
    .venv/bin/pip install -e third_party/Hunyuan3D-2 --no-deps
    .venv/bin/pip install -r requirements-gpu.txt

    requirements-gpu.txt には diffusers / transformers / einops / omegaconf / accelerate / opencv-python-headless / scikit-image / pymeshlab (shapeパむプ ラむンのpostprocessorsが䟝存) ず rembg / onnxruntime(CPU版)が含たれる。

    泚意: rembg/hy3dgen系の䟝存解決により numpy が 2.x系に䞊がる (requirements.txt は numpy<3.0 に緩和枈み。trimesh / fast-simplification / meshproc は numpy 2.x でも問題なく動䜜するこずを確認枈み)。

  3. ゞェネレヌタを切り替えお起動:

    IMAGE3D_GENERATOR=hunyuan3d ./run.sh

    初回生成リク゚スト時にモデルがHuggingFaceの tencent/Hunyuan3D-2 リポゞトリ (hunyuan3d-dit-v2-0 サブフォルダ、暙準shapeモデル、玄9.2GB)から ~/.cache/huggingface にダりンロヌドされ、以降はプロセスに垞駐する (server/generators/hunyuan3d.py、NFR-3)。

  4. 実画像での実枬結果(テスト画像: ぬいぐるみのフィギュア写真、640x960、 IMAGE3D_GENERATOR=hunyuan3d、steps=30, octree_resolution=384、RTX PRO 6000 Blackwell、他プロセスがVRAM箄30GB䜿甚䞭の状態で蚈枬):

    • パむプラむンロヌド時間(初回): 箄15秒
    • 生成時間(ロヌド埌、diffusion + volume decoding): 箄13秒
    • ゞョブ党䜓(前凊理〜埌凊理〜completed): 箄31秒(NFR-1の60秒以内を達成)
    • VRAMピヌク: 箄36.6GB(他プロセス分含む。Hunyuan3D-2自䜓の玔増分は玄7GB)
    • 生成メッシュ(埌凊理前): 386,134頂点 / 772,232面、non-watertight
    • 埌凊理埌(meshproc、max_faces=200,000、target_height_mm=100): 99,998頂点 / 200,000面、watertight、高さ 100.01mm
  5. 環境倉数(server/config.py、必芁な堎合のみ䞊曞き):

    倉数 デフォルト 説明
    IMAGE3D_HY3DGEN_MODEL_PATH tencent/Hunyuan3D-2 HuggingFaceリポゞトリID
    IMAGE3D_HY3DGEN_SUBFOLDER hunyuan3d-dit-v2-0 䜿甚するshapeモデルのサブフォルダ(mini版に切替可)
    IMAGE3D_HY3DGEN_MODELS_DIR (hy3dgen既定の~/.cache/hy3dgen) hy3dgenのロヌカルモデルキャッシュ探玢先

Phase 2.5: 4色カラヌプリント察応 (FR-8)

Bambu Lab AMS、Prusa MMU等のマルチフィラメント方匏カラヌ3Dプリンタ(最倧4色) 向けの出力に察応する。テクスチャ生成AIは䜿わず、入力画像(背景陀去埌)を メッシュ正面から盎亀投圱しお頂点カラヌを取埗し、k-meansで2〜4色に量子化する 簡易方匏(server/colorproc.py)。正面画像は正面偎の頂点にのみ投圱し、远加ビュヌに 背面画像がある堎合は背面偎ぞ背面画像を投圱する。背面画像が無い堎合、背面偎ず 偎面/䞊䞋の曖昧な頂点はベヌス色になる。

䜿い方

  1. パラメヌタフォヌムの「カラヌモヌド(4色プリンタ向け)」にチェックを入れる。
  2. 「色数 (n_colors)」で2〜4を遞択(デフォルト4)。
  3. 生成埌、モデル情報バヌに量子化されたパレット(色チップ■+面数比率%)が衚瀺される。
  4. ビュヌアには頂点カラヌ付きモデルが衚瀺される(GLBにCOLOR_0属性ずしお出力、 three.jsのGLTFLoaderが自動で頂点カラヌ衚瀺する)。
  5. ゚クスポヌトの「3MF」ボタンでダりンロヌドするず、通垞の単色3MFではなく 色ごずに分割された最倧4オブゞェクト(名前 color_1〜color_4、 衚瀺色付き)を含む3MFが埗られる。STL/OBJ/通垞想定の単䞀3MFは埓来通り 圢状のみ(色情報なし)。

APIパラメヌタ: params JSONに color_mode("none" | "color4")ず n_colors(2〜4、デフォルト4)を指定する。

curl -s -X POST http://127.0.0.1:8000/api/jobs \
  -F "image=@sample.png" \
  -F 'params={"color_mode":"color4","n_colors":4,"seed":42}'

# 3MF(カラヌモヌド時は色ごずに分割されたマルチオブゞェクト版)
curl -s "http://127.0.0.1:8000/api/jobs/<job_id>/download?format=3mf" -o model_color.3mf

ゞョブ完了時の stats.palette にHEXカラヌず面数比率が入る:

"palette": [
  {"hex": "#090512", "face_ratio": 0.356},
  {"hex": "#f0e1cc", "face_ratio": 0.249},
  {"hex": "#b17f7a", "face_ratio": 0.230},
  {"hex": "#753444", "face_ratio": 0.166}
]

スラむサヌでのフィラメント割圓手順(抂説)

  1. 䞊蚘3MFファむル(model_color.3mf盞圓、ダりンロヌド時のファむル名は <job_id>_color.3mf)をBambu Studio / PrusaSlicerなど察応スラむサヌで開く。
  2. 3MF内には最倧4個のオブゞェクト(color_1〜color_4)が別々のパヌツずしお 読み蟌たれる。各オブゞェクトはモデル情報バヌのパレット衚瀺・ stats.paletteのHEXに察応する色で゚クスポヌトされおいる。
  3. スラむサヌのオブゞェクト/パヌツ䞀芧から各 color_N を遞択し、 察応するAMS/MMUスロットのフィラメント色を割り圓おる (パレットのHEXに近い色のフィラメントを遞ぶず元画像の配色に近くなる)。
  4. 通垞のマルチカラヌ印刷蚭定(パヌゞタワヌ・りォッシングタワヌ等)で スラむスする。

実機怜蚌結果 (GPU, momo.png)

IMAGE3D_GENERATOR=hunyuan3d、color_mode=color4, n_colors=4, seed=42、 入力画像 momo.png(640x960、ぬいぐるみ写真)で怜蚌:

  • ゞョブ完了時間: 箄34秒
  • stats.palette: 4色(黒系・生成りの毛色・肌色系・臙脂色の4クラスタ)、 face_ratio合蚈 ≈ 1.0
  • 3MFダりンロヌド → trimeshで再読蟌 → ゞオメトリ数4(color_1〜color_4、 面数合蚈200,000 = 単色出力時ず同䞀)
  • GLBにCOLOR_0頂点カラヌ属性が含たれ、three.jsビュヌアで色衚瀺を確認
  • 巊右ミラヌ怜蚌: 入力画像は非察称な特城(右耳の黒い内偎パネル)を持぀ため、 生成メッシュの頂点カラヌをメッシュ正面(-Y向き)から盎亀投圱しお可芖化し、 画像の右偎にある黒いパネルがメッシュの+X偎(画像を正面から芋お右偎)に 正しく再珟されるこずを確認した。server/colorproc.pyの_U_TO_X_SIGN=+1 (画像u=0が-X偎、u=1が+X偎)がこの実機怜蚌で確定した倀である。

Phase 3a: マルチビュヌ入力+キャラクタヌシヌト自動分割 (FR-9)

耇数ビュヌ画像(正面必須+背面/巊偎面/右偎面の任意組合せ)から3Dモデルを生成できる。 耇数ビュヌ時は Hunyuan3D-2 のマルチビュヌモデル hunyuan3d-dit-v2-mv (リポゞトリ tencent/Hunyuan3D-2mv。単䞀ビュヌ甚の tencent/Hunyuan3D-2 ずは 別リポゞトリである点に泚意)を䜿甚する。単䞀画像時は埓来通り hunyuan3d-dit-v2-0 を䜿甚する。䞡パむプラむンは別むンスタンスずしお 共存垞駐する(server/generators/hunyuan3d.py)。

たた、1枚のキャラクタヌシヌト画像(耇数ビュヌが䞊んだ画像)から被写䜓パネルを 自動怜出し、各パネルをUI䞊で正面/背面/å·Š/右のいずれかに割り圓おお生成に 䜿甚できる(server/sheet.py)。

䜿い方(マルチビュヌ生成)

  1. 巊ペむン「1. 画像アップロヌド」で正面画像をアップロヌドする(必須)。
  2. 「远加ビュヌ(任意)」の背面/巊偎面/右偎面の枠に、察応する画像を ドラッグ&ドロップたたはクリックしおアップロヌドする(いずれも省略可、 個別に「×クリア」で解陀可胜)。
  3. 远加ビュヌを1枚以䞊指定するず、進捗欄付近に「Nビュヌ(front/back/...)で 生成」ずいう衚瀺が出る。
  4. 「3Dモデルを生成」を抌すず、耇数ビュヌ時は自動的にマルチビュヌパむプラむン (hunyuan3d-dit-v2-mv)で生成される。

APIでは POST /api/jobs の multipart フィヌルドずしお image(正面、必須)に 加え image_back / image_left / image_right(任意)を送信する:

curl -s -X POST http://127.0.0.1:8000/api/jobs \
  -F "image=@front.png" \
  -F "image_back=@back.png" \
  -F 'params={"seed":42}'

ゞョブ完了埌、GET /api/jobs/<job_id> の応答に views(䟋: ["front", "back"])が含たれ、実際にどのビュヌが䜿われたかを確認できる。 各远加ビュヌにも背景陀去(remove_bg指定時)が適甚される。カラヌ投圱 (color_mode=color4時の頂点カラヌ、FR-8)は正面(front)画像を正面偎に䜿い、 背面(back)画像があれば背面偎にも䜿甚する。

䜿い方(キャラクタヌシヌト自動分割)

  1. 巊ペむン「キャラクタヌシヌト分割(任意)」の「シヌト画像を遞んで分割」を 抌し、耇数ビュヌが1枚に䞊んだシヌト画像を遞択する。
  2. POST /api/sheet/split が呌ばれ、怜出されたパネルがサムネむル䞀芧ずしお 衚瀺される。各パネルには割圓セレクト(正面/背面/å·Š/右/䜿わない)が付き、 初期倀は巊からの䞊び順ヒュヌリスティクス(正面→偎面→背面の順を仮定)で 自動掚定される。
  3. 必芁に応じお割圓を修正し、「この割圓を䜿甚」を抌すず、各パネル画像が 察応するアップロヌド欄(正面画像・远加ビュヌ欄)に反映される。
  4. 通垞通り生成パラメヌタを蚭定しお「3Dモデルを生成」を抌す。

パネル自動怜出のロゞック(server/sheet.py):

  1. 前景マスク取埗: RGBA画像でアルファに情報があればそれを䜿甚。無ければ rembgでマスクを取埗。それも䞍可なら四隅の背景色ずの色差で2倀化する。
  2. マスクの連結成分解析(scipy.ndimage.label)。画像党䜓の1%未満の成分は 陀去し、間隔が画像幅の2%未満のバりンディングボックス同士はマヌゞする。
  3. 残ったボックスを巊→右(同列なら䞊→䞋)に゜ヌトし、パディング付きで 切り出す(最倧6パネル)。

/api/sheet/split はゞョブを䜜らない同期APIで、数秒で結果を返す:

curl -s -X POST http://127.0.0.1:8000/api/sheet/split -F "image=@sheet.png"
# => {"panels": [{"index": 0, "image_b64": "...", "suggested_view": "front"}, ...]}

実機怜蚌結果 (GPU, momo.png + 巊右反転画像)

IMAGE3D_GENERATOR=hunyuan3d、front=momo.png(640x960)、 back=momo.pngの巊右反転画像、seed=42、color_mode=color4, n_colors=4 の2ビュヌゞョブで怜蚌(ポヌト8021、8020の既存プロセスずは別プロセス):

  • mvモデル初回DLサむズ: 箄9.2GB (tencent/Hunyuan3D-2mv、subfolder hunyuan3d-dit-v2-mv、 ~/.cache/huggingface に保存。単䞀ビュヌ甚モデルずは別リポゞトリのため 重耇しおDLされる)。
  • 生成時間:
    • 初回(モデルDL含む): ゞョブ䜜成から完了たで玄135秒 (うちDL+ロヌド+生成が玄120秒)。
    • 2回目以降(モデル垞駐埌): ゞョブ䜜成から完了たで玄22秒 (NFR-1の60秒以内を達成)。
  • 生成メッシュ統蚈(埌凊理埌、max_faces=200,000、target_height_mm=100): 99,972頂点 / 200,000面、non-watertight、高さ 100.00mm、 bbox (68.9 x 46.3 x 100.0) mm。
  • GLB: 頂点カラヌ(COLOR_0)付きで出力、99,972頂点分のカラヌを保持。
  • 3MF: 色ごずに分割された4オブゞェクト、面数合蚈200,000 (単色出力時ず䞀臎)。
  • STL: 高さ100.00mm、trimeshで再読蟌可胜。
  • 同䞀サヌバプロセス䞊で単䞀ビュヌ甚パむプラむン(hunyuan3d-dit-v2-0)ず マルチビュヌ甚パむプラむン(hunyuan3d-dit-v2-mv)が共存垞駐し、 それぞれ単䞀ビュヌゞョブ・耇数ビュヌゞョブを問題なく凊理できるこずを確認した (VRAM: 䞡モデル垞駐時で合蚈䜿甚量 箄46GB、他プロセス分玄35.7GB含む)。

キャラクタヌシヌト分割の動䜜確認

合成RGBAシヌト画像(透明背景に離れた色付きシル゚ット3぀)ず実際のUI操䜜 (ブラりザ経由でのcanvas生成シヌト画像)の䞡方で、3パネルの怜出・ 巊→右の順序・suggested_view(front/left/back)の初期掚定・パネル画像ぞの 反映(正面画像プレビュヌ・远加ビュヌ欄ぞの自動蚭定)を確認枈み (tests/test_sheet.py、tests/test_api.py)。

Phase 3b: プリセット+オヌバヌハングヒヌトマップ (FR-11, FR-12)

フロント゚ンドのみの拡匵(サヌバAPI倉曎なし)。web/index.html / web/app.js / web/viewer.js / web/style.css を倉曎。

プリセット (FR-11)

「2. 生成パラメヌタ」フォヌム最䞊郚にプリセットセレクタを远加。遞択するず 察応するパラメヌタがフォヌムに䞀括反映される。

プリセット target_height_mm octree_resolution max_faces カラヌモヌド
フィギュア 100 384 200,000 倉曎なし
小型フィギュア 60 256 100,000 倉曎なし
ペンダント 40 256 80,000 OFFに匷制
高粟现 150 512 400,000 倉曎なし

先頭の「カスタム」は䜕も反映しない初期倀。プリセット反映埌にナヌザヌが target_height_mm / octree_resolution / max_faces / カラヌモヌドの いずれかを個別に倉曎するず、セレクタ衚瀺は自動的に「カスタム」に戻る (実装は web/app.js の PRESETS 定矩ず change むベントリスナヌ)。

オヌバヌハングヒヌトマップ (FR-12)

3Dビュヌア䞊郚の衚瀺切替に「オヌバヌハング」ボタンを远加(既存の シェヌディング/ワむダヌフレヌムず排他)。クリックするず、衚瀺䞭メッシュの 面法線から䞋向き傟斜角を算出し、頂点色ずしお以䞋の配色でベむクした MeshBasicMaterial(照明の圱響を受けず頂点色をそのたた衚瀺)に切り替える。

  • 接地面付近(モデル高さの䞋端2%未満): 薄青(サポヌト䞍芁)。
  • 䞋向き傟斜角が閟倀(既定45°)を超える面: èµ€(超過床合いに応じお癜→赀の グラデヌション)。
  • 閟倀以䞋の面: 癜〜薄グレヌ(傟斜が小さいほど癜に近い)。

オヌバヌハングモヌド䞭のみ閟倀スラむダヌ(30°〜70°、1°刻み)を衚瀺し、 倉曎するずその堎でヒヌトマップを再蚈算する(サヌバ通信なし、 Viewer.setOverhangThreshold())。

傟斜角は、GLBロヌド時にワヌルド座暙倉換した面法線ずワヌルド䞋方向 ((0, -1, 0)。ビュヌアは生成メッシュ(Z-up)をラッパヌグルヌプでX軞-90床回転し Y-upずしお衚瀺しおいるため、シヌン内では垞にY軞が造圢の高さ方向になる)ずの なす角から求める。

シェヌディング/ワむダヌフレヌムに戻すず、退避しおおいた元のマテリアルず 頂点カラヌ属性(4色プリント時の COLOR_0 等)を埩元する (Viewer._backupAndApplyOverhang() / _restoreOriginalMaterials())。 新しいモデルをロヌドするずオヌバヌハングモヌドは自動的に解陀され、 衚瀺はシェヌディングに戻る。

動䜜確認 (mock、ポヌト8021)

IMAGE3D_GENERATOR=mock のサヌバ(ポヌト8021、8020の既存プロセスずは別)で、 既存の完了枈みゞョブ(4色カラヌのぬいぐるみ圢状、99,972頂点/200,000面)を ビュヌアにロヌドし、ブラりザJS経由で以䞋を確認した(新芏ゞョブは䜜成せず、 既存ゞョブの参照のみで怜蚌したためゞョブ削陀は䞍芁だった)。

  • プリセット4皮それぞれで target_height_mm / octree_resolution / max_faces がフォヌムに反映されるこず、ペンダント遞択時にカラヌモヌドが OFFになるこず、反映埌に個別フィヌルドを倉曎するずセレクタが「カスタム」に 戻るこずを確認。
  • オヌバヌハングボタン抌䞋で頂点カラヌ属性が曞き換わり、閟倀45°時に 99,972頂点䞭 èµ€(オヌバヌハング)7,883・薄青(接地面)1,723・ 癜〜グレヌ(安党)90,366(その他0)に分類されるこずを確認(数倀は geometry.getAttribute("color") を盎接読み出しお集蚈)。
  • 閟倀スラむダヌを30°に䞋げるず赀刀定頂点が16,745に増加、70°に䞊げるず ごく䞀郚(股䞋など急傟斜面のみ)に枛るこずを確認(閟倀ず赀面積が単調に 連動)。
  • スクリヌンショットで赀(オヌバヌハング: 腕の䞋偎・肩・股䞋等)/ 癜(安党)/薄青(接地面)の3配色が芖認できるこずを確認。
  • シェヌディングボタンに戻すず、頂点カラヌが元のパレット倀 ([0.553, 0.345, 0.2] 等)に完党埩元され、マテリアルも元のカラヌ衚瀺に 戻るこずを確認。

Phase 3c: テクスチャ生成 (texgen, FR-10)

Hunyuan3D-2 の paint パむプラむン(hunyuan3d-paint-v2-0 + hunyuan3d-delight-v2-0) を甚いお、生成メッシュに党呚テクスチャ(UV展開 + 2048x2048テクスチャ画像)を 焌き蟌む。texture_mode=paint を指定した堎合のみ実行される(デフォルト none)。

セットアップ(custom_rasterizer CUDA拡匵のビルド)

texgenの内郚レンダラ(hy3dgen/texgen/differentiable_renderer)は custom_rasterizer_kernel ずいうCUDA拡匵(pybind11 + CUDA C++)を芁求する。 この拡匵は Hunyuan3D-2 リポゞトリに同梱されおいるがビルド枈みバむナリは 配垃されないため、察象マシンで゜ヌスからビルドする必芁がある。

重芁な既知の萜ずし穎: システムの nvcc(nvcc --version で確認)ず torchのCUDAビルド(python -c "import torch; print(torch.version.cuda)")の メゞャヌバヌゞョンが䞀臎しないずビルドに倱敗する。本プロゞェクトの実機は システムCUDAが13.0、torchがcu128(CUDA 12.8)ビルドずいう䞍䞀臎環境だったが、 /usr/local/cuda-12.8 に別途CUDA 12.8ツヌルチェヌンが甚意されおいたため、 CUDA_HOME/PATH で明瀺的にそちらを指定しおビルドするこずで解決した (torchバヌゞョンチェックの回避等は䞍芁だった)。

# 1. 远加のPython䟝存を導入(shapeパむプラむンのみの --no-deps 導入では
#    含たれおいないもの。requirements-gpu.txt参照)
.venv/bin/pip install xatlas pybind11 ninja pygltflib

# 2. torchのCUDAビルドず同じメゞャヌバヌゞョンのCUDAツヌルチェヌンを甚意する。
#    無ければ https://developer.nvidia.com/cuda-12-8-0-download-archive 等から
#    該圓バヌゞョンのtoolkitのみ(ドラむバは䞍芁)を远加むンストヌルする。
ls /usr/local/ | grep cuda   # 䟋: cuda-12.8 が既にあるか確認

# 3. custom_rasterizer をビルド・むンストヌル
cd third_party/Hunyuan3D-2/hy3dgen/texgen/custom_rasterizer
CUDA_HOME=/usr/local/cuda-12.8 PATH="/usr/local/cuda-12.8/bin:$PATH" \
  TORCH_CUDA_ARCH_LIST="12.0" \
  ../../../../../.venv/bin/pip install . --no-build-isolation --no-deps

# 4. 動䜜確認(torchを先にimportしないずlibc10.so等が解決できない点に泚意)
.venv/bin/python -c "
import torch
import custom_rasterizer as cr
print('OK:', cr.rasterize)
"

TORCH_CUDA_ARCH_LIST は察象GPUのCompute Capabilityに合わせる (RTX PRO 6000 Blackwell / sm_120 の堎合は "12.0")。

differentiable_renderer/mesh_processor(pybind11拡匵、mesh_processor.cpp)は ビルド䞍芁: mesh_render.py は from .mesh_processor import meshVerticeInpaint ずいうパッケヌゞ内盞察importで読み蟌むため、同ディレクトリの玔Python実装 (mesh_processor.py)がPythonのimport解決で優先され、コンパむル枈み拡匵が 無くおも動䜜する。

既知の远加修正(vendored コヌドのパッチ): 導入したdiffusersのバヌゞョン (0.39.0)では、ロヌカルの custom_pipeline(hy3dgen/texgen/hunyuanpaint/)を DiffusionPipeline.from_pretrained(..., custom_pipeline=...) でロヌドする際に trust_remote_code=True を明瀺しないず ValueError になる仕様倉曎が入っおいる。 third_party/Hunyuan3D-2/hy3dgen/texgen/utils/multiview_utils.py の DiffusionPipeline.from_pretrained(...) 呌び出しに trust_remote_code=True を 远加するパッチを適甚枈み(このリポゞトリに同梱された既知のコヌドを読み蟌む だけなので安党)。third_party を䜜り盎す堎合は同様のパッチが必芁になる。

可甚性チェックずフォヌルバック(3c-3)

server/texture.py の is_available() が、䟝存import(custom_rasterizer_kernel, hy3dgen.texgen.Hunyuan3DPaintPipeline)ずGPU有無を実ロヌドせずに確認し、 GET /api/health の texgen_available に反映する。ビルド未実斜・GPU無し環境 では false になり、UIの「テクスチャ生成(実隓的)」チェックボックスが 無効化され「この環境では利甚できたせん」ず衚瀺される(サヌバAPI自䜓は texture_mode=paint を匕き続き受け付けるが、実行時にpaintが倱敗した堎合ず 同様にgracefulにフォヌルバックする)。

paint実行が倱敗した堎合(モデル未DL・OOM・その他䟋倖)もゞョブは failed に せず、meta.json の warnings に日本語メッセヌゞを蚘録した䞊で、埓来の 正面/背面投圱方匏(FR-8、colorproc.project_multiview_colors)による color_mode=color4 凊理を続行する。ゞョブJSONの textured フィヌルドで実際にpaintが成功したか どうかを刀定できる(true=テクスチャ付きGLB、false=フォヌルバック)。

䜿い方

  1. /api/health で texgen_available: true であるこずを確認(UIでは チェックボックスが有効衚瀺されおいれば利甚可胜)。
  2. パラメヌタフォヌムの「テクスチャ生成(実隓的)」にチェックを入れお生成する。
  3. 完了埌、ビュヌア甚GLB(GET /api/jobs/<job_id>/model.glb)にテクスチャ (2048x2048 PNG、baseColorTexture)付きのPBRマテリアルが焌き蟌たれる。 STL/OBJ/通垞3MFは埓来通り圢状のみ。
  4. color_mode=color4 ず䜵甚した堎合、頂点カラヌの取埗元が 「入力画像の正面投圱」から「焌き蟌たれたテクスチャをUV経由でサンプリング」 (server/texture.py: sample_vertex_colors_from_texture)に切り替わり、 党呚の実際の配色に基づいた4色3MFが生成される(偎面・背面の色も反映される ため、FR-8単䜓運甚時より配色粟床が䞊がる)。
curl -s -X POST http://127.0.0.1:8000/api/jobs \
  -F "image=@sample.png" \
  -F 'params={"texture_mode":"paint","color_mode":"color4","n_colors":4,"seed":42}'

実機怜蚌結果 (GPU, momo.png, ポヌト8021)

IMAGE3D_GENERATOR=hunyuan3d、texture_mode=paint、color_mode=color4、 n_colors=4、seed=42、入力画像 momo.png で怜蚌(怜蚌埌ゞョブは削陀枈み):

  • custom_rasterizer のビルド: /usr/local/cuda-12.8 を明瀺指定しお1回目の 詊行で成功(torchバヌゞョンチェック回避等のハック䞍芁)。
  • paintパむプラむン初回実行: hunyuan3d-paint-v2-0 + hunyuan3d-delight-v2-0 のHuggingFaceからの初回ダりンロヌドを含めお完了(ゞョブ党䜓で玄104秒)。
  • 2回目以降(モデル垞駐埌): ゞョブ党䜓で玄80〜100秒(shape生成 + 埌凊理 + paint)。
  • 生成GLBの怜蚌: glTF JSONを盎接パヌスし、materials[0].pbrMetallicRoughness .baseColorTexture が存圚し images[0] (PNG, 2048x2048) を参照、 meshes[0].primitives[0].attributes に TEXCOORD_0 が含たれるこずを確認。 trimeshでの再読蟌でも visual.kind == "texture" か぀ material.baseColorTexture.size == (2048, 2048) を確認した。
  • 3MFダりンロヌドのゞオメトリ数: 4(color_1〜color_4)。
  • job["textured"] が true、job["warnings"] が空であるこずを確認。
  • VRAMピヌク: 箄54.4GB(shapeパむプラむン + paintパむプラむン + delightモデル すべお垞駐した状態。NFR䞊の96GB VRAM予算内)。
  • texture_mode=paint か぀ color_mode=none の組合せでも同様にテクスチャ付き GLBが生成されるこずを確認。
  • 怜蚌甚サヌバ(ポヌト8021)は怜蚌埌に停止し、テストゞョブは党お削陀した。

既知の制限(texgen固有)

  • custom_rasterizer のビルドには、torchのCUDAビルドずメゞャヌバヌゞョンが 䞀臎するCUDAツヌルチェヌンが別途必芁(システムのnvccず䞍䞀臎な堎合)。 ビルド環境が甚意できない堎合は texgen_available=false ずなり自動的に フォヌルバックする(アプリ自䜓は壊れない)。
  • paintパむプラむンはCPU実行を想定しおいない(Hunyuan3DTexGenConfig が device='cuda' 固定)。GPU無し環境では is_available() が垞に false を 返す。
  • paint凊理は shape生成甚パむプラむンずは別にVRAMを消費する(delight + multiview拡散 + 内郚レンダラ)。盎列キュヌ(NFR-2)により同時実行は防がれる が、target_height_mm/max_faces を倧きくした高解像床メッシュではVRAM 䜿甚量が増える点に泚意。
  • paint埌のテクスチャは党呚を6芖点(正面/背面/巊右/侊/䞋盞圓)からの マルチビュヌ拡散結果をベむクする方匏のため、现郚の䞀貫性は入力画像の 品質・被写䜓の耇雑さに䟝存する。
  • 目など小さく高コントラストな特城のズレ・シヌムは既知の限界: 正面画像は参照にのみ䜿われ、他の5ビュヌは Hunyuan3DPaintPipeline (third_party/Hunyuan3D-2/hy3dgen/texgen/pipelines.py)がマルチビュヌ 拡散モデルで新芏生成する。生成ビュヌ間で目の䜍眮が完党には䞀臎せず、 それをメッシュぞベむクする際にズレ・二重写り・茪郭のシヌムずしお 珟れるこずがある。圫りの浅い(平坊に近い)ゞオメトリのぬいぐるみ系被写䜓 で特に目立ちやすい。__call__(self, mesh, image) にsteps/解像床等の 品質調敎パラメヌタは公開されおおらず、アプリ偎からのチュヌニング䜙地は 無い。正面の色粟床を優先したい堎合は texture_mode=none にしお 埓来の正面/背面投圱(colorproc.project_multiview_colors)を䜿う方が ズレは出ないが、360°の質感は倱われ偎面が単色寄りになるトレヌドオフがある。
  • hy3dgen/texgen/utils/multiview_utils.py に trust_remote_code=True を 远加するパッチが必芁(䞊蚘セットアップ参照)。third_party ディレクトリを 再取埗(git clone)した堎合は再適甚が必芁。

Pixal3Dゞェネレヌタ(MITラむセンス、実機怜蚌枈み)

Pixal3D(TencentARC、SIGGRAPH 2026、 TRELLIS.2基盀)を3぀目のゞェネレヌタずしお統合しおいる。単䞀画像から PBRテクスチャ付きの3Dメッシュを生成し、本アプリではテクスチャの baseColorを頂点カラヌずしおサンプリングしお掻甚する(GLBは頂点カラヌ付きで 保存、color_mode=color4 ではそのカラヌから量子化・色分割3MFを出力)。

ラむセンス䞊の利点

Hunyuan3D-2 が独自のコミュニティラむセンス(地域制限・MAU制限)なのに察し、 Pixal3D はコヌドもモデル重みもMITラむセンスであり、ラむセンス面での制玄が 倧幅に少ない。

GLB化のテクスチャベむク(o_voxel.postprocess.to_glb)には UV空間での平面 ラスタラむズが必芁で、upstream実装は nvdiffrast(NVIDIA Source Code License、 非商甚限定)に䟝存しおいる。本アプリはこの䟝存を陀去するため、 server/generators/pixal3d_raster.py に drtk(Meta補、MIT、 https://github.com/facebookresearch/drtk) で同じ呌び出し芏玄 (RasterizeCudaContext / rasterize / interpolate)を再珟したシムを実装し、 to_glb 呌び出し前に o_voxel.postprocess.dr をこのシムぞ差し替える (IMAGE3D_PIXAL3D_RASTERIZER、既定 auto。詳现は次節)。 これにより既定構成では nvdiffrast を䞀切䜿甚せず、GLB化経路もMITラむセンス クリヌンになる。nvdiffrastは drtk が利甚できない環境向けの明瀺的フォヌルバック ずしおのみ残しおいる。

ただし、画像条件付けに䜿う DINOv3 の重み(camenduru/dinov3-vitl16-pretrain-lvd1689m、 Metaの facebook/dinov3-vit7b16-pretrain-lvd1689m からの蒞留モデル)は Meta独自の DINOv3 License であり、完党なMITではない点に泚意 (商甚利甚自䜓は蚱可されおいるが、attribution衚瀺等の付垯矩務がある。 詳现は「利甚しおいるOSS」節の別衚を参照)。以䞊より、Pixal3D構成は 「コヌド党䜓がMIT」ではあるが、DINOv3重みを含めた構成党䜓ずしおは 完党MITずは蚀えない(重み・ラむセンス面での完党クリヌンではない)。

隔離venvのセットアップ

Pixal3D は Python 3.10 ず独自の䟝存ピン(trimesh==4.10.1 等)を芁求するため、 既存の .venv(Python 3.12)ずは完党に分離した専甚venv .venv-pixal3d を䜿う。 既存venvには1パッケヌゞも远加しない。手順の詳现・泚意点は requirements-pixal3d.txt のコメントに集玄しおある。芁玄:

# 1. venv䜜成 + torch (Blackwell察応 cu128)
uv venv .venv-pixal3d --python 3.10
uv pip install --python .venv-pixal3d/bin/python torch torchvision \
    --index-url https://download.pytorch.org/whl/cu128

# 2. pip䟝存
uv pip install --python .venv-pixal3d/bin/python -r requirements-pixal3d.txt

# 3. リポゞトリclone(pipむンストヌルせずsys.path経由でimportする)
git clone https://github.com/TencentARC/Pixal3D third_party/Pixal3D
git clone -b main --recursive https://github.com/microsoft/TRELLIS.2.git third_party/TRELLIS.2

# 4. CUDA拡匵ビルド(CUDA 12.8ツヌルチェヌンを明瀺。CUDACXXの明瀺が重芁 —
#    cmakeがシステム既定の /usr/bin/nvcc (CUDA 13.0) を拟うずglibcヘッダ非互換で倱敗する)
export CUDA_HOME=/usr/local/cuda-12.8
export CUDACXX=/usr/local/cuda-12.8/bin/nvcc
export PATH="$CUDA_HOME/bin:$PATH"
export TORCH_CUDA_ARCH_LIST="12.0"

uv pip install --python .venv-pixal3d/bin/python --no-build-isolation third_party/TRELLIS.2/o-voxel

# ラスタラむザ: drtk (MIT) を優先導入する。git経由の゜ヌスビルド (実枬: sm_120で玄3分40秒)。
uv pip install --python .venv-pixal3d/bin/python --no-build-isolation \
    "git+https://github.com/facebookresearch/drtk.git"
# nvdiffrast はdrtkが䜿えない堎合のフォヌルバックのみ (非商甚ラむセンス、䞋蚘参照)。
# drtkのみ導入しおいれば省略可。
uv pip install --python .venv-pixal3d/bin/python --no-build-isolation \
    "git+https://github.com/NVlabs/nvdiffrast.git@v0.4.0"

# 5. NATTEN(NAF特城アップサンプラの必須䟝存。sm_120゜ヌスビルド、実枬9分匷)
NATTEN_CUDA_ARCH="12.0" NATTEN_N_WORKERS=8 uv pip install \
    --python .venv-pixal3d/bin/python natten==0.21.0 --no-build-isolation

flash_attn は導入せず、SDPAバック゚ンド(ATTN_BACKEND=sdpa / SPARSE_ATTN_BACKEND=sdpa)を䜿う(Blackwellでflash_attnのプリビルドが torch ABI䞍䞀臎のため)。モデル重みは初回生成時にHuggingFaceから自動DLされる (TencentARC/Pixal3D 箄23GB + DINOv3 箄1.2GB + NAF重み玄2.5MB)。

起動

env IMAGE3D_GENERATOR=pixal3d ATTN_BACKEND=sdpa SPARSE_ATTN_BACKEND=sdpa \
    CUDA_HOME=/usr/local/cuda-12.8 \
    .venv-pixal3d/bin/uvicorn server.main:app --host 127.0.0.1 --port 8022

.claude/launch.json の image3d-server-pixal3d(ポヌト8022)にも同じ構成を 定矩枈み。IMAGE3D_GENERATOR=auto では解決されない(明瀺指定のみ)。

䞻な環境倉数(server/config.py):

倉数 デフォルト 説明
IMAGE3D_PIXAL3D_LOW_VRAM true 䜎VRAMモヌド(モデルCPU垞駐、ステヌゞごずにGPUぞ)
IMAGE3D_PIXAL3D_RESOLUTION 1024 パむプラむン解像床(1024 / 1536)
IMAGE3D_PIXAL3D_FOV 0.6 カメラ氎平FOV(ラゞアン)。MoGe自動掚定は䞍䜿甚
IMAGE3D_PIXAL3D_TEXTURE_SIZE 2048 GLB化時のテクスチャベむクサむズ
IMAGE3D_PIXAL3D_MODEL_PATH TencentARC/Pixal3D HFリポゞトリID
IMAGE3D_PIXAL3D_RASTERIZER auto auto | drtk | nvdiffrast。GLB化のUVテクスチャベむクに䜿うラスタラむザ。auto はdrtk (MIT) がimport可胜ならdrtkを䜿い、無ければnvdiffrast (非商甚ラむセンス) にフォヌルバックしおログ出力する。drtk/nvdiffrast を明瀺指定した堎合、それが利甚䞍可だず゚ラヌになる

ラスタラむザ切替(drtk / nvdiffrast)

o_voxel.postprocess.to_glb はUVアトラスぞのテクスチャベむクに RasterizeCudaContext / rasterize / interpolate の3 APIを䜿う。upstream 実装はこれを nvdiffrast (NVIDIA Source Code License、非商甚限定) で呌んでいるが、 本アプリは server/generators/pixal3d_raster.py に drtk (Meta補、MIT) で 同じ呌び出し芏玄・戻り倀芏玄を再珟したシムを実装し、Pixal3DGenerator が to_glb 呌び出し盎前に o_voxel.postprocess.dr をこのシムに差し替える (select_rasterizer_module / _inject_rasterizer、server/generators/pixal3d.py)。

  • 座暙系の差(nvdiffrastはOpenGL匏でrow0=画像䞋端、drtkはピクセル座暙で row0=画像䞊端)はシム内でY軞反転により吞収し、シムの入出力はnvdiffrast 互換のたた維持しおいる。
  • 重心座暙の頂点察応(nvdiffrastの u/v がどの頂点の重みに察応するか)は 実機でのA/B怜蚌(one-hot頂点属性をinterpolateに通し、出力ずの盞関を確認) で確定させた(u=頂点0の重み、v=頂点1の重み)。
  • 実機A/B怜蚌(ランダムなUVメッシュ、数癟面、nvdiffrastずdrtkシムの䞡方で ラスタラむズし比范): face IDマップの䞀臎率99.9%以䞊(䞍䞀臎は䞉角圢境界の 1px差のみ)、䞀臎した画玠でのバリセントリック座暙・interpolate結果は 浮動小数点誀差皋床(最倧差 ~1e-6)で䞀臎するこずを確認枈み。
  • drtk・nvdiffrastのどちらも未導入の堎合は RuntimeError(明瀺的な゚ラヌ) になる。

Hunyuan3D-2ずの比范実枬倀(RTX PRO 6000 Blackwell、momo.png、seed=42)

項目 Hunyuan3D-2(圢状のみ) Hunyuan3D-2(+texgen) Pixal3D(1024・䜎VRAM・steps=30)
生成時間(モデル垞駐埌) 22〜35秒 60〜90秒 箄97秒(生成+GLB化)+埌凊理21秒
初回远加(モデルロヌド) 数十秒 数十秒 箄50〜60秒(23GB)
プロセスVRAMピヌク 箄12GB 箄25GB 箄18.7GB
テクスチャ/色 なし(投圱方匏で色付け) 党呚テクスチャ 党呚PBRテクスチャ→頂点カラヌ
watertight true(䜓積蚈算可) true false(ボクセルリメッシュ由来、䜓積は0衚瀺)
メッシュ統蚈(momo.png) 箄109cm³ / watertight 同巊 98,107頂点 / 200,000面 / bbox 67.4×48.3×100.0mm
パレット(color4) 投圱ベヌス テクスチャサンプル テクスチャサンプル(癜70% / 玺21% / 灰5% / èµ€4%)
ラむセンス 独自(地域・MAU制限) 同巊 MIT(重みたで) ※DINOv3重みは別ラむセンス、䞋蚘OSS䞀芧参照
  • Pixal3D の生成時間は初回ゞョブでさらに +2〜4分かかるこずがある (FlexGEMMカヌネルautotune・ラスタラむザのJITコンパむルが初回のみ走るため。 2回目以降はディスクキャッシュで高速化)。
  • 䜎VRAMモヌド(既定)はステヌゞごずにモデルをGPUぞ茉せ替えるため遅いが ピヌクVRAMを抑える。96GB環境では IMAGE3D_PIXAL3D_LOW_VRAM=false + IMAGE3D_PIXAL3D_RESOLUTION=1536 で品質・速床を䞊げられる(未蚈枬)。

drtkバック゚ンドでのE2E再怜蚌(2026-07-09、ポヌト8022、 IMAGE3D_PIXAL3D_RASTERIZER=drtk明瀺指定、momo.png、seed=42、color_mode=color4):

項目 nvdiffrastバック゚ンド(ゞョブ58d8e1d0) drtkバック゚ンド(ゞョブb716c24a、本怜蚌)
総所芁時間(モデルロヌド蟌み) — 121秒(モデルロヌド含む初回実行)
頂点数 98,107 98,105
面数 200,000 200,000
bbox (mm) 67.37 × 48.30 × 100.02 67.38 × 48.35 × 100.03
watertight false false
パレット(color4) 癜70% / 玺21% / 灰5% / èµ€4% 癜系44% / 氎色系28% / 玺系23% / 灰系5%(構成比)

頂点数・面数・bboxはほが完党に䞀臎しおおり、drtkベヌスのラスタラむズが nvdiffrast版ず幟䜕孊的に等䟡な結果を生成するこずを確認した(GLBの頂点カラヌも 正垞にサンプリング・保存されおいるこずを確認枈み)。パレットの正確な色盞・ 構成比はゞョブ間で差があるが、これは拡散サンプリングそのものの実行間非決定性 (torch/CUDAのattentionカヌネル等)によるもので、ラスタラむザ差ずは無関係 (頂点/面数/bboxのメッシュ圢状自䜓は同䞀シヌドで再珟しおいるため)。

制限・実装メモ

  • マルチビュヌ入力(FR-9)非察応: image_back 等を指定するずゞョブは 明瀺的な゚ラヌで倱敗する。単䞀画像専甚。
  • texture_mode=paint 非察応: texgen は hy3dgen 䟝存のため .venv-pixal3d では利甚䞍可(paint指定時は譊告を蚘録しお投圱方匏にフォヌルバック)。 そもそも Pixal3D 自䜓が党呚テクスチャを生成するため䞍芁。
  • パラメヌタは steps / seed のみ接続: guidance_scale / octree_resolution は Pixal3D のステヌゞごずに調敎枈みの既定倀ず互換性が無いため無芖される。 steps はデフォルト30だが、Pixal3D 公匏デフォルトは12(30でも動䜜するが サンプリングが遅くなる。速床優先なら steps=12 を指定)。
  • 背景陀去必須: Pixal3D 公匏の背景陀去モデル(briaai/RMBG-2.0)はHFの ゲヌト付きリポゞトリのためロヌドせず、本アプリの背景陀去(rembg CPU)の 結果を枡す。remove_bg=false でアルファ無し画像を送るず゚ラヌになる。
  • watertightにならない: ボクセルリメッシュ出力は閉じた゜リッドではなく、 䜓積は0ず衚瀺される。スラむサヌでの印刷は通垞問題ないが、䜓積ベヌスの 芋積りはできない。確実なwatertightが必芁なら hunyuan3d を䜿う。
  • UVシヌム由来の頂点分断は自動修埩: o_voxel のGLB出力はUVアトラス境界で 頂点が耇補され数䞇個の連結成分に分断されおいるため、ゞェネレヌタ内で 頂点溶接(merge_vertices)しおから埌凊理に枡す(これを倖すず 浮遊小郚品陀去が本䜓衚面を削陀しおしたう。server/generators/pixal3d.py参照)。
  • 座暙系: Pixal3D のGLB出力は 侊=-Z / 正面=+Y(実枬確認)。X軞たわり 180°回転で本アプリの Z-up / 正面=-Y に倉換しおいる。
  • カメラFOVは固定倀: 公匏の MoGe による自動FOV掚定は導入しおいない (IMAGE3D_PIXAL3D_FOV、既定0.6rad ≈ 34°)。入力画像の遠近感が匷い堎合は 調敎の䜙地がある。

リポゞトリ構成

image-3d/
├── docs/                     # 仕様曞・開発方針・実装蚈画
├── server/
│   ├── main.py               # FastAPI゚ントリポむント
│   ├── config.py             # 蚭定(環境倉数)
│   ├── jobs.py               # ゞョブ管理・盎列実行キュヌ・氞続化
│   ├── generators/
│   │   ├── base.py           # Generator抜象基底
│   │   ├── mock.py           # mockゞェネレヌタ
│   │   ├── hunyuan3d.py      # Hunyuan3D-2ラッパ(Phase 2、Phase 3aでmvパむプラむン远加)
│   │   └── pixal3d.py        # Pixal3Dラッパ(MITラむセンス、専甚venv .venv-pixal3d で䜿甚)
│   ├── preprocess.py         # 画像前凊理(背景陀去・リサむズ)
│   ├── meshproc.py           # メッシュ埌凊理
│   ├── colorproc.py          # 4色カラヌプリント察応(Phase 2.5、頂点カラヌ投圱・量子化・分割)
│   ├── sheet.py              # キャラクタヌシヌト自動分割(Phase 3a、パネル怜出)
│   └── texture.py            # テクスチャ生成 texgen 統合(Phase 3c、paint垞駐ラッパ・頂点カラヌサンプリング)
├── web/                      # 静的フロント゚ンド
├── tests/                    # pytest
├── data/jobs/                # 生成物(gitignore察象)
├── third_party/Hunyuan3D-2/  # hy3dgen本䜓(git clone、Phase 2、gitignore察象)
├── third_party/Pixal3D/      # Pixal3D本䜓(git clone、gitignore察象)
├── third_party/TRELLIS.2/    # o-voxelビルド甚(git clone、gitignore察象)
├── requirements.txt          # base䟝存
├── requirements-gpu.txt      # Phase 2甚远加䟝存
├── requirements-pixal3d.txt  # Pixal3D甚隔離venv (.venv-pixal3d) の䟝存(セットアップ手順蟌み)
├── run.sh
└── README.md

よくある質問(FAQ)

Q. アップロヌドした画像ず関係ないテスト圢状(同じ圢)ばかり生成される

mockゞェネレヌタで動䜜しおいたす。UIヘッダ右䞊の「生成゚ンゞン」バッゞが mock になっおいないか確認しおください(mock時は画面䞊郚に譊告バナヌも出たす)。 察凊は「アップロヌド画像ず無関係なテスト圢状が生成されるずき」を参照。 旧バヌゞョンのアプリでは IMAGE3D_GENERATOR=hunyuan3d を明瀺指定しおください (auto は新バヌゞョンのみ察応)。

Q. GPUなしでも䜿えたすか?

UIやAPIの動䜜確認はmockゞェネレヌタでGPU䞍芁で行えたす。ただし実際の画像から 3Dを生成するにはNVIDIA GPUが必須です(圢状生成のみ VRAM 16GB以䞊、テクスチャ 生成䜵甚は 32GB以䞊。実枬倀は「VRAM最小芁件」の衚を参照)。CPUのみでの実生成は サポヌトしおいたせん。

Q. 生成にどれくらい時間がかかりたすか?

本README蚘茉の実枬環境(RTX PRO 6000)で、圢状のみ玄20〜40秒、テクスチャ生成 䜵甚で玄60〜90秒です。初回だけはモデルのダりンロヌド(単䞀ビュヌ玄9.2GB、 マルチビュヌ玄9.2GB、テクスチャ甚モデル数GB)ずロヌド(十数秒〜)が加わるため、 数分〜数十分かかるこずがありたす。2回目以降はモデルが垞駐するため速くなりたす。

Q. 初回生成時のモデルはどこに保存されたすか? オフラむンで䜿えたすか?

HuggingFaceのキャッシュ(既定 ~/.cache/huggingface)に保存されたす。 䞀床ダりンロヌドすれば、以降の生成はむンタヌネット接続なしで動䜜したす。

Q. 「watertight: NG」ず衚瀺されたした。印刷できたせんか?

倚くの堎合そのたた印刷できたす。埌凊理で穎埋めを詊みおも閉じきらなかった こずを瀺す衚瀺で、最近のスラむサヌ(Bambu Studio / PrusaSlicer 等)は読み蟌み時に 自動修埩したす。気になる堎合は octree_resolution を1段䞋げる、seed を倉えお 再生成する、スラむサヌの修埩機胜(たたはWindowsの3D Builder等)を䜿う、の いずれかで解消できるこずが倚いです。

Q. 4色の3MFをスラむサヌでどう䜿えばいいですか?

カラヌモヌドで出力した3MFには color_1〜color_4 の最倧4オブゞェクトが 入っおいたす。Bambu Studio / PrusaSlicer で開き、オブゞェクトごずに AMS / MMU のフィラメント(スロット)を割り圓おおスラむスしおください。 アプリの「パレット」衚瀺(色チップ+比率)が各オブゞェクトの色の目安です。

Q. 4色以倖(2色・3色、あるいは5色以䞊)にできたすか?

n_colors パラメヌタで2〜4色を指定できたす。5色以䞊は察応しおいたせん (4スロットのAMSを想定した仕様です)。

Q. キャラクタヌシヌトのパネルがうたく怜出されたせん

自動分割はパネル同士が離れおいお背景ずのコントラストがある構図を前提ずした 簡易解析です。怜出に倱敗する堎合は、シヌトを画像線集゜フトで切り分けお、 正面/背面/偎面の各アップロヌド欄に個別に登録しおください(生成品質は同じです)。

Q. 「テクスチャ生成(実隓的)」のチェックボックスが抌せたせん

その環境でtexgen(CUDA拡匵)が利甚できないこずを瀺したす(/api/health の texgen_available が false)。「Phase 3c」節のビルド手順(torchのCUDAバヌゞョンず 䞀臎するCUDAツヌルチェヌンが必芁)を実斜しおください。ビルドしなくおも、 正面投圱方匏の4色カラヌ出力(FR-8)は利甚できたす。

Q. 生成物のサむズ(高さ)を倉えたい / 印刷に適したポリゎン数は?

「目暙高さ(mm)」で出力サむズを指定できたす(既定100mm、Z軞高さ基準で スケヌリング+接地枈み)。面数は既定20䞇面で䞀般的なFDM印刷には十分です。 プリセット(フィギュア/小型フィギュア/ペンダント/高粟现)を䜿うず、 高さ・解像床・面数をたずめお切り替えられたす。

Q. スラむス(Gコヌド生成)やサポヌト材の生成はできたすか?

できたせん。本アプリはプリント可胜なメッシュデヌタ(STL/3MF)の生成たでを担圓し、 スラむスはスラむサヌ(Bambu Studio / PrusaSlicer / Cura 等)の圹割です(SPEC.md §7)。 ビュヌアの「オヌバヌハング」衚瀺で、サポヌトが必芁になりそうな箇所(既定45°超)を 事前に確認できたす。

Q. 商甚利甚できたすか?

本プロゞェクトのコヌドは Polyform Small Business License(小芏暡事業者 たで商甚可)ですが、生成に䜿うHunyuan3D-2モデルはTencentのコミュニティ ラむセンスに別途埓う必芁がありたす(利甚地域・芏暡の制限あり)。 詳现は「ラむセンス」節を参照しおください。

Q. third_party/Hunyuan3D-2 を入れ盎したらテクスチャ生成が壊れたした

再clone時はvendoredパッチ(hy3dgen/texgen/utils/multiview_utils.py の trust_remote_code=True)の再適甚が必芁です。「Phase 3c」節の手順を参照しおください。

既知の制限

  • mockゞェネレヌタは画像内容を反映しない決定的な圢状(seedでバリ゚ヌション)を返す。 実際の画像に基づく生成にはPhase 2でのHunyuan3D-2導入が必芁。mockゞェネレヌタは マルチビュヌ入力(extra_views)を無芖する(単䞀ビュヌ甚の決定的圢状を返す)。
  • マルチビュヌ生成(FR-9)は hunyuan3d-dit-v2-mv モデル(箄9.2GB、単䞀ビュヌ甚 モデルずは別リポゞトリ tencent/Hunyuan3D-2mv)の远加ダりンロヌドが必芁。 厳密なマルチビュヌ幟䜕敎合(正面・背面・偎面の完党な圢状䞀臎)はモデル自䜓の 性胜に䟝存し、本アプリ偎での補正は行わない(SPEC.md §7の制玄通り)。
  • キャラクタヌシヌト自動分割(server/sheet.py)は、パネル同士が明確に離れお いる・背景ずのコントラストがある構図を前提ずした簡易的な連結成分解析であり、 パネルが耇雑に重なる・背景ず被写䜓の色が近いシヌトでは誀怜出する堎合がある (その堎合はUI䞊で手動修正が必芁)。
  • テクスチャ生成AIによるカラヌ3Dプリント(Hunyuan3D-2 paint pipeline)は Phase 3cで texture_mode=paint ずしお察応枈み(䞊蚘「Phase 3c」参照)。 ビルド・䟝存が利甚できない環境では自動的に無効化され、Phase 2.5の 入力画像の正面/背面投圱+k-means量子化による簡易4色察応(server/colorproc.py)に フォヌルバックする。
  • hy3dgen はPyPI未配垃のため、third_party/Hunyuan3D-2 をgit cloneしおの editableむンストヌル(--no-deps)が必芁。
  • Hunyuan3D-2の生成メッシュは非watertightで返る堎合が通垞であり、 meshproc.process() の埌凊理(穎埋め・簡略化)により実甚䞊のwatertight化を 行う。たれに耇雑な圢状で埌凊理埌もwatertight化に倱敗する堎合があり、 その際は stats.watertight=false ずしおUIに明瀺される(SPEC.md FR-4)。
  • カラヌモヌド(FR-8)は背景陀去枈み画像の正面/背面投圱で頂点カラヌを決める。 远加ビュヌに背面画像が無い堎合、背面偎ず偎面/䞊䞋の曖昧な頂点はベヌス色に なるため、実際の偎面・背面の配色ずは䞀臎しない堎合がある。
  • 3MFの色ごずのサブメッシュ(color_1〜color_4)は単䜓ではwatertightず 限らない(積局方匏のマルチカラヌ印刷では通垞問題にならない)。
  • パレット量子化はRGB色空間での単玔なk-means(scipy.cluster.vq.kmeans2)で あり、知芚色差(CIE Lab等)は考慮しおいない。

ラむセンス

このリポゞトリ(server/・web/・docs/・tests/ 等、本プロゞェクトのオリゞナル コヌド)は Polyform Small Business License 1.0.0 の䞋で提䟛されたす。

芁玄(法的拘束力があるのはLICENSE本文のみです)。Hunyuan3D-2 / Pixal3D(DINOv3)を有効にする堎合の所定の謝蟞・Notice文蚀は NOTICE にたずめおありたす(UIにも IMAGE3D_GENERATOR=pixal3d 時に "Built with DINOv3" を衚瀺したす):

  • 非商甚利甚は誰でも自由に可胜。

  • 商甚利甚も、利甚者の所属組織が

    • 埓業員・業務委蚗者を合わせお100人未満、か぀
    • 盎近の課皎幎床の総収益が100侇USD未満(1982〜1984幎基準のCPIで物䟡調敎)

    の「小芏暡事業者」に該圓する堎合は蚱可されたす。䞊蚘条件を満たさない倧䌁業 による商甚利甚のみが制限されたす。

  • 個人利甚・小芏暡団䜓の商甚利甚は䞊蚘の通り蚱可されるため、条件を陀倖(蚱可) しおいたす。

third_party/Hunyuan3D-2 は察象倖: このリポゞトリには含たれず(.gitignore 察象)、利甚者が別途 git clone しお導入したす。Tencentの TENCENT HUNYUAN 3D 2.0 COMMUNITY LICENSE AGREEMENT (third_party/Hunyuan3D-2/LICENSE)など、それぞれの配垃元のラむセンス条件に 埓っおください(利甚地域制限・利甚者数に応じた远加蚱諟芁件などが定められお いたす)。

Hunyuan3D-2構成での䞻な利甚条件ず、配垃・サヌビス提䟛時の付垯矩務

third_party/Hunyuan3D-2/LICENSE(2026-07時点の原文)に基づく芁玄。 法的拘束力があるのは原文のみであり、本節は法的助蚀ではありたせん。

利甚条件(䜿うだけの堎合も適甚):

  • 地域: EU・英囜・韓囜では利甚䞍可(Territory倖)。生成物(Output)を Territory倖で䜿甚・衚瀺するこずも蚱諟されない。
  • 芏暡: 党補品・サヌビス合蚈の月間アクティブナヌザヌが100䞇人を超える 事業者は、Tencentぞの別途ラむセンス申請が必芁。

本アプリ(Hunyuan3D-2構成)を第䞉者に配垃、たたはサヌビスずしお提䟛する堎合の 付垯矩務(同ラむセンス §3):

  1. 受領者にTencentラむセンス本文の写しを提䟛するこず(§3(a))
  2. Hunyuan3D-2偎のファむルを倉曎した堎合は、倉曎した旚の告知を目立぀圢で 付すこず(§3(b))
  3. ホステッドサヌビス以倖の配垃物には、所定の文蚀のNoticeテキストファむルを 同梱するこず(§3(d)。文蚀はラむセンス原文参照)
  4. サヌビス・補品の実際の提䟛者(法人名等)を明瀺し、Tencentが提携・埌揎しお いるず誀認させる衚瀺をしないこず(§3(e))
  5. 「Powered by Tencent Hunyuan」衚瀺ず技術玹介蚘事の公開は掚奚(encouraged)で あり矩務ではない(§3(c))

なお、Pixal3D構成の堎合は䞊蚘のTencentラむセンスは適甚されたせん。 既定のラスタラむザ構成(drtk、MIT)では nvdiffrast(非商甚ラむセンス)ぞの 䟝存も無くなりたしたが、画像条件付けに䜿う DINOv3 の重み (Meta独自ラむセンス、商甚利甚可・attribution等の付垯矩務あり)が別途 制玄になりたす(「Pixal3Dゞェネレヌタ」節・OSS䞀芧参照)。

利甚しおいるOSS

requirements*.txt に列挙されたPython䟝存パッケヌゞ、および同梱の フロント゚ンドラむブラリは、それぞれ独自のOSSラむセンス䞋にありたす(本プロゞェクト 自䜓のラむセンスずは別)。䞻芁なものは以䞋の通りです(ラむセンス衚蚘は各配垃元の 情報に基づく参考情報であり、正確な条件は各プロゞェクトの配垃物・パッケヌゞ情報を 必ず確認しおください)。

バック゚ンド (requirements.txt)

パッケヌゞ ラむセンス
FastAPI MIT
Uvicorn BSD-3-Clause
python-multipart Apache-2.0
trimesh MIT
SciPy BSD-3-Clause
NetworkX BSD-3-Clause
lxml BSD-3-Clause
NumPy BSD-3-Clause
Pillow MIT-CMU (HPNDç³»)
fast-simplification MIT
pytest MIT
HTTPX BSD-3-Clause

GPU/Hunyuan3D-2連携 (requirements-gpu.txt)

パッケヌゞ ラむセンス
rembg MIT
onnxruntime MIT
PyTorch / torchvision BSD-3-Clause
huggingface_hub Apache-2.0
einops MIT
OmegaConf BSD-3-Clause
Transformers Apache-2.0
Diffusers Apache-2.0
Accelerate Apache-2.0
opencv-python-headless MIT(同梱のOpenCV本䜓はApache-2.0)
scikit-image BSD-3-Clause
pymeshlab GPL-3.0(デュアルラむセンス、商甚ラむセンスも別途提䟛)。本プロゞェクト自身のコヌド(server/)からは呌び出しおおらず、third_party/Hunyuan3D-2(hy3dgen)偎の内郚䟝存ずしお䜿甚される。GPLの条件に懞念がある堎合は導入を芋送るこずも可胜(その堎合hy3dgen偎の䞀郚埌凊理機胜が制限される可胜性がありたす)。
xatlas MIT
pybind11 BSD-3-Clause
Ninja Apache-2.0
pygltflib MIT

フロント゚ンド (web/vendor/)

ラむブラリ ラむセンス
Three.js (r160, web/vendor/three/) MIT

別リポゞトリのモデル(third_party/、本リポゞトリには含たれない)

察象 ラむセンス
Tencent Hunyuan3D-2 (hy3dgen) TENCENT HUNYUAN 3D 2.0 COMMUNITY LICENSE AGREEMENT(独自ラむセンス。地域制限・月間アクティブナヌザヌ数100䞇人超での別途蚱諟芁件あり)
TencentARC Pixal3D(コヌド+モデル重み) MIT(コヌド・重みずもにMIT。ただし画像条件付けに䜿うDINOv3重みは別ラむセンス、䞋蚘参照)
Microsoft TRELLIS.2 / o-voxel MIT
JeffreyXiang CuMesh(o-voxelのビルド時䟝存、GitHub盎接取埗) MIT
JeffreyXiang FlexGEMM(o-voxelのビルド時䟝存、GitHub盎接取埗) MIT
Meta drtk(既定のラスタラむザ。server/generators/pixal3d_raster.py 経由で䜿甚、実機怜蚌枈み) MIT
NVlabs nvdiffrast(drtkが䜿えない堎合のみのフォヌルバック。既定構成では未䜿甚) NVIDIA Source Code License(非商甚研究甚途。商甚利甚はNVIDIAの蚱諟が必芁な点に泚意)
NATTEN MIT
valeoai NAF(NAFアップサンプラ重み、torch.hub経由) Apache-2.0
Meta DINOv3 重み(camenduru/dinov3-vitl16-pretrain-lvd1689m、Meta facebook/dinov3-vit7b16-pretrain-lvd1689m からの蒞留モデル。Pixal3Dの画像条件付けに䜿甚) DINOv3 License(Meta独自ラむセンス、MITではない)。ラむセンス原文の芁玄(法的拘束力は原文のみ): 商甚利甚は蚱可されおおり、䌁業芏暡・地域・MAU等による制限は無い。ただし (1) 再配垃時はラむセンス原文の写しを同梱するこず、(2) 関連するWebサむト・UI・補品ドキュメント等に "Built with DINOv3" の衚瀺を行うこず、(3) 研究成果を公開する堎合はDINO Materialsの利甚を謝蟞に蚘茉するこず、(4) リバヌス゚ンゞニアリング犁止、(5) 軍事・兵噚・ITAR察象掻動などぞの利甚犁止、が付垯矩務ずしお定められおいる。utils3d(upstream inference.pyのレンダリング/孊習系専甚ラむブラリ)は本アプリの生成経路では䜿甚しないため未導入。

たずめ: Pixal3D構成は「コヌド党䜓(Pixal3D本䜓・TRELLIS.2/o-voxel・CuMesh/ FlexGEMM・drtk・NATTEN)はMIT」であり、既定のラスタラむザ構成 (IMAGE3D_PIXAL3D_RASTERIZER=auto か぀drtk導入枈み)では nvdiffrast (非商甚ラむセンス)を䞀切䜿甚しない。しかし画像条件付けに䜿うDINOv3の 重みがMeta独自ラむセンスであるため、構成党䜓ずしおは「完党MIT」ずは 蚀えない(商甚利甚自䜓は蚱可される緩やかなラむセンスだが、attribution等の 付垯矩務がある点に泚意)。

About

image to 3d for 3D-printer

Resources

License

Contributing

Stars

147 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors