生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
目录
- 引言
- 3D Gaussian Splatting
-
- 自主采集高质量三维重建数据集
-
- 相机参数推荐
- 拍摄技巧建议
- 使用 COLMAP 生成三维点云,构建 3DGS 场景的基础骨架
-
- 下载colmap
- 配置colmap环境
- 使用colmap
- 高斯重建
- 高斯场景
- unity
-
- UnityGaussianSplatting
- 导入unity
- 总结
引言
在现代游戏与可视化开发中,Unity 以其强大的跨平台能力和灵活的工作流程,成为了众多开发者的首选。而 3DGS(3D Game Scene)作为一种结构化的三维场景描述格式,近年来也在多个领域中获得了广泛关注。将 3DGS 场景引入 Unity,不仅可以实现更高效的数据整合和可视化表达,也为多源场景内容的交互提供了新的可能。本文将简要介绍如何在 Unity 环境中解析和呈现 3DGS 场景,助你打通从标准化场景数据到实时三维展示的关键一步。
3D Gaussian Splatting
3D Gaussian Splatting 是一种新兴的三维场景表示方法,它使用具有位置、大小(协方差矩阵)、颜色、透明度及视角依赖属性(例如球谐函数系数)的高斯“斑点”对现实场景进行建模,并通过点云加光栅化方式实现高质量实时渲染。它通常从 SfM(Structure-from-Motion)生成的稀疏点云初始化,并通过逐步密集化(densification)与裁剪(pruning)策略优化斑点分布与属性,以兼顾视觉效果与场景复杂度。通过统一的描述规范,3DGS 能够高效整合来自多源的空间数据,使得场景构建与再现更加灵活可靠,广泛应用于游戏开发、虚拟现实、数字孪生等地方。
项目地址:https://github.com/graphdeco-inria/gaussian-splatting
本篇不谈及环境配置,大家可根据项目中的要求逐步实现。
自主采集高质量三维重建数据集
重建质量的上限不仅取决于算法本身,还深受数据质量的影响。尤其是在没有现成数据集的实际应用中,如何自行拍摄高质量图片与视频,成为实现精细重建的关键步骤。
相机参数推荐
1.定焦镜头或锁定变焦:使用定焦镜头可减少畸变,若使用变焦镜头,务必固定焦距,避免 SfM 匹配失败 。
2.大光圈提升景深:建议设置f/8–f/16 以获得足够景深,避免远近区域模糊 。
3.手动曝光 + 白平衡锁定:统一快门、光圈、ISO(推荐 ISO100–400),并锁定白平衡,将所有图像保持在一致色彩与亮度档次 。
4.关闭图像稳定及锐化功能:稳定和锐化功能可能在视觉上有用,但会干扰像素级匹配,建议关闭
拍摄技巧建议
1.高重叠 & 多圈路径:确保照片间 60–80% 重叠,围绕目标走环形路线,分别从不同高度与角度环绕拍摄 2–4 圈,覆盖顶部与底部,或模拟数字“8”,中间交叉点对准目标中心。一般半径保持在1.5到3米之间。行走速度缓慢匀速,建议控制在 0.3~0.5m/s。
2.三脚架 + 快速快门:若光线不足建议配合三脚架使用快门 ≥1/60s;使用三脚架还能大幅降低抖动。
3.均匀光照条件:首选阴天、柔光条件或多方向补光,避免强阴影和高反差;室内可用柔光灯或白色漫反射板提升亮度 。
4.丰富纹理 & 避免反光表面:优先拍摄有纹理的主体,避免纯色、镜面或透明物体;必要时贴增纹理贴或使用磨砂喷雾提升重建稳定性 。
5.避免动态物体干扰。
使用 COLMAP 生成三维点云,构建 3DGS 场景的基础骨架
COLMAP 是一款高度集成的开源三维重建工具,具备从多视角图像中自动完成几何重建的能力,涵盖特征提取、相机姿态恢复、稀疏点云构建以及稠密点云生成等关键流程。无论用于科研探索还是工程实践,它都是三维重建领域中广受认可的重要工具。
下载colmap
colmap下载地址:https://demuc.de/colmap/#download
Download Pre-Release Binarise 为可以选择所有可下载的版本
Dwnload Release Binaries 则为可下载的最新版本
选择合适的版本下载到合适的地址解压缩。
配置colmap环境
找到打开环境变量
在环境变量中找到系统变量中的变量Path
点击编辑将colmap的路径新增进去
E:\\colmap\\colmap-x64-windows-cuda
不要忘了点击 确定 保存所有设置。
使用colmap
将数据集图片放在input文件夹中,如下图。
双击 COLMAP.bat 后,如果成功启动,会弹出 COLMAP 的 GUI 界面。
之后开始创建项目,点击File
的New project
按键。之后点击Database的new键,在dataset文件夹中创建data.db,并将Images选择为刚刚的input文件夹
之后点击save即可,现在开始三维重建,点击Processing中的Feature extraction键,开始查找图像中的特征。
点击Extract即可,之后将它叉掉,然后点击Processing中的Feature Matching键,之后点击run进行特征匹配。
等他完成匹配后,再点击Reconstruction中的Start Reconstruction即可开始稀疏重建。(但是有时候不一定可以重建出所有的视角,colmap默认会重新选一个视角重新开始,往往也不能成功,所以我们可以手动暂停即让colmap就重建这么多Reconstruction->Pause reconstruction,再多就容易出错了)之后点击Reconstruction中的Dense Reconstruction,点击select键,选择之前图像数据的input文件夹
之后点击右边的图像校正键undistortion。
为了实现3dgs重建我们需要调整数据集的格式,找到生成的sparse、stereo及images文件夹将这三个文件与input文件夹在同一文件夹中,然后在sparse文件夹中新建一个文件夹0,将生成的三个文件全部放到文件夹0中。
高斯重建
在这里选择设置我们搭建好环境(我的环境使用anaconda来搭建管理的,建议用anaconda搭建管理环境)。
按照项目中提示逐步执行,更换正确的文件的路径即可运行
高斯场景
重建结束后我们可以找到生成的.ply文件,point_cloud这个文件夹中分别存有我们训练7000次和30000次生成的文件,point_cloud->iteration_30000->point_cloud.ply即为我们最终需要的.ply文件
我们了解3dgs场景实际上是一个个高斯椭球形成的,所以当我们不改变透明度让所有高斯球显示时是这样的。
unity
Unity 是一款功能强大的跨平台游戏与实时渲染引擎,广泛应用于游戏开发、建筑可视化、AR/VR、影视动画等多个领域。其所见即所得的编辑器、强大的物理引擎、灵活的脚本系统(基于 C#)以及丰富的插件生态,使开发者能够快速构建、测试并发布高质量的三维内容。更重要的是,Unity 支持高度定制的数据导入流程,我们可以借助UnityGaussianSplatting将3DGS场景数据解析并还原到 Unity 中
UnityGaussianSplatting
UnityGaussianSplatting 是一个在 Unity 引擎中实现 Gaussian Splatting 可视化的开源项目。Gaussian Splatting 是一种用于实时辐射场渲染的技术,能够在三维场景中高效地渲染大量高斯点云数据。该项目基于 SIGGRAPH 2023 上的一篇论文 “3D Gaussian Splatting for Real-Time Radiance Field Rendering”,旨在提供一个在 Unity 中实时可视化 Gaussian Splatting 模型的工具。
项目链接:https://github.com/aras-p/UnityGaussianSplatting
导入unity
在我们下载解压UnityGaussianSplatting后
在projects文件夹中,有三个版本(貌似URP版本需要unity6),其他两个打开方式都相同
用2022.3的编辑器版本打开项目->Tools->Gaussian Splats->Create GaussianSplatAsset
在Input PLY/SPZ File中导入我们训练好的.ply文件点击Create Asset,在右边的Assets中会生成相关文件
然后我们选择GaussianSplats,将生成的该文件拖入相应位置
如此我们便可以在unity中呈现我们生成的3dgs场景了
在这个场景中我们也可以做一些简单的交互比如添加一些对象,或以高斯球为单位做移动删除等。目前我也在学习阶段,只发现了这些,似乎unity6版本可以做更多编辑。
点击右边的Edit即可对高斯球进行选中,这里如图我把它的浴巾给删掉了。
总结
以上内容只是我在探索 Unity 中呈现 3DGS 场景过程中的一些初步理解与实践分享,难免有疏漏和不够深入之处。如果你有更好的经验、想法或技巧,欢迎不吝指教,也希望能在不断摸索中和大家一起进步。