球谐阳光照射(Spherical Harmonics Lighting)以及运用

摘要:以前在一篇即时深层图提升的毕业论文看出到球谐阳光照射(Spherical Harmonics Lighting)的运用,在查看了许多材料以后還是没法彻底了解,我本人感觉假如以前对即时3D渲染技术性并不是...

以前在一篇即时深层图提升的毕业论文看出到球谐阳光照射(Spherical Harmonics Lighting)的运用,在查看了许多材料以后還是没法彻底了解,我本人感觉假如以前对即时3D渲染技术性并不是很掌握得话,球谐阳光照射還是有一定难度系数的。大多数数的材料全是从基本原理上叙述球谐涵数以及阳光照射全过程,而沒有对实际的运用做表述,我直至真实动手能力完成了一遍球谐阳光照射以后,才彻底了解球谐阳光照射实际的全过程及其功效。

球谐阳光照射具体上是一种对阳光照射的简单化,针对室内空间上的一点,遭受的阳光照射在每个方位上不是同的,也即各向异性,因此室内空间上一点假如要彻底复原阳光照射状况,那么就必须纪录周边球表面全部方位的阳光照射。留意这儿考虑到的周边自然环境通常是繁杂的状况,而并不是好多个简易的灯源,假如是那般得话,立即用灯源的阳光照射实体模型求饶便可以了。 假如自然环境阳光照射能够用简易涵数表明,那当然立即求点周边球表面的積分便可以了。可是一般阳光照射不容易这么简单,而且用涵数表明阳光照射都不便捷,因此常常用的方式是应用自然环境光贴图,例如像那样的: 上边的图是立方体进行获得的,这类贴图也便是cubemap,必须留意的是一一样的cubemap是以里往外看的。 考虑到一个简易情景中有一个点,他周边的每个方位上的自然环境阳光照射便是上边的cubemap展现的,倘若我觉得了解这一点每个方位的阳光照射状况,那麼就务必在cubemap相匹配的每个方位开展取样。针对一个大的情景来讲,每一个部位点的自然环境光都是有将会不一样,假如把每一个点的自然环境光贴图存储起來,而且每一次获得阳光照射都从相对的贴图里边取样,显而易见那样的方式是是非非常价格昂贵的。 运用球谐涵数便可以非常好的处理这一难题,球谐涵数的关键功效便是用简易的系数表明繁杂的球面涵数。有关球谐涵数的基础理论推导与表述能够参照wiki(wiki/Spherical_harmonics)。假如仅仅要运用和完成球谐阳光照射,不容易涉及到到推导全过程,但是球谐基涵数确是重要的內容,球谐基涵数早已有些人在wiki上列好啦报表,参照(wiki/Table_of_spherical_harmonics),前3阶的球谐基涵数以下: 这儿非常值得留意的是许多材料用这幅图来叙述球谐基涵数: 刚刚刚开始见到这幅图的情况下真是感觉莫名其妙其妙,具体上这儿面每一个斜面全是用球座标系表明的,球谐基全是界定在球座标系上的涵数,r(也便是离管理中心的间距)表明的便是这一球谐基在这里个方位份量的关键水平。我是用对比傅里叶转换的方式来了解的,实际上球谐涵数自身便是拉普拉斯转换在球座标系下的表明,这儿的每一个球谐基能够对比成傅里叶转换中频域的每个离散的頻率,每个球谐基乘以相匹配的系数便可以复原出原先的球面涵数。一个繁杂的波形能够用简易的谐波和相对系数表明,一样的,一个繁杂的球表面的涵数还可以用简易的球谐基和相对的系数表明。 因为球谐基涵数阶数是无尽的,因此只有取前边两组基来类似,一般在阳光照射广州中山大学都取3阶,也即9个球谐系数。 大家先考虑到简易的状况,例如说界定一个阳光照射涵数: 在球座标系下,将该涵数的值作为阳光照射抗压强度值,能够绘制阳光照射在球表面的遍布状况: 但是因为这类方法可视性化方法针对色度转换并不是很比较敏感,因此大家把抗压强度当做球座标系的r,绘制来是这一模样:  如今要将这一涵数变换成球谐系数表明,最先要做的便是对其开展取样,取样的总体目标是明确在某一球谐基方位上抗压强度的尺寸,也即求得每一个球谐基Yi相匹配的系数ci。实际的取样方式以下:  在其中N为取样频次。换句话说在测算某一球谐系数ci的情况下,最先在球表面采很多点,随后把这种点的阳光照射抗压强度和球谐基相乘(在哪个方位上,球谐基涵数的份量或是说关键水平便是Yi(xi)),根据这种取样点,进而获得了在每一个球谐基涵数上阳光照射的遍布状况。留意某一球谐基只有大概意味着它哪个方位上的阳光照射抗压强度,因此必须组成许多个球谐基涵数才可以类似复原出原阳光照射。 复原的全过程较为简易,根据球谐基与相匹配的系数相乘获得:  这儿L 是复原后的阳光照射,s是球表面的一点(还可以当做某一方位),n是球谐涵数的阶数,n^2也即球谐系数的数量。 非常值得留意的是取样和测算ci是事先开展的,例如说繁杂情景中,某一部位事先用光源追踪方式测算自然环境光,进而取样出ci,那样这一部位的阳光照射信息内容就缩小成好多个ci表明了。可是复建阳光照射的全过程是在运作时即时开展的,着重建阳光照射的全过程中能看出该式十分简易,在其中Yi的测算从球谐基涵数的表格中便可以看得出只涉及到到简易的乘法和加减法,彻底能够在shader中完成(球谐基涵数中的r一般默认设置都设定成1)。因此假如帮我们一个点的球谐系数,运用上边的公式计算立刻就等获得每一个方位上的阳光照射抗压强度。 针对上边的哪个阳光照射涵数来讲,最先对原涵数开展取样,取样10000个点并测算出前6阶36个球谐系数,测算出的球谐系数(一部分)以下:  测算好啦球谐系数以后,大家便可以运用这种系数来复原原阳光照射了,运用第二个公式计算复原以后的实际效果以下: 从左至右各自是原阳光照射、0~2阶球谐阳光照射、0~5阶球谐阳光照射,从这当中能看出到第5阶球谐阳光照射与原阳光照射早已很贴近了,仅仅有小一部分的高频率信息内容不一样。表明球谐系数越大,复原的实际效果就越好,同时复原阳光照射时可以不错地保存低頻一部分,而高频率信息内容则遗失得较为多。但是针对阳光照射来讲,一般全是较为低頻的信息内容,因此3阶,也便是到l=2时就早已充足了。 假如用CubeMap的方法来可视性化便是这一模样:    左图为原自然环境光的CubeMap,下图为0~5阶球谐系数复原以后的阳光照射,能看出早已复原得非常好了。    撇开简易的涵数,假如是繁杂的自然环境光贴图,全过程也是一样的,例如针对一个那样的自然环境光: 对它开展取样并复原以后,获得了那样的結果: 实际效果还非常好,仅仅高频率遗失了许多。但是它是对阳光照射的复原,因而遗失了高频率信息内容关联都不大。 假如把这2个阳光照射投影到球表面开展可视性化,便是这一模样: 可是的是网页页面上无法开展互动,因此只有主要表现出某一视角的阳光照射复原状况。 拥有上边这种试验的提前准备,大家便可以刚开始在具体的情景中运用球谐阳光照射,


联系我们

全国服务热线:4000-399-000 公司邮箱:343111187@qq.com

  工作日 9:00-18:00

关注我们

官网公众号

官网公众号

Copyright?2020 广州凡科互联网科技股份有限公司 版权所有 粤ICP备10235580号 客服热线 18720358503