如何把一段视频变成三维模型(高斯场景)
用手机拍一段短视频,在自己的电脑上生成可以环绕浏览的三维场景:怎么拍、处理过程中发生了什么、能得到什么效果。
一段短视频就够了
把视频变成三维模型,不一定需要三维扫描仪或转台。用普通手机绕着一个静止的主体,稳稳地拍 15 到 60 秒,视频里就包含了几百个略有差别的视角。软件可以算出每一帧拍摄时相机在哪里,再重建出一个可以旋转、缩放和导出的三维场景。
得到的不是用于 3D 打印的网格模型,而是高斯场景(Gaussian splat):由大量柔和的彩色小椭球组成,从你拍到的每个角度看都接近真实。它适合展示物体、房间和户外场景的真实外观,不适合测量或 CAD。
我们首页的几个示例,都是各用一段 13 到 20 秒的手机视频生成的。
拍摄要点
视频转三维模型的效果,最关键的是怎么拍。拍得好,比后期调任何参数都有用。
- 选择不会动的主体:桌上的物件、盆栽、雕塑、房间一角。
- 绕着主体慢慢走一圈。不要站在原地转动手机,软件需要你的位置发生变化。
- 让主体一直在画面里,距离大致保持一致。相邻画面有足够重叠,相机位置才能对得上。
- 移动要慢,避免拖影;尽量用均匀的自然光或柔和的室内光。
- 条件允许的话,再从高一点或低一点的角度绕一圈,把顶部和侧面拍全。
- 避开镜子、玻璃、强反光表面、穿过画面的行人和大面积白墙,它们会干扰相机匹配。
处理过程分三步
视频变成三维模型分三个阶段,SplatLoom 全部在你自己的电脑上完成。
第一步,抽取画面。SplatLoom 不会用上每一帧,而是每秒最多取 6 帧,既有足够重叠,又不会塞进大量几乎相同的画面。模糊和重复的画面会被标记出来。
第二步,用开源的 COLMAP 引擎做运动恢复结构(SfM),算出每一帧的相机位置,得到稀疏点云和手机移动的轨迹。如果能连起来的画面太少,SplatLoom 会提前停止,提示你补拍有重叠的角度,而不是花时间算出一个很差的结果。
第三步,用开源的 Brush 引擎在显卡上训练高斯场景。从稀疏点出发,它反复从每个相机位置渲染场景,与真实画面比较,并调整大量小高斯,直到各个角度都对得上。我们实测时只用隔一帧的画面训练,在保持效果的同时节省时间。
需要多长时间?
处理时间取决于视频长度、分辨率和电脑性能。我们在 Apple M5 Pro MacBook 上实测,13 到 20 秒的手机视频从导入到生成完成大约需要 9 到 14 分钟,大部分时间花在训练上。
更长的视频或更多照片会需要更久。因为全部在本地运行,不用上传,也不用排队,处理时你可以继续做别的事。以上是单台电脑上的测量结果,不代表所有设备。
检查和清理
处理完成后,场景会从你拍摄时的角度打开。转一圈看看边缘:没拍到的地方会是空的或比较模糊,天空和远处背景也可能偏软,这是所有视频三维模型的正常现象。
需要整理时,可以用盒形或球形裁切只保留主体,用矩形框选删掉多余的区域,或一键去除细小毛刺。每一步都可以撤销,原始结果始终保留。
导出三维模型
SplatLoom 支持四种导出格式,方便用在不同地方:
- PLY:标准高斯场景文件,可在其他高斯工具和查看器中打开。
- MP4:12 秒 1080p 环绕视频,可以直接发布。
- PNG:你选定角度的一张静态图片。
- HTML:自带交互查看器的独立网页,离线也能打开。
任何 PLY 文件也可以用我们的免费在线查看器打开,全程只在你的浏览器里运行。
常见问题和解决方法
如果相机位置算不出来,通常是视频重叠不足或拖影太多。放慢速度重拍,绕着主体走,而不是原地转动。
如果某些区域看起来糊成一片,多半是那个地方拍到的角度太少。换个高度再补拍一圈。
如果空中有漂浮的团块或毛刺,先把场景裁切到主体范围,大部分就会消失,也不会影响细节。
如果反光或透明的部分不对,这是目前技术本身的限制。哑光物体的效果会好得多。
用 SplatLoom 把视频变成三维模型
SplatLoom 是一款 Mac(Apple Silicon,macOS 15 及以上)和 Windows 10/11 桌面软件,可以在你自己的电脑上把一段视频或一组照片变成高斯场景。选择视频,点击生成,然后查看、整理和导出。不需要账号,不上传素材,也没有订阅:一次买断 19.90 美元,同时包含 Mac 和 Windows 版本。
常见问题
任何视频都能变成三维模型吗?
需要围绕静止主体拍摄、画面之间有足够重叠的视频。在原地拍的、主体在动的、抖动或模糊严重的视频通常会失败。
视频拍多长合适?
单个物体的话,慢慢绕着走 15 到 60 秒是个好的起点。大房间或户外场景适合拍得更长,并多绕几圈。
生成的结果能直接 3D 打印吗?
不能。生成的是高斯场景,从多个角度看都很真实,但不是封闭的网格模型。3D 打印或 CAD 请使用输出网格的摄影测量软件。
我的视频会被上传吗?
使用 SplatLoom 不会。抽帧、相机定位和训练都在你自己的电脑上完成。
参考资料:https://doi.org/10.5281/zenodo.10848124 · https://colmap.github.io/ · https://github.com/ArthurBrussee/brush
在 SplatLoom 中试试