2019独角兽企业重金招聘Python工程师标准>>>
球面谐波是编码的一种方法。
你可以在一个点或者IBL(image-based lighting)上进行环境光遮蔽(DO,directional occlusion)编码。然后利用它们做叠积运算估算光在那一点上的作用(这个卷积会“移除”封闭光)在计算方面来说是比较便宜的。这两项的球面谐波表现将只包含广泛弥漫性的项,而不是像一个标准环境贴图的高细节。这些光和闭合的数学表现是令人难以置信的有用而且(闭塞部分)可以被认为是“定向环境光遮蔽”。
另一种看待SH的方式是它是一种在球体上(这可以是入射光、闭合或者其他类型的数据)按照其频率表现编码图像。理论上,你可以利用无限频段呈现任何分辨率。但是一般来说,只有开始的几个频段有被使用到。
总的来说,球面谐波:
l 是球体上的图像展现(像立方体贴图但又不是立方体贴图);
l 是一个频率-空间表现(傅里叶转换但是针对图像数据的等效球面);
l 致力于一组频段或者索引—越多频段或者级别越多细节,但是每个额外的频段都是有用的。
SH也有一些非常好的特性:
l 持续、旋转恒定——它们是独立的相机视图;
l 没有锋利的边缘,没有“凹凸不平”—无缝、在低水平或频段没有突然弹出;
l 对矢量单位来说容易操控,无论是假发还是乘法;
l 非常紧凑—最初的N频段即使在接下来没有任何频段也可以非常有用;
l 解决方案通常用于缓存。
在计算机图形学中,球面谐波是光照信息的载体。这是通过在SH文件进行第一次预计算某些数据完成,然后在渲染过程中诠释此信息。
一旦你把光数据转换成球面谐波,你会得到一组数值或者权数。球面谐波数据上的数学是非常简单的,可以使用的基函数是正交的——这意味着它们是正交的单位矢量(即两个SHs的添加,一个增加了它们的“权数”)。
SH在游戏中用于漫射光。在游戏中SH的表现非常好,因为它提供了流畅的效果以及储存极少(SH并不是什么储存极大的文件)。如果你只有几个数值,你可以加入一些儿不会导致任何明显的不连续性。但在游戏领域的水平或索引存储的水平低于高端渲染。有些游戏会使用相比于高端渲染的低质量SH数据水平,因为游戏引擎有主要的实时与内存限制而大量高端渲染则没有。但是有些游戏使用三个频段——像WETA的电影流程一样(但是WETA的团队会在流程里更多的点或者地方使用它们)。(转自网络)