今日学习内容
学习学习GoLang的语法.
组会汇报
1
这周我汇报的是这两篇论文,都是关于在大规模场景对渲染帧率进行优化的论文.
目前主流的方式就是分级分块渲染 或者 八叉树方式.
2
首先这篇分块分级渲染的论文,核心贡献是引入了一种LOD表示方法,结合分块渲染,显著降低了渲染时间和GPU显存使用,同时保持了高质量的视觉输出
3
可以看到,展示了场景的多层次LOD表示,每个LOD级别包含不同细节的高斯分布。根据相机距离作为阈值来进行选择。
并通过透明度混合实现一个平滑过渡,避免视觉瑕疵。可以看到远处就是比较大的高斯球,主要拟合的就是结构信息,而近处就是对高频细节进行拟合.
4
然后就是这个方法的实现方式.
第一个公式就是分级选择公式.
相当高斯会根据其与相机的距离被分配到不同的LOD级别.
然后第二个公式,相当于相当于构建更低细节LOD所使用的公式,通过平滑滤波的方式来获取更低细节度的模型.
第三个公式,用于分块边界的高斯透明度混合.
5
可以看到这张图,渲染过程中每个像素点需要处理的可见高斯数量.
原版3DGS会存在渲染的严重不均衡,大量的像素会对应非常多高斯球,这些是存在非常大的冗余的,导致渲染的性能下降.
通过分级分块的话可以明显的减少长尾效应,需要处理极端数量高斯的像素点大大减少.
6
这个是该方法的实验对比,可以看到渲染帧率是有很明显的提升.
7
这些是渲染的效果图
8
然后这一个动态场景漫游的过程,可以看到虽然说帧率非常的高,但是同时存在的问题就是左侧文中的方法在移动过程中会出现模型的跳跃,这就是因为分块导致的在分块边界导致的跳变.
9
然后看到在不同设备或者显存受限设备进行渲染的测试的实验,比如说手机或者mac上.
然后这是进行的不同阈值下的对照试验.
10
然后就是八叉树分级渲染的3DGS.
他的分级的实现方式就是通过八叉树结构.
11
这篇文章设计的八叉树结构
首先会将场景分成多层级的体素网格,每个体素中心定义一个锚点,每个锚点对应相应的高斯球.
左侧的公式可以看到,八叉树层数K由观测距离范围决定,其中d是剔除异常值后的最大最小值.
然后右侧公式是锚点的选择机制,对于给定的视角i.
12
在训练过程中,从低层级开始训练,通过判断梯度大小来决定是否增加层级或者增加锚点.然后就是剪枝策略,通过可见频率和透明度剔除无效锚点,减少冗余和浮点伪影.
13
然后就是这篇文章所做的实验,可以看到本文的方法,渲染帧率有明显的提升,并且点云的层次更加清晰.
14
然后这是渲染效果图的对比.
15
除此之外,在动态渲染的过程中,可以相比上一个方法,因为相当于他的层级更加得多,八叉树的实现方式他的优势就是变化非常平滑,不会出现上一个方法明显跳变的情况.
16
总结一下的话基本上分级渲染都是降低远处不重要的高斯球数量,但是实现方法各有不同,比如说分块分级的方式他的优点就是索引结构扁平,不会产生大量的额外开销,但是问题就是会出现模型跳变;
而八叉树分级的方式他的优点就是变化平缓,不会出现明显模型跳变问题,但是问题就是需要渲染过程增加一步树的遍历操作,需要一定的额外开销.
力扣每日一题
算法力扣Hot100
91/100
SQL50题
32/50
Java复习进度
- Java进阶之路
- Java SE🔥
56/56 - Java集合框架🔥
30/30 - Java并发编程🔥
71/71 - JVM🔥
54/54 - MySQL🔥
83/83 - Redis🔥
57/57 - Spring🔥
16/41 - 操作系统
34/34 - 计算机网络🔥
8/62 - MyBatis
24/24 - Elasticsearch
- RocketMQ
9/24 - 分布式
12/12 - 微服务
4/32 - 设计模式
5/5 - Linux
3/3 - 场景设计
1
MYDB
10/10
项目-TecHub
项目-RAG
RAG题目31/31
架构设计25/25
用户管理11/11
文件上传解析19/19
知识库检索13/13
聊天助手13/13