> 技术文档 > 生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化

生成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 则为可下载的最新版本
选择合适的版本下载到合适的地址解压缩。
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化

配置colmap环境

找到打开环境变量
在这里插入图片描述
在环境变量中找到系统变量中的变量Path
在这里插入图片描述
点击编辑将colmap的路径新增进去

E:\\colmap\\colmap-x64-windows-cuda

不要忘了点击 确定 保存所有设置。

使用colmap

将数据集图片放在input文件夹中,如下图。
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化

双击 COLMAP.bat 后,如果成功启动,会弹出 COLMAP 的 GUI 界面。
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
之后开始创建项目,点击FileNew project按键。之后点击Database的new键,在dataset文件夹中创建data.db,并将Images选择为刚刚的input文件夹
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
之后点击save即可,现在开始三维重建,点击Processing中的Feature extraction键,开始查找图像中的特征。
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
点击Extract即可,之后将它叉掉,然后点击Processing中的Feature Matching键,之后点击run进行特征匹配。
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
等他完成匹配后,再点击Reconstruction中的Start Reconstruction即可开始稀疏重建。(但是有时候不一定可以重建出所有的视角,colmap默认会重新选一个视角重新开始,往往也不能成功,所以我们可以手动暂停即让colmap就重建这么多Reconstruction->Pause reconstruction,再多就容易出错了)之后点击Reconstruction中的Dense Reconstruction,点击select键,选择之前图像数据的input文件夹
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
之后点击右边的图像校正键undistortion。
为了实现3dgs重建我们需要调整数据集的格式,找到生成的sparse、stereo及images文件夹将这三个文件与input文件夹在同一文件夹中,然后在sparse文件夹中新建一个文件夹0,将生成的三个文件全部放到文件夹0中。
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化

高斯重建

在这里选择设置我们搭建好环境(我的环境使用anaconda来搭建管理的,建议用anaconda搭建管理环境)。
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化

按照项目中提示逐步执行,更换正确的文件的路径即可运行生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化

高斯场景

重建结束后我们可以找到生成的.ply文件,point_cloud这个文件夹中分别存有我们训练7000次和30000次生成的文件,point_cloud->iteration_30000->point_cloud.ply即为我们最终需要的.ply文件
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
我们了解3dgs场景实际上是一个个高斯椭球形成的,所以当我们不改变透明度让所有高斯球显示时是这样的。
生成3DGS场景在unity中的呈现_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后
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
在projects文件夹中,有三个版本(貌似URP版本需要unity6),其他两个打开方式都相同
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化

用2022.3的编辑器版本打开项目->Tools->Gaussian Splats->Create GaussianSplatAsset
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
在Input PLY/SPZ File中导入我们训练好的.ply文件生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化点击Create Asset,在右边的Assets中会生成相关文件
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
然后我们选择GaussianSplats,将生成的该文件拖入相应位置
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
如此我们便可以在unity中呈现我们生成的3dgs场景了
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
在这个场景中我们也可以做一些简单的交互比如添加一些对象,或以高斯球为单位做移动删除等。目前我也在学习阶段,只发现了这些,似乎unity6版本可以做更多编辑。
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化
点击右边的Edit即可对高斯球进行选中,这里如图我把它的浴巾给删掉了。
生成3DGS场景在unity中的呈现_3dgs重建场景怎么可视化

总结

以上内容只是我在探索 Unity 中呈现 3DGS 场景过程中的一些初步理解与实践分享,难免有疏漏和不够深入之处。如果你有更好的经验、想法或技巧,欢迎不吝指教,也希望能在不断摸索中和大家一起进步。