高斯溅射融合之路(一)- webgl渲染3d gaussian splatting

大家好,我是山海鲸的技术负责人。之前已经写了一个GIS融合系列。其实CesiumJS的整合有相当的难度,同时也有很多方面的工作,很难在几篇文章内写完,整个山海鲸团队也是投入了接近两年的时间,才把周边整套工具链进行了完善,后续有新的内容也会持续分享,隔壁系列传送门:GIS融合之路

一坑未平,一坑又起。去年年末,我们的AI合作伙伴突然给山海鲸技术团队丢来了一个新技术-3D Gaussian Splatting。我们的理解中,一直认为Nerf类似的技术还是实验室里的玩具,没想到这么快就可以实际应用了。我们技术团队一向自认无所不能,怎么能在AI领域毫无建树呢。

于是作为一名有好胜心的技术负责人,必须拉来团队开个会传递了一下不服输的精神:

大家都很平静了接受了我的提议,一致认为高斯溅射的渲染是未来的方向,是必须被整合进山海鲸的。好了,思想上同步了,团队摩拳擦掌,接下来就是了解一下到底什么是高斯溅射了。

经过了半天学习,不得不感慨一下,AI界相比GIS界那可是真的是太人性化了。当年整合GIS的时候,当年就光理解GIS界的黑话就花了一天,刚弄懂投影坐标系和球心坐标系,又得看WGS84和CGCS2000。刚以为终于算入门了,又被客户问了4490支持不支持,那真的是语言的迷宫啊。相比之下,AI界虽然高级词汇多,但人家是真的实打实的难啊。

不过难得的是,相比nerf,3d gaussian splatting对于渲染界的人来说,那可是太友好了,基本就是一个点云Plus,结合一下3D高斯分布。渲染起来基本就是一堆billboard,确实没有入门难度。网上一搜竟然有这么多开源的代码,那么作为一个讲究效率的技术负责人来说,那必然是没有自己研究的必要了,直接拿来就用吧。那么我们直接看下高斯泼溅在山海鲸中的渲染和功能集成效果吧:

山海鲸导入高斯泼溅模型效果,支持ply/splat格式 - 知乎

这么快就结束了?咱这可才是系列第一篇,而且从头到尾除了借鉴和废话,竟然没有对社会作出一丝自己的贡献,这心里自然是惴惴不安的

既然写不出啥原创,我就学习下科研界的办法,来写篇综述吧,也算从我个人的理解出发,说说对高斯溅射的理解:

1、渲染的几何表达

实际上现代的游戏和3D建模,基本上绝对的主流就是Mesh网格表达,也就是三角形。三角形的优点就是和现代GPU兼容度极佳,因此渲染速度很快。但实际上除了Mesh表达外,还有类似点云,有向距离场等等,而这些方案来说,点云才是最符合人物直觉能想到的最简单的3D模型的表现形式,甚至点云往表面的渲染,也不是从高斯溅射开始的,之前的渲染界也尝试了各种算法去填充点与点之间的空隙,只是最终Mesh网格成了渲染界最终赢家。而点云本身由于和激光扫描这类技术结合度较高,因此还是有着广泛的应用,山海鲸内目前也支持点云数据的接入。最后贴一张Games101中的PPT来看下几何表达的困难:

2、AI三维重建

其实要说三维重建,数字孪生领域最熟悉的莫过于倾斜摄影了,而倾斜摄影里也是用各个角度的图片通过识别同一像素点来先建立点云数据,再通过表面重建的形式转成网格模型的。那么为什么AI界要绕那么大弯从NeRF开始做呢,因为AI领域引以为傲的最快梯度下降法必须要求几何表达是可微的,否则就没法训练了。目前常规的可微的几何表达就是有向距离场,但有向距离场目前直接渲染画面的能力还不是很常规,更多用于阴影的计算这类辅助渲染,而NeRF采用体素的渲染,实现了几何表达的可微,但遗憾的是,体素渲染目前的效率还比较低,和光栅化不可同日而语。3D高斯泼溅使用点云作为渲染的基础,可以直接复用光栅化,同时又利用高斯函数的可微性进行训练实现了训练速度和渲染速度的兼得。

3、目前高斯溅射的格式

当前高斯溅射主流格式就是PLY格式,PLY格式是一个文件头是文本形式,而顶点数据是二进制的模式,文件头中给出了每个顶点所有的属性,是一个扩展性很强的文件格式,只是读取的时候要先读取头文件内容以确定数据部分如何读取,因此这个过程相对较慢。而现在主流的方案就是把这个PLY文件先读取进来,然后对每个顶点只保留位置 旋转 颜色 和 高斯函数的参数的形式生成SPLAT文件,牺牲掉PLY文件的扩展性,换来更快的加载速度。

山海鲸目前也同时支持的ply文件和splat文件的载入。

4、目前山海鲸整合渲染时的问题

由于高斯溅射算法更多的考虑的独立渲染,和其他元素进行整合渲染就会出现各种各样的问题

首先就是和光照的互动,目前山海鲸中可以加入如平行光,IBL,点光源等等的光照,这些光照还不能直接和高斯溅射的模型产生效果。

其次高斯溅射由于没有直接的depth和normal信息的输出,导致在雾效,空气透视,延迟渲染等类后处理中很难处理。

最后同GIS相关技术对比,高斯溅射在坐标系支持,瓦片加载等相关周边功能的支持度上都还较为欠缺。

当然,目前高斯溅射技术领域还在蓬勃发展,我们山海鲸也会一同逐步完善高斯溅射在渲染中的整合程度,也欢迎大家下载软件进行体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中inode号与日志分析

一.inode号 1.inode表结构 元信息:每个文件的属性信息,比如:文件的大小,时间,类型,权限等,称为文件的元数据(meta data 元信息 ) 元数据是存放在inode(index node)表中…

Spring Kafka—— KafkaListenerEndpointRegistry 隐式注册分析

由于我想在项目中实现基于 Spring kafka 动态连接 Kafka 服务,指定监听 Topic 并控制消费程序的启动和停止这样一个功能,所以就大概的了解了一下 Spring Kafka 的几个重要的类的概念,内容如下: ConsumerFactory 作用:…

Opencv_2_ 图像色彩空间转换

ColorInvert.h 内容如下&#xff1a; #pragma once #include <opencv.hpp> using namespace std; #include <opencv.hpp> using namespace cv; using namespace std; class ColorInvert{ public : void colorSpaceInvert(Mat&image); }; ColorInvert.cpp…

高效过滤器检漏方法选择指南及关键注意事项一览

在生物制药企业中&#xff0c;高效过滤器&#xff08;HEPA&#xff09;的检漏工作是确保洁净室能够达到并保持设计的洁净级别的关键步骤。这关系到产品的质量和安全&#xff0c;因此必须遵循相关法规标准和操作流程。 关于北京中邦兴业 北京中邦兴业科技有限公司是一家国家高新…

element中file-upload组件的提示‘按delete键可删除’,怎么去掉?

问题描述 element中file-upload组件会出现这种提示‘按delete键可删除’ 解决方案&#xff1a; 这是因为使用file-upload组件时自带的提示会盖住上传的文件名&#xff0c;修改一下自带的样式即可 ::v-deep .el-upload-list__item.is-success.focusing .el-icon-close-tip {d…

基于SpringBoot的宠物领养网站管理系统

基于SpringBootVue的宠物领养网站管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 宠物领养 宠物救助站 宠物论坛 登录界面 管理员界面 摘要 基于Spr…

1.C++入门

目录 1.C关键字 2.命名空间 作用域方面的优化 a.命名空间定义 b.命名空间使用 3.C 输入&输出 1.C关键字 C有63个关键字&#xff0c;C语言有32个关键字&#xff0c;存在重叠如荧光笔标出 2.命名空间 作用域方面的优化 如果变量&#xff0c;函数和类的名称都存在于全…

AI自动生成PPT文档 aippt的API介绍文档

官方链接直达&#xff01; 产品介绍​ 能力介绍​ AiPPT 是一款智能生成演示幻灯片的在线工具。专业设计团队打造海量模板资源&#xff0c;输入标题即可轻松生成完整的PPT。同时 AiPPT 支持导入多格式文档一键生成 PPT&#xff0c;让 PPT 创作更加高效。聚焦于内容&#xff0…

安装zabbix server

目录 1、实验环境 2、yum 安装zabbix server 2.1 解决权限问题和放行流量 2.2 安装zabbix-server 1、实验环境 操作系统rhel8zabbix6.0TLS数据库mysql8.0.30IP地址192.168.81.131时间配置NTP时间服务器同步 2、yum 安装zabbix server 如果通过yum源安装&#xff0c;操作系…

SysetmUI开机是否显示Keyguard的流程

KeyguardViewMediator的onSystemReady方法 没有启用keyguard时KeyguardViewMediator的log&#xff1a; onSystemReady 方法 doKeyguardLocked LockPatternUtils.isLockScreenDisabled 来判断是否启用 public final static String DISABLE_LOCKSCREEN_KEY "lockscreen.…

信息化工作人员必备常识4——ping命令详解【不间断发包自定义发包的大小自定义发包次数】

信息化工作人员必备常识4——ping命令详解【不间断发包&自定义发包的大小&自定义发包次数】 前言回顾pingtelnetnslookup命令 ping 命令详解帮助手册不间断向目标 IP 发送数据包 -t定义发送数据包的大小 -l-t&-l 验证网络承载能力自定义发送数据包的次数统计响应时…

[BT]BUUCTF刷题第20天(4.22)

第20天 Web [GWCTF 2019]我有一个数据库 打开网站发现乱码信息&#xff08;查看其他题解发现显示的是&#xff1a;我有一个数据库&#xff0c;但里面什么也没有~ 不信你找&#xff09; 但也不是明显信息&#xff0c;通过dirsearch扫描得到robots.txt&#xff0c;然后在里面得…

51单片机数字温度报警器_DS18B20可调上下限(仿真+程序+原理图)

数字温度报警器 1 **主要功能&#xff1a;*****\*资料下载链接&#xff08;可点击&#xff09;&#xff1a;\**** 2 **仿真图&#xff1a;**3 **原理图&#xff1a;**4 **设计报告&#xff1a;**5 **程序设计&#xff1a;**主函数外部中断函数DS18B20驱动 6 讲解视频7 **资料清…

上海亚商投顾:沪指震荡调整 油气等周期股集体下挫

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整&#xff0c;深成指、创业板指小幅走弱。军工板块逆势拉升&#xff0c;中船应急、捷安高科、…

simlab python二次开发2-一键生成轴瓦并设定节点号

simlab python二次开发2-一键生成轴瓦并设定节点号 1、节点坐标计算并建立1.1、建坐标原点节点&#xff0c;并得到Model-1.gda1.2、轴瓦节点计算并建立 2、由节点建面2.1、由4个节点建面得到3个面单元Body2.2、得到Bodies名称2.3、根据Bodies名称选面特征&#xff08;放入Group…

AR爆发的前夜,Rokid站在了门口

文&#xff5c;刘俊宏 摆脱6寸的手机屏幕&#xff0c;栖居在300寸大屏的智慧生活是什么样子&#xff1f; 4月20日&#xff0c;Rokid在新品AR Lite空间计算套装的发布会上&#xff0c;“硬刚”了苹果的Vision Pro。 Rokid AR Lite空间计算套装 Rokid AR Lite与苹果Vision Pro…

el-upload组件如何上传blob格式的url地址视频

el-upload组件如何上传blob格式的url地址视频 一、存在问题二、直接上代码 需求&#xff1a;想把视频地址url:“blob:http://localhost:8083/65bd3c0f-52ec-4844-b85e-06fdb5095b7b”&#xff0c;通过el-upload组件上传 el-upload是Element UI中用于文件上传的组件&#xff0c;…

中文医疗大模型及中文底座大模型参考

参考&#xff1a;https://github.com/HqWu-HITCS/Awesome-Chinese-LLM 中文底座大模型 中文医疗大模型

c#学习入门1

一、环境配置 颜色主题 字体设置 行号设置 二、第一个应用程序 1. 在解决方案下创建一个新项目 第一种注释&#xff1a;两杠注释 第二种注释&#xff1a;星号注释 第三种注释&#xff1a;三杠注释(只有在花括号后面输出才会自动补全&#xff09; 2.控制台输入打印基础语句 输…

第⑯讲:Ceph集群Pool资源池管理以及PG的数据分布的核心技术要点

文章目录 1.Pool资源池的管理1.1.查看Pool资源池列表1.2.创建一个Pool资源池1.3.查看Pool资源池的参数信息1.4.修改Pool资源池的参数信息1.5.为Pool资源池设置应用模式1.6.重命名Pool资源池1.7.设置Pool资源池的限额1.8.删除Pool资源池1.9.查看Pool资源池的利用率 2.PG的数据分…