3DGS学习(三)—— 球谐函数

球谐函数

直观了解

参考文章:https://zhuanlan.zhihu.com/p/351289217
球谐函数可以类比泰勒展开,傅里叶级数。都是通过一组不同阶的基函数线性组合而成,只不过傅里叶级数的基函数是三角函数,而球谐函数的基函数是球函数。即正交基为球函数,极坐标即球函数系数。
在这里插入图片描述

同样就像傅里叶变换拟合曲线一样,球谐函数拟合3d物体时,所用阶数越高,拟合越贴切,但是也有可能出现过拟合的情况。
在这里插入图片描述

球谐函数性质

  1. 正交性:各个基函数之间线性独立
  2. 旋转不变性:环境光照变化之后只需要简单的计算就可以得到光源旋转之后的结果,在后续应用中补充。

若将函数所表示的距离变成颜色上的数值差异,就可以用球谐函数来拟合颜色信息。

球谐光照

参考文章:

  1. https://zhuanlan.zhihu.com/p/359856625
  2. https://zhuanlan.zhihu.com/p/363600898

漫反射光照函数
L ( p , w o ) = ∫ Ω L ( p , ω i ) n ⋅ ω i d w i L(p,w_o)=\int_{\Omega}L(p,\omega_i)n\cdot\omega_idw_i L(p,wo)=ΩL(p,ωi)nωidwi

  • Ω \Omega Ω为半球空间,入射光方向 w i w_i wi,观察方向 w o w_o wo,着色点 p p p, n n n 为着色点 p p p 的法线。

进行替换
{ l i g h t ( w ) = L ( p , w ) t ( w ) = n ⋅ w \left.\left\{\begin{aligned}&light(w)=L(p,w)\\&t(w)=n\cdot w\end{aligned}\right.\right. {light(w)=L(p,w)t(w)=nw

进行球谐函数展开
{ l i g h t ( w ) = ∑ i = 0 L i Y i ( w ) t ( w ) = ∑ i = 0 t i Y i ( w ) \left.\left\{\begin{aligned}&light(w)=\sum_{i=0}L_iY_i(w)\\&t(w)=\sum_{i=0}t_iY_i(w)\end{aligned}\right.\right. light(w)=i=0LiYi(w)t(w)=i=0tiYi(w)
带回光照函数模型化简
L ( p , w o ) = ∑ i = 0 L i t i L(p,w_o)=\sum_{i=0}L_it_i L(p,wo)=i=0Liti
此时形式简单,但是实际上计算时,需要预计算 t i t_i ti,即对每一组法线方向都要计算一组球谐函数得到其系数,实际开销较大。于是利用球谐函数旋转不变性的性质继续推导得到
L ( n ) = ∑ l = 0 ∞ ∑ m = − l l 4 π 2 l + 1 L l m t l Y l m ( n ) L(n)=\sum_{l=0}^\infty\sum_{m=-l}^l\sqrt{\frac{4\pi}{2l+1}}L_l^mt_lY_l^m(n) L(n)=l=0m=ll2l+14π LlmtlYlm(n)
此时只需要通过顶点着色器传入的法向量n计算出球谐函数 Y l m ( n ) Y_l^m(n) Ylm(n),再与常数相乘,不需按原来要对每个t都单独通过积分求解。

<think>好的,我需要帮助用户了解3DGS(3D Gaussian Splatting)中球谐函数的应用和实现。首先,我得回顾一下球谐函数的基本概念,以及它们在3DGS中的具体作用。根据用户提供的引用,球谐函数用于表示颜色,并且类似于傅里叶级数在维空间的展开,构成正交基,能够将球面上的函数表示为基函数的线性组合[^3]。 接下来,我应该分步骤解释球谐函数3DGS中的应用。首先,颜色表示方面,引用中提到球谐函数用于描述空间中不同方向的光照对颜色的影响,这可能涉及到将颜色分解为球谐系数。然后,动态光照处理,因为球谐函数的正交性允许高效计算光照变化,这可能适用于实时渲染。另外,数据压缩也是一个应用点,高阶球谐函数能捕捉更多细节,但需要更多的系数,这可能需要在存储和精度之间权衡[^1][^3]。 在实现步骤方面,需要确定阶数,初始化系数,采样方向计算颜色,以及渲染合成。这里可能需要引用提到的基函数表达式和正交基特性[^3]。此外,用户提供的参考链接中有关于Unity可视化的内容,可能涉及到实际代码实现,但用户没有提供具体代码,所以可能需要泛泛而谈。 然后,生成相关问题需要考虑用户可能想了解的更深入内容,比如阶数选择的影响、与傅里叶级数的区别、实时渲染中的优化方法,以及数据压缩的具体策略。这些问题应该基于引用中的信息,例如不同阶数的球谐函数表达能力不同[^1],正交基的特性,以及数据压缩的权衡[^3]。 需要确保回答结构清晰,使用中文,数学公式正确用$...$和$$...$$格式。同时检查引用是否正确标注,例如关于球谐函数的正交基和颜色表示的引用,以及不同阶数的差异引用。可能还需要注意避免技术错误,比如正确解释球谐函数如何分解颜色,以及动态光照的处理方式。 最后,确保回答中的每个部分都有对应的引用支持,并且在末尾列出相关问题,引导用户进一步探索。可能还需要注意术语的一致性,比如3DGS的全称是否必要,但用户已经使用缩写,所以保持即可。</think>### 3DGS中球谐函数的应用与实现 #### 1. **球谐函数3DGS中的作用** 球谐函数3D高斯泼溅(3D Gaussian Splatting, 3DGS)中主要用于**颜色表示与光照建模**。具体来说: - **颜色随方向变化**:3DGS中的高斯分布需要表示不同视角下颜色的变化(例如材质的光泽或漫反射特性)。球谐函数通过一组基函数将颜色分解为方向相关的分量,表达式为: $$C(\theta, \phi) = \sum_{l=0}^{n}\sum_{m=-l}^{l} c_{l}^{m} Y_{l}^{m}(\theta, \phi)$$ 其中 $Y_{l}^{m}$ 是球谐基函数,$c_{l}^{m}$ 是对应的系数,$\theta$ 和 $\phi$ 是球面角度。 - **动态光照支持**:球谐函数的正交基特性允许高效计算光照变化对颜色的影响,适用于实时渲染场景[^3]。 #### 2. **实现步骤** 在3DGS中,球谐函数的实现通常包括以下步骤: 1. **选择阶数**:阶数 $n$ 决定基函数的数量(总数为 $(n+1)^2$),高阶可捕捉更复杂的光照变化,但计算量增大(常用3阶或4阶)。 2. **初始化系数**:为每个高斯分布分配一组球谐系数 $c_{l}^{m}$,初始值可通过拟合输入数据或随机初始化得到。 3. **方向采样与颜色计算**:根据视角方向 $(\theta, \phi)$ 计算球谐基函数值,加权求和得到颜色: $$C = \sum_{l,m} c_{l}^{m} Y_{l}^{m}(\theta, \phi)$$ 4. **渲染合成**:将各高斯分布的颜色叠加到图像平面,生成最终渲染结果。 #### 3. **优化与挑战** - **数据压缩**:低阶球谐函数(如2阶)可减少存储开销,但可能丢失高频细节;高阶(如5阶)需更多系数,适合高精度场景。 - **实时性**:利用球谐函数的正交性,预计算基函数值并缓存,加速渲染[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜡笔小新配吉良吉影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值