Matrix-3D:用一张图或一句话生成可自由探索的 3D 世界
“
“如果我能把脑海里的画面直接变成可以走进去的 3D 场景,该多好。”
Matrix-3D 让这件事成为可能。
本文用尽量通俗的语言,带你完整了解 Matrix-3D 是什么、能做什么、怎么做,以及你在本地就能复现的每一步操作。所有内容均来自官方技术报告与开源仓库,不添加任何外部信息。
一、它到底解决了什么问题?
常见痛点 | Matrix-3D 的解法 |
---|---|
传统 3D 场景生成只能看到“相机前方一小块”,转身就穿帮 | 直接生成 360°×180° 全景视频,再还原成 3D,任何角度都看不到裂缝 |
需要专业美术逐屋建模,费时费钱 | 输入一张图或一句文字即可生成 |
生成速度和质量只能二选一 | 提供两条管线:快速(前馈)和精细(优化),按需求选用 |
公开数据集缺少相机轨迹和深度,难以训练 | 官方发布了 Matrix-Pano 数据集,11 万余条合成全景视频,带轨迹、带深度、带文字 |
二、整体思路:三步把 2D 变成可漫游的 3D
-
全景图阶段
用扩散模型把输入(文本或单张图)扩展成 360° 全景图,并预测深度。 -
全景视频阶段
根据一条相机轨迹,把全景图“动”起来,生成连续帧。 -
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/
中可直接打开 .ply
在 SuperSplat 或自家 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 资产工厂;对于爱好者,它是把想象力变成可走进场景的魔法棒。
动手试试吧,你的下一段虚拟旅程,也许就从一张随手拍的照片开始。