站点图标 高效码农

一句话生成3D世界!Matrix-3D开源工具让虚拟场景创作零门槛

Matrix-3D:用一张图或一句话生成可自由探索的 3D 世界

“如果我能把脑海里的画面直接变成可以走进去的 3D 场景,该多好。”
Matrix-3D 让这件事成为可能。

本文用尽量通俗的语言,带你完整了解 Matrix-3D 是什么、能做什么、怎么做,以及你在本地就能复现的每一步操作。所有内容均来自官方技术报告与开源仓库,不添加任何外部信息。


一、它到底解决了什么问题?

常见痛点 Matrix-3D 的解法
传统 3D 场景生成只能看到“相机前方一小块”,转身就穿帮 直接生成 360°×180° 全景视频,再还原成 3D,任何角度都看不到裂缝
需要专业美术逐屋建模,费时费钱 输入一张图或一句文字即可生成
生成速度和质量只能二选一 提供两条管线:快速(前馈)和精细(优化),按需求选用
公开数据集缺少相机轨迹和深度,难以训练 官方发布了 Matrix-Pano 数据集,11 万余条合成全景视频,带轨迹、带深度、带文字

二、整体思路:三步把 2D 变成可漫游的 3D

  1. 全景图阶段
    用扩散模型把输入(文本或单张图)扩展成 360° 全景图,并预测深度。
  2. 全景视频阶段
    根据一条相机轨迹,把全景图“动”起来,生成连续帧。
  3. 3D 还原阶段
    把全景视频“立”起来,变成 3D 高斯点云(3DGS),可在任意视角实时渲染。
graph TD
    A[输入:一句话 / 一张图] --> B[生成全景图 + 深度] --> C[按轨迹生成全景视频] --> D[重建 3D 高斯场景] --> E[自由探索]

三、核心组件拆解

3.1 全景视频扩散模型:让相机按既定路线“飞”

  • 条件信号
    过去方法常用“点云渲染”做轨迹提示,容易出现摩尔纹、前后景错位。
    Matrix-3D 改用「场景网格渲染 + 可见性掩码」,几何一致、画质干净。

  • 网络结构
    在 Wan2.1 14B 基础上加 LoRA,只训 6k 步就收敛。训练数据 20 万条 81 帧 480p/720p 全景视频。

  • 可控轨迹
    支持三种预设运动:直线、S 形、右前向,也可上传自定义 JSON(OpenCV 格式外参矩阵)。

3.2 3D 还原:两条路线随你挑

管线 速度 质量 适用场景
快速前馈 单卡 10 秒 22.3 PSNR 需要批量生成、实时预览
优化还原 ~9 分钟 27.6 PSNR 需要高保真、后期可用
  • 优化管线:
    把全景帧裁成 12 张透视图 → 3DGS 初始化 → 联合优化颜色和几何。
  • 前馈管线:
    用 Transformer 直接从视频隐变量预测 3D 高斯属性,分两阶段训练:先学深度,再学其余。

四、Matrix-Pano 数据集:公开可用的“训练燃料”

指标 数值
视频条数 116,759
分辨率 1024×2048
每段长度 ≥18 m 轨迹
附带信息 深度、相机姿态、文字描述
场景类型 室内 / 室外 / 不同天气 / 不同光照

数据集完全在 Unreal Engine 5 里离线渲染,解决了真实数据隐私和标注难的问题。


五、动手实践:30 分钟跑通本地 Demo

以下步骤已在 Ubuntu 20.04 + CUDA 12.4 + Python 3.10 验证通过。

5.1 环境安装

# 1. 克隆仓库(含子模块)
git clone --recursive https://github.com/SkyworkAI/Matrix-3D.git
cd Matrix-3D

# 2. 创建环境
conda create -n matrix3d python=3.10
conda activate matrix3d

# 3. 安装 PyTorch
pip3 install torch==2.7.1 torchvision==0.22.1

# 4. 一键装依赖
chmod +x install.sh
./install.sh

5.2 下载预训练权重

python code/download_checkpoints.py

文件会被放到 ./checkpoints/ 下,包括文本-到-全景 LoRA、480p/720p 视频扩散模型、LRM 前馈重建模型等。

5.3 一指令生成完整 3D 场景

./generate.sh

脚本会自动完成:
文本 → 全景图 → 全景视频 → 3D 高斯场景。
输出目录 ./output/demo/ 中可直接打开 .plySuperSplat 或自家 3D 查看器浏览。

5.4 分步玩法(适合二次开发)

Step 1 文本 → 全景图

python code/panoramic_image_generation.py \
  --mode=t2p \
  --prompt="a medieval village, half-timbered houses, cobblestone streets" \
  --output_path="./output/step1"

Step 2 全景图 → 全景视频

VISIBLE_GPU_NUM=1
torchrun --nproc_per_node=$VISIBLE_GPU_NUM \
  code/panoramic_image_to_video.py \
  --inout_dir="./output/step1" \
  --resolution=720

Step 3-1 全景视频 → 3D(高质量优化)

python code/panoramic_video_to_3DScene.py \
  --inout_dir="./output/step1" \
  --resolution=720

Step 3-2 全景视频 → 3D(极速前馈)

python code/panoramic_video_480p_to_3DScene_lrm.py \
  --video_path="./output/step1/pano_video.mp4" \
  --pose_path="./output/step1/camera.json" \
  --out_path="./output/step2"

六、常见问题(FAQ)

Q1:我只有 8G 显存,跑得动吗?
A:480p 模型单卡 8G 可以跑;720p 建议至少 16G。前馈重建 2G 显存即可。

Q2:为什么生成视频要 1 小时?
A:扩散模型 50 步去噪 × 81 帧 × 14B 参数量,计算量确实大。可用多卡并行(VISIBLE_GPU_NUM=4 约提速 3 倍)。

Q3:我想用自己的相机轨迹?
A:把 4×4 外参矩阵写成 JSON,参考 ./data/test_cameras/test_cam_front.json。字段名:world_to_cam_44

Q4:生成的 3D 场景能进 Blender 吗?
A:输出的 .ply 是高斯点云,可用开源插件 Blender-Gaussian-Splatting 直接导入。


七、局限 & 未来方向

当前局限 官方未来计划
生成速度仍很慢 研究蒸馏或量化加速
半透明物体深度跳变 改进深度估计网络
只能看到“已走过”的区域 引入“未见区域补全”模块
用户无法交互修改场景 加入语义编辑指令,如“把屋顶换成红色”

八、一句话总结

Matrix-3D 把「一句话 → 全景图 → 全景视频 → 可自由探索的 3D 世界」做成了一条端到端、可复制、可落地的流水线,并把所有模型、数据、脚本都开源。
对于研究者,它是可扩展的 3D 世界生成基准;对于开发者,它是可嵌入产品的 3D 资产工厂;对于爱好者,它是把想象力变成可走进场景的魔法棒。

动手试试吧,你的下一段虚拟旅程,也许就从一张随手拍的照片开始。

退出移动版