Microsoft、40億パラメータを持つ最先端の3D生成モデル「TRELLIS.2」をオープンソースでリリース!

CGソフト

12月17日(現地時間)- Micorsoft は、最先端の大規模3D生成モデル「TRELLIS.2」をGithubで公開しました。

TRELLIS.2 とは

TRELLIS.2は、画像から高品質な3Dアセットを生成するために開発された、40億パラメータ規模の最先端3D生成モデルです。Microsoft Researchを中心に、清華大学(Tsinghua University)や中国科学技術大学(USTC)といった大学の研究者も参加して設計されており、コードやモデルウェイトはオープンソースとして公開されています。

最大の特徴は、独自のスパースボクセル構造「O-Voxel」を採用している点です。これにより、従来の技術では再現が難しかった 複雑なトポロジー(開いた曲面や内部構造) を正確に表現できるだけでなく、物理ベースレンダリング(PBR)マテリアルの高品質な生成も可能になっています。

主な機能と特徴

高品質・高解像度・高効率

40億パラメータ規模のモデルにより、標準的なDiT(Diffusion Transformer)を利用しながら、高解像度のフルテクスチャアセットを効率的に生成することができます。

以下は、NVIDIA H100 GPUを使用した場合の合計生成時間(形状 + マテリアル)となります。

解像度合計時間*内訳 (形状 + マテリアル)
51233秒2秒 + 1秒
1024317秒10秒 + 7秒
1536360秒35秒 + 25秒

* 合計生成時間(形状 + マテリアル)。    ** NVIDIA H100 GPUでテスト済み。

その中核にあるのは、表現の正確さと軽量さを両立しながら広げていく、ネイティブでコンパクトな構造化潜在空間(Structured Latents)です。

多様なトポロジーに対応

この手法は従来の等値面フィールド(iso-surface fields)が抱えていた制約を克服し、開いた曲面や非多様体ジオメトリ、閉じた内部構造といった複雑な形状も安定して扱うことができます。

リッチなテクスチャ表現

この手法では、ベースカラー・ラフネス・メタリック・不透明度(透明度やアルファチャンネル)といった任意の表面属性を扱うことができます。これにより、物理ベースレンダリング(PBR)に対応し、フォトリアリスティックなライティングの再現が可能になります。

最小限のアセット前処理・後処理

学習や推論に必要なデータ処理はシンプルで、レンダリングや最適化処理を一切必要としない即時変換が可能です。

処理プロセス実行環境所要時間
Textured Mesh → O-VoxelシングルCPU< 10秒
O-Voxel → Textured MeshCUDA< 100ミリ秒

既知の制限事項

  • O-Voxelは複雑なトポロジーを高度に処理できますが、生成された生のメッシュには稀に小さな穴や軽微なトポロジーの不連続性が含まれる場合があります。 3Dプリントなど、厳密に水密(watertight)なジオメトリが必要な用途向けに、穴埋めアルゴリズムを含むメッシュ後処理スクリプトを提供しています。
  • TRELLIS.2-4Bは事前学習済みの基盤モデル(Foundation Model)です。 RLHF(人間からのフィードバックによる強化学習)等による人間の好みへのアライメントや、特定の美的基準に向けたファインチューニングは行われていません。 そのため、出力結果は学習データの分布を反映したものであり、スタイルにばらつきが生じる可能性があります。 望ましい結果を得るためには、入力プロンプトや画像の調整が必要になる場合があります。

技術詳細

TRELLIS.2 のパイプラインは、 メッシュを O-Voxel と呼ばれる新しい表現形式へ即座に双方向変換することから始まります。その後、Sparse Compression VAE がこれらのボクセルをコンパクトな構造化潜在空間(Structured Latent space)にエンコードします。

O-Voxel

O-Voxelは、正確な形状と複雑な外観を同時にエンコードするために設計された、新しい「フィールドフリー(場に依存しない)」なスパースボクセル構造です。これにより、複雑なトポロジーやリッチな表面属性を同時に表現できます。

  • Geometry (fshape) :「Dual Grids」という柔軟な表現方法を使うことで、鋭いエッジを保ちながら複雑なトポロジー(開いた曲面や内部構造など)を扱えます。つまり、形状の正確さと複雑さを両立できます。
  • Appearance (fmat):リッチな表面素材を正確にモデル化するために、表面の素材感を正確にモデル化するため、PBR(物理ベースレンダリング)に必要な完全なPBR属性(Base Color, Metallic, Roughness, Alpha)をサポートしています。

SC-VAE

SC-VAE(Sparse Compression VAE)は、ボクセルデータを直接圧縮するために設計された3Dの変分オートエンコーダです。スパース残差オートエンコーディングの仕組みを取り入れることで、データを16倍にダウンサンプリングし、約9,600個の潜在トークンへと変換します。

この圧縮によって、知覚的な劣化はほとんど感じられない水準に抑えられながら、完全にテクスチャ化された3Dアセットを非常にコンパクトな形で表現できます。

その結果、大規模な3D生成モデリングを効率的に進められるようになり、品質と効率の両立を可能にしています。

基盤となる高性能パッケージ

TRELLIS.2の高性能な処理は、以下の専用に開発されたライブラリ群によって支えられています。

テクスチャ付きメッシュとO-Voxel表現の間の双方向変換を処理するコアライブラリ。

Tritonベースの効率的なスパース畳み込み実装。スパースボクセル構造の高速処理を実現。

CUDAアクセラレーションを活用したメッシュユーティリティ。高速なポストプロセス、リメッシュ等に使用。

利用について

動作環境・要件

TRELLIS.2 をローカル環境で実行するためには、以下のハードウェアおよびソフトウェア要件を満たす必要があります。 特にGPUメモリの要求が高いため注意が必要です。

OSLinux (現状テスト済み環境)
GPUNVIDIA GPU (VRAM 24GB以上)
※ NVIDIA A100 および H100 での動作確認済み
CUDAToolkit 12.4 (推奨)
※ 一部パッケージのコンパイルに必要です。
Pythonバージョン 3.8 以上
パッケージ管理Conda (推奨)

インストール方法

1.リポジトリのクローン

再帰的オプション(–recursive)を付けてクローンします。

git clone -b main https://github.com/microsoft/TRELLIS.2.git –recursive
cd TRELLIS.2

2.依存関係のインストール

専用のセットアップスクリプトが用意されています。これにより trellis2 という名前のConda環境が作成されます。 依存関係が多いため、インストールには時間がかかる場合があります。

. ./setup.sh –new-env –basic –flash-attn –nvdiffrast –nvdiffrec –cumesh –o-voxel –flexgemm

注意: 複数のCUDAバージョンがインストールされている場合は、事前に CUDA_HOME を設定してください。
例: export CUDA_HOME=/usr/local/cuda-12.4

利用方法

Pythonでの実行例 (Image to 3D)

以下のコードは、画像を読み込み、3Dモデルを生成し、動画とGLBファイルとして保存する最小限の例です。

import os # 環境設定 os.environ[‘OPENCV_IO_ENABLE_OPENEXR’] = ‘1’ os.environ[“PYTORCH_CUDA_ALLOC_CONF”] = “expandable_segments:True” # メモリ節約 import cv2 import imageio from PIL import Image import torch from trellis2.pipelines import Trellis2ImageTo3DPipeline from trellis2.utils import render_utils from trellis2.renderers import EnvMap import o_voxel # 1. 環境マップのセットアップ envmap = EnvMap(torch.tensor( cv2.cvtColor(cv2.imread(‘assets/hdri/forest.exr’, cv2.IMREAD_UNCHANGED), cv2.COLOR_BGR2RGB), dtype=torch.float32, device=’cuda’ )) # 2. パイプラインのロード (4Bモデル) pipeline = Trellis2ImageTo3DPipeline.from_pretrained(“microsoft/TRELLIS.2-4B”) pipeline.cuda() # 3. 画像の読み込みと実行 image = Image.open(“assets/example_image/T.png”) mesh = pipeline.run(image)[0] mesh.simplify(16777216) # nvdiffrastの制限に対応 # 4. レンダリング動画の保存 video = render_utils.make_pbr_vis_frames(render_utils.render_video(mesh, envmap=envmap)) imageio.mimsave(“sample.mp4”, video, fps=15) # 5. GLBファイルのエクスポート glb = o_voxel.postprocess.to_glb( vertices = mesh.vertices, faces = mesh.faces, attr_volume = mesh.attrs, coords = mesh.coords, attr_layout = mesh.layout, voxel_size = mesh.voxel_size, aabb = [[-0.5, -0.5, -0.5], [0.5, 0.5, 0.5]], decimation_target = 1000000, texture_size = 4096, remesh = True, remesh_band = 1, remesh_project = 0, verbose = True ) glb.export(“sample.glb”, extension_webp=True)

※実行には assets/example_image/T.png などの画像ファイルがパス通りに存在する必要があります。

※ 生成されたGLBファイルは、テクスチャのアルファチャンネルが含まれていますが、デフォルトで不透明(OPAQUE)モードになっています。透明度を有効にするには、3Dソフト側で設定が必要です。

Webデモの起動

ローカル環境でGradioベースのWebインターフェースを起動することも可能です。

python app.py

ロードマップ

  • 論文の公開
  • Image-to-3D 推論コードの公開
  • 学習済みモデル (4Bパラメータ) の公開
  • Hugging Face Spaces デモの公開
  • 形状条件付きテクスチャ生成コードの公開 (2025/12/24予定)
  • 学習コードの公開 (2025/12/31予定)

関連リソース

モデルとコードは MIT License の下で公開されています。

依存パッケージのライセンスに関する注意:

  • nvdiffrast: 生成された3Dアセットのレンダリングに使用されます。 独自のライセンスが適用されます。
  • nvdiffrec: PBRマテリアル用のsplit-sumレンダラーを実装しています。 独自のライセンスが適用されます。

コメント

Translate »
タイトルとURLをコピーしました