计算过程是通过蒙特卡罗积分完成的,积分采用的概率函数也就是权重fWt的倒数,u跟v表示的是cubemap上这个face上的uv坐标(这里的uv坐标不是从-1到1,而是会考虑z值的影响,比如在+X face上,就是y/z),fWt表示的是差分立体角
1. 采样
针对环境光进行采样,首先需要先建立环境光贴图,环境光贴图使用了 cubemap 的形式,见下图
知道了每一個方向的光照值,要進行採樣,還需要計算出球諧基。球諧基實際上相當於某個方向上分量的多少,多個球諧基在不同的方向上分量不同,所以才能夠利用球諧基和球諧參數進行光照的還原。球諧基的計算方法,上一篇已經給出,例如,前四個分量的球諧基實際計算過程如下:
每没采样到一个像素就计算相应的球谐基,并且将像素值与对应的球谐基相乘后再求和(积分过程),然后将积分后的结果乘以立体角,并且除以像素个数。
2. 渲染
如何使用?
球谐函数实际上就是将周围的环境光采样成N个系数,然后在渲染的时候用这几个系数来对光照进行还原,这个过程可以看成是对周围环境光的简化,进而简化计算过程。每次渲染时都需要先采样再计算,花费大量时间,因此其简化过程就是将整个过程分成两个模块,首先对环境光贴图进行采样和积分运算,生成球谐参数,然后利用球谐参数进行渲染。
SH是一个很强大的工具,但不是万能的工具,在如下的一些应用场合,SH就不太合适:
-
高频信号模拟,高频信号需要高阶SH,这会导致性能急剧下降
-
全局效果支持,全局效果往往意味着高频信号
-
使用其他基函数具有更好表达效果的情况
未完待续...
球
谐函数
性质
和傅里叶级数性质类似,
球
谐函数
也是以正交函数作为基底,傅里叶级数的正交基底为sin(nx)和cos(nx)。
球
谐函数
则是
球
面上的正交基底。其主要性质有:
标准正交性
旋转不变性
函数乘积的积分等于其
球
谐系数向量的点积
标准正交性表示:
其中,表示两组
球
谐函数
基底。
旋转不变性表示:
球
谐光照(
Spheri
ca
l H
arm
onics
Lighting)
文章目录
球
谐光照(
Spheri
ca
l H
arm
onics
Lighting)一、前言二、
球
谐函数
2.1 基函数2.2 投影与重建2.3 应用三、漫反射环境光3.1 IrradianceMap3.2 数学推导3.3 实践参考博文
在学习图形渲染的过程中,一直對
球
谐函数
(
球
谐光照)有一点了解,但没有亲手实现过。
关于
球
谐函数
的数学概念是比较复杂的,笔者也实在无法完全
理解
,这篇文章只能从做东西的角度来说,公式是如何和代码进行对应的。
用matlab生成谐波代码3D-方向-SSV
3D方向统计,模拟和可视化(3D-Directional-SSV)是一种快速,准确和方便的方法,可以从3D
球
形分布中进行计算,模拟和可视化。
除了可以模拟整个Fisher-Bingham分布系列的功能之外,使该程序包与众不同的还有四个方面。
首先,该程序包利用了由喷气推进实验室开发的
球
面上数据的等距分层等值纬度像素化(HEALPix)
Samuel
Finn)中的特定功能,以利用HEALPix细分中的许多理想特性。
此外,该程序包可以
使用
概率密度函数的
球
谐特征来生成随机样本,并绘制密度函数和模拟数据点。
该软件包中包括一个针对实值
球
谐和复值
球
谐的特定阶数(L
3)和度(m
2)[分别参见Random_Y3_2Real_square.m和Random_Y3_2Compl_square.m]。
此外,我们开发了用于计算和绘制密度和阶次替代规范的密度的代码[请参见Density_SphH
arm
.m和Density_SphH
arm
_All.m],并且如果用户愿意,
语法:[Ymn,THETA,PHI,X,Y,Z]=sph
arm
4(L,M,RES,PLOT_FLAG);
L -
球
谐度数,[1x1] M -
球
面谐波阶次,[1x1] RES - 要
使用
的点数的向量 [#Theta x #Phi 点]、[1x2] 或 [2x1] PLOT_FLAG - 生成
球
谐曲面图形的二进制标志 (DEFAULT=1)
输出: Ymn -
球
谐坐标,[RES(1) x RES(2)] THETA - 圆周坐标,[RES(1) x RES(2)] PHI - 纬度坐标,[RES(1) x RES(2)] X,Y,Z - 大小、平方、
球
谐曲面点的笛卡尔坐标,[RES(1) x RES(2)]
注意:保持 THETA 和 PHI 的各种用法是非常重要的。 对于此函数,THETA 是方位角/经度/圆周坐标,定
Description:
This program displays a simple looking scene (actually containing approximately 25,000 vertic...
[笔记]
球
谐函数
前言背景功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
此笔记主要用来记录阅读Stupid
Spheri
ca
l H
arm
onics
(SH) Tricks所总结的要点,内容深度一般,主要用来理清自己胡乱学来的
必须记下几点,遗忘真是大敌。例子程序在Graphics Resources\SH
arm
onics
\OneOpenglExample中,
已经简单修改一点。源程序只能为面积光,现在可以为direct 光:g_bIsDirectionLight。
Robin Green 的pdf文章好像就是为我写的,看着舒服无比,必须感谢。
一、
球
谐函数
。
球
谐函数
计算步骤分两步。
推导
球
谐函数
是
球
面坐标系下的拉普拉斯方程(f(x,y,z) = 0 的泊松方程)中角度部分的解,这里参考
球
谐函数
自己手推一遍从笛卡尔坐标系到
球
坐标系的推导过程,可以参考:https://wenku.baidu.com/view/f6c75dd2da38376baf1faec3.
html
然后主要是分离变量法,考虑虚数域的公式有如下推导,参考。
地磁场是由地
球
内部磁性岩石及分布于地
球
内部和外部的电流产生的多种磁场叠加而成,分为内源场和外源场。内源场包括起源于地核的主磁场(地核场)和起源于地壳的岩石圈磁场(地壳场)。外源场主要分布在磁层、电离层以及星际空间的电流体系引起,是空间电磁环境在地
球
上的直接表象。此外,外源场也会在地
球
内部生成感应电流产生感应磁场。从全
球
平均看,地核场占总磁场的95%以上,地壳磁场约占4%,外源变化磁场及其感应磁场只占总磁场的1%。尽管主磁场不像外源场那样快速剧烈变化,却仍然长期不断变化,表现最为显著的是偶极距地变化,...
球
谐光照是实时渲染技术中的一种,属于Precompute Radiance Transfer(PRT)的范畴。经过预处理并存储相应的信息之后,它可以产生高质量的渲染及阴影效果。
球
谐光照需要
使用
新的光照方程来代替通常的光照方程,并将该方程中的相关信息
使用
球
谐基函数来投影到频度空间,并用系数进行表示(该变换与信号处理中的Fourier变换同样的道理)以一定的方式存储。在渲染的过程中就结合