3D高斯泼溅的崛起
沉浸式媒体领域正在以前所未有的速度发展,其中 3D 高斯溅射成为一项关键突破。 这项技术在广泛的应用中看起来非常有前景,并且可能会彻底改变我们未来创建数字环境以及与数字环境交互的方式。
在本文中,我们将通过与摄影测量和 NeRF 等前辈进行比较,探索 3D 高斯溅射的深度和潜力,并探索当今市场上可用的一些工具。
1、什么是 3D 高斯泼溅?
3D 高斯分布是计算机图形学中的一项复杂技术,它通过将点或“splats”从点云投影到 3D 空间,并为每个 splat 使用高斯函数来创建高保真、逼真的 3D 场景。 该技术支持复杂的依赖于视图的视觉效果,并通过产生动态且逼真的可视化效果超越了传统的点云渲染。
今年在 SIGGRAPH 2023 上发表了一篇最受欢迎的研究论文,详细解释了用于实时辐射场渲染的 3D 高斯分布的技术细节,引发了人们对这一主题的新兴。
2、了解基础知识:适合所有人的指南
为了更好地了解 3D 高斯喷射与可视化点云的传统方法的比较,让我们进行实验。 将自己视为一名艺术家,但你不是在普通画布上绘画,而是在你周围的空间中进行创作。 你为场景中的每个对象绘制彩色点,生成点的集合,我们将其称为“点云”:
乔治·皮埃尔·修拉 (Georges Pierre Seurat) 的点画派绘画《大贾特的塞纳河》
当我们在传统观看器上可视化普通点云时,场景是由微小的点组成的,形成一幅图片,类似于艺术中的点画法。 点画派艺术家使用小的、独立的点来创作图像。 虽然这些图片从远处看起来不错,但近距离观察时,它们只是单独的点。 大多数传统点云可视化技术也会出现同样的问题。
克劳德·莫奈的印象派绘画《撑阳伞的女人——莫奈夫人和她的儿子》
现在,想象一下像印象派艺术家一样绘画。 他们不只是使用点,他们在画布上混合颜色,使画面更平滑、更真实。 这就是 3D 高斯泼溅背后的想法:它不只使用点,而是使用柔和地混合在一起的“泼溅”。 每个splat就像一个温柔的点,有自己的颜色并且可以是透明的。
摘自 Tilt Brush:从新角度绘画
为了更好地理解这一点,请考虑一下雾。 使用传统的点云可视化方法,就像看到每个微小的雾滴一样。 相反,使用高斯溅射就像观察雾的平滑、整体效果 - 每个部分都融入到下一个部分中。
为此,3D 高斯分布使用一种称为高斯的数学函数,这使得空间中的“连续可视化”成为可能。 由于这个公式,场景看起来更加真实,赋予其深度和自然的外观,而不是看起来离散和像素化。
3、高斯函数是什么样的?
高斯函数是 3D 高斯分布的基础,类似于钟形曲线,对于将单个点转换为生动、连续的场景至关重要。
3D 高斯图使用它来表示以下信息:
- 位置 (XYZ):确定每个点在 3D 空间中的位置。
- 协方差(3x3 矩阵):规定每个点如何拉伸或缩放,从而影响其形状和大小。
- 颜色 (RGB):决定每个点的色调,增加视觉丰富度。
- Alpha(α):控制透明度,使场景更加逼真。
4、3D 高斯溅射与摄影测量与 NeRF
将 3D 高斯溅射与摄影测量和 NeRF(将真实地点或物体数字化为数字孪生的其他成熟技术)进行比较时,了解它们的差异非常重要。
他们的工作流程都有一个共同的起点:从不同角度拍摄物体或环境的多张重叠照片。 然后通过每种技术对它们进行不同的处理,以生成捕获环境的数字版本。
4.1 摄影测量
这些图像用于根据每张图片上检测到的相机位置构建 3D 网格。
优点:摄影测量以其相对较低的计算占用量和 3D 网格的直接输出而闻名。 该网格很容易在传统游戏引擎渲染管道中使用。 此外,这些网格可以为动画蒙皮,使其成为游戏开发和动画模拟应用的理想选择。
缺点:该技术在处理闪亮或透明表面时存在局限性,可能会导致生成的 3D 模型出现孔洞和形状错误。
使用案例:摄影测量适用于资源效率至关重要且最终产品需要以 3D 网格模型的形式与标准游戏引擎或动画工具无缝集成的情况。
以下是我使用摄影测量和现实捕捉根据照片重建的 3D 模型
示例:
4.2 神经辐射场 (NeRF)
使用人工智能和神经网络处理图像,生成场景的任何视角,通过混合现有信息来填充任何间隙或丢失的照片。
优点:NeRF 的优势在于其人工智能驱动的能力,可以生成场景的任何视角,通过混合现有图像来填充间隙或丢失的照片。 这使得它对于摄影测量可能遇到困难的复杂场景特别有效。 此外,由于 NeRF 具有学习智能,因此不需要像摄影测量那样多的各个角度的图像。
缺点:虽然 NeRF 擅长处理摄影测量的缺点,但与摄影测量和 3D 高斯溅射相比,它的计算要求更高且渲染速度更慢。
使用案例:它非常适合在视点生成方面需要高度灵活性的应用程序以及处理不完整数据具有挑战性的场景。
以下是我使用 Nerfstudio 制作的 NeRF 捕获的示例视频:
4.3 3D 高斯泼溅
使用光栅化技术,允许从小图像样本实时渲染照片级真实感场景。 首先使用“运动结构”方法根据初始图像集估计点云。 然后将每个点转换为高斯分布,由位置、协方差、颜色和透明度等参数描述。
优点:与 NeRF(截至目前)相比,该技术以其快速、实时光栅化以及创建高质量、逼真场景的能力而闻名。 该技术还特别擅长令人信服地渲染头发等薄表面,提供高质量的实时可视化效果。
缺点:高斯泼溅(截至目前)以其高 VRAM 使用率而闻名,并且尚未与现有渲染管道完全兼容。
使用案例:高斯泼溅在实时渲染和复杂细节(如头发或薄结构)可视化至关重要的场景中非常有用,例如在虚拟现实应用程序或高端可视化中。
值得注意的是,由于所有三种技术在工作流程开始时都使用输入照片的数据集,因此在使用相同的图像数据集时交换它们相对容易,以根据所需的用例生成不同的可视化效果。
以下视频比较了所有三种技术,从相同的输入图像数据集开始:
这是一个重点介绍 NeRF 和高斯 Splatting 捕获之间差异的视频:
5、实际应用和行业影响
3D 高斯分布不仅仅是一个理论奇迹,它的实际应用也非常广泛。 其中包括:
- 房地产:增强虚拟房地产之旅,为潜在买家提供真实的体验。 这可以彻底改变远程展示和探索房产的方式。
- 城市规划:协助创建城市的数字孪生,帮助更好的规划和管理。 通过提供高保真、实时的城市空间渲染,它为更有效的城市发展战略做出了重大贡献。
- 虚拟现实 (VR) 和增强现实 (AR):高斯泼溅在创建高度逼真的 VR 背景(为各种应用程序创建作为背景设置的虚拟环境或场景)方面特别有效,可将虚拟环境的沉浸感提升到新的水平。
- 电子商务和平面设计:它可以通过实现高质量、实时的产品 3D 渲染来彻底改变在线购物体验,从而带来更具互动性和身临其境的购物体验。 在图形设计中,它可以帮助创建更逼真的 3D 模型和动画,从而提高设计过程的质量和速度。
- 远程呈现中的真实感虚拟人物:Meta 对编解码器虚拟人物的高斯泼溅实验展示了其在 VR 环境中实现真实感远程呈现的潜力。 该应用程序增强了虚拟人物的真实感和照明效果,这是沉浸式虚拟通信的关键要素
- 相机跟踪和 3D 重建:SplaTAM 是密集 RGB-D SLAM 中的高级应用程序,它使用高斯 Splatting 在现实场景中进行精确的相机跟踪和高保真重建,展示了其在复杂空间映射和 3D 重建中的实用性。
- 游戏:通过更加身临其境和真实的环境提升游戏体验。 Gaussian Splatting 插件已可用于 Unity 和 Unreal Engine 等主要游戏引擎,从而增强游戏世界的视觉质量
它处理大型数据集的能力及其多功能性吸引了各个领域的目光,标志着我们与虚拟世界交互方式的潜在革命。
6、游戏引擎和协作 3D 平台的集成
将 3D 高斯泼溅纳入 Unity 和 Unreal Engine 等游戏引擎中标志着游戏开发的重大进步。 插件和软件包现已推出,将这项技术带给更广泛的受众,并释放互动游戏和模拟的新可能性。
对于 Unity,GaussianSplatting 包(Unity Asset Store)和对于 Unreal Engine,UEGaussianSplatting 插件(Unreal Engine Marketplace)就是此类开发的示例。
最近,协作 3D 平台 Spline 实施了另一个解决方案,该解决方案通过一个非常令人兴奋的演示展示了对 3D 高斯泼溅的支持,此处是进一步讨论。
我们预计未来将会发布更多插件和工具,进一步改善数字产品中对高斯分布的支持。
8、Android 上的高斯泼溅
虽然 Luma AI 和 Polycam 等公司的高斯泼溅管道瞄准了 iOS 和 Web,但最近 Kiri Innovations 团队在其新的 Kiri Engine 3.0 中宣布支持 Android,这是一款适用于 Android 和 iOS 设备的 3D 扫描应用程序。
Kiri Engine 最初于 2022 年作为摄影测量工具发布,可根据源照片重建 3D 模型。 3D 高斯溅射的加入代表了一项重大进步,允许创建和查看高质量、可能快速渲染的对象或场景的 3D 表示。
9、3D 高斯斑点查看器示例
Luma AI 和其他平台提供了高斯泼溅的交互式示例,将日常场景变成身临其境的体验。
此处托管一些基于 WebGL 的 3D 高斯泼溅捕获示例。
令人难以置信的是,这些工具还可以与旧图像一起使用,生成过去事件的吸引人的高斯图。 2009 年的“MTV 电影奖”就是这样,红地毯上设有“时尚 360 度旋转”舞台,最近被用来拍摄几位知名艺术家的照片。
例如,查看这个栩栩如生的 Miley Cyrus 的高斯 Splats 捕获:
10、挑战和未来方向
尽管 3D 高斯泼溅具有令人鼓舞的优势,但它仍面临计算强度和实现复杂性等挑战。 然而,随着研究深入克服这些障碍,以及 SIGGRAPH 等论坛和会议上的讨论推动进一步创新,未来看起来是光明的。 在最近的解决方案中,有人尝试减小 Gaussian Splats 文件的大小,例如程序员 Aras Pranckevičius 的解决方案。
相关文章:

3D高斯泼溅的崛起
沉浸式媒体领域正在以前所未有的速度发展,其中 3D 高斯溅射成为一项关键突破。 这项技术在广泛的应用中看起来非常有前景,并且可能会彻底改变我们未来创建数字环境以及与数字环境交互的方式。 在本文中,我们将通过与摄影测量和 NeRF 等前辈进…...

基于python+vue家政服务系统flask-django-php-nodejs
相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低家政公司的运营人员成本,实现了家政服务的标准化、制度化、程序化的管理,有效地防止了家政服务的随意管理,提高了信息的处理速度和精确度,能够及时、准确地…...

用户中心项目(登录 + 用户管理功能后端)
文章目录 1.登录功能-后端1.思路分析2.完成对用户名和密码的校验1.com/sun/usercenter/service/UserService.java 添加方法2.com/sun/usercenter/service/impl/UserServiceImpl.java 添加方法3.com/sun/usercenter/service/impl/UserServiceImpl.java 新增属性 3.记录用户的登录…...
嵌入式相机WEB,用C直接处理?
以前用HTTP连接相机的时候,以为是相机内部有一个类似tomcat之类的WEB服务器。收到相机命令后,通过链接库执行动作。 昨天想给相机增加一个时间显示,增加的项目一点就跳转到登录。 于是问了之前负责的,说是要后端改。再问嵌入式相…...
LeetCode_31_中等_下一个排列
文章目录 1. 题目2. 思路及代码实现详解(Python)2.1 两遍扫描 1. 题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如, a r r [ 1 , 2 , 3 ] arr [1,2,3] arr[1,2,3] ,以下这些都可以视作 a r r arr arr…...

huggingface的transformers训练gpt
目录 1.原理 2.安装 3.运行 编辑 4.数据集 编辑 4.代码 4.1 model init编辑 forward: 总结: 关于loss和因果语言模型: 编辑 交叉熵:编辑 记录一下transformers库训练gpt的过程。 transformers/examples/…...

第六十一回 放冷箭燕青救主 劫法场石秀跳楼-编译安装飞桨paddlepaddle@openKylin+RISCV
卢俊义在水里被张顺抓住,用轿子抬到了梁山。宋江等人下马跪在地上迎接,请他坐第一把交椅。卢俊义宁死不从,大家只好说留他在山寨几天,先让李固带着马车货物回去。吴用对李固说,你的主人已经答应坐第二把交椅了…...

白话讲人工智能、机器学习、深度学习
人工智能(Artificial Intelligence,AI) 定义: 想象一个聪明的机器人,它能思考、决策和学习,就像电影里的智能角色那样。人工智能就是努力打造这样的智能实体的学科,它试图模仿、扩展乃至超越人…...

ssm项目(tomcat项目),定时任务(每天运行一次)相同时间多次重复运行job 的bug
目录标题 一、原因 一、原因 debug本地调试没有出现定时任务多次运行的bug,上传到服务器就出现多次运行的bug。(war的方式部署到tomcat) 一开始我以为是代码原因,或者是linux和win环境不同运行定时任务的方式不一样。 但是自己…...

vue3 + ts +element-plus + vue-router + scss + axios搭建项目
本地环境: node版本:20.10.0 目录 一、搭建环境 二、创建项目 三、修改页面 四、封装路由vue-router 五、element-plus 六、安装scss 七、封装axios 一、搭建环境 1、安装vue脚手架 npm i -g vue/cli 2、查看脚手架版本 vue -V3、切换路径到需…...

二叉树试题解析
一、单项选择题 01.下列关于二叉树的说法中,正确的是( C ). A.度为2的有序树就是二叉树 B.含有n个结点的二叉树的高度为 C.在完全二叉树中,若一个结点没有左孩子,则它必是叶结点 D.含有n个结点的完全二叉树的高度为解析:A 二叉树…...

计算机服务器中了faust勒索病毒怎么办,faust勒索病毒解密工具流程
网络是一把利剑,可以方便企业开展各项工作业务,为企业提供极大的便利,但随着网络技术的不断发展与应用,网络数据安全威胁也在不断增加,给企业的正常生产运营带来了极大困扰,近日,云天数据恢复中…...
初次部署麒麟V10系统需要的配置,快速完成测试环境的搭建
配置麒麟V10 设置“root”登录密码 sudo su -passwd # 设置登录密码允许“root”远程登录 sudo vim /etc/ssh/sshd_configsshd_config # ↓↓↓↓修改的内容↓↓↓↓ PermitRootLogin yes # ↑↑↑↑修改的内容↑↑↑↑重启服务 sudo systemctl restart sshd允许通过图像界…...
DOcker in Docker 原理与实战代码详解
Docker in Docker(DinD)指的是在Docker容器内部运行另一个Docker守护进程和客户端。这种技术可以用于创建嵌套的Docker环境,例如在持续集成/持续部署(CI/CD)管道中构建和测试Docker镜像。然而,需要注意的是…...

公司系统中了.rmallox勒索病毒如何恢复数据?
早晨上班时刻: 当阳光逐渐洒满大地,城市的喧嚣开始涌动,某公司的员工们纷纷踏入办公大楼,准备开始新的一天的工作。他们像往常一样打开电脑,准备接收邮件、查看日程、浏览项目进展。 病毒悄然发作: 就在员…...

论文阅读:Forget-Me-Not: Learning to Forget in Text-to-Image Diffusion Models
Forget-Me-Not: Learning to Forget in Text-to-Image Diffusion Models 论文链接 代码链接 这篇文章提出了Forget-Me-Not (FMN),用来消除文生图扩散模型中的特定内容。FMN的流程图如下: 可以看到,FMN的损失函数是最小化要消除的概念对应的…...

html5cssjs代码 036 CSS默认值
html5&css&js代码 036 CSS默认值 一、代码二、解释 CSS默认值(也称为浏览器默认样式)是指当HTML元素没有应用任何外部CSS样式时,浏览器自动为这些元素赋予的一组基本样式。这些样式是由浏览器的默认样式表(User Agent sty…...
小米路由器4A千兆版刷回官方固件
原文链接:小米路由器4A千兆版刷回官方固件及修改SN绑定APP-小米无线路由器及小米网络设备-恩山无线论坛 (right.com.cn) 进入breed 由于openwrt工作不稳定,决定重新刷回官方固件。 由于当前路由器已经刷过breed,不再重新刷入。 如何刷入b…...

【Leetcode每日一题】 递归 - 两两交换链表中的节点(难度⭐)(38)
1. 题目解析 题目链接:24. 两两交换链表中的节点 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 一、理解递归函数的含义 首先,我们需要明确递归函数的任务:给定一个链表…...

如何部署GPT模型至自有服务器:从零开始搭建你的智能聊天机器人
引言 GPT模型是自然语言处理领域的重要突破,它能够通过生成式的文本生成方式,实现与用户的智能交互。本文将详细介绍如何将GPT模型部署到自有服务器上,并编写一个基本的API接口来实现与聊天机器人的交互。 目录 引言 一、准备工作 首先&am…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...