生成3DGS场景在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 界面。

之后开始创建项目,点击FileNew 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 场景过程中的一些初步理解与实践分享,难免有疏漏和不够深入之处。如果你有更好的经验、想法或技巧,欢迎不吝指教,也希望能在不断摸索中和大家一起进步。

相关推荐
mxwin7 分钟前
Unity 单通道立体渲染(Single Pass Instanced)对 Shader 顶点布局的特殊要求
unity·游戏引擎·shader
tctasia1 小时前
TCT Awards 2026 获奖名单发布:年度增材制造创新全景一览
3d·制造
m0_743106462 小时前
【浙大&南洋理工最新综述】Feed-Forward 3D Scene Modeling(一)
论文阅读·人工智能·计算机视觉·3d·几何学
魔士于安2 小时前
unity 低多边形 无人小村 木质建筑 晾衣架 盆子手推车,桌子椅子,罐子,水井
游戏·unity·游戏引擎·贴图·模型
RReality2 小时前
【Unity Shader URP】简易卡通着色(Simple Toon)实战教程
ui·unity·游戏引擎·图形渲染·材质
魔士于安3 小时前
unity 骷髅人 连招 武器 刀光 扭曲空气
游戏·unity·游戏引擎·贴图·模型
沙振宇3 小时前
【Web】使用Vue3+PlayCanvas开发3D游戏(十一)渲染3D高斯泼溅效果
前端·游戏·3d
洛阳吕工5 小时前
从 micro-ROS 到 px4_ros2:ROS2 无人机集成开发实战指南
游戏引擎·无人机·cocos2d
boss-dog5 小时前
3D视觉机器人中手眼标定的精度提升方法记录——ICP算法
算法·3d·机器人·手眼标定·icp
三毛的二哥5 小时前
障碍物遮挡判断算法
人工智能·算法·计算机视觉·3d