美文网首页
Normal Distribution Function是如何定

Normal Distribution Function是如何定

作者: wangchi | 来源:发表于2019-05-02 10:26 被阅读0次

[原文](http://www.reedbeta.com/blog/hows-the-ndf-really-defined/

Normal Distribution Function(NDF)是BRDF中重要的一项。他用统计的方法描述了表面微观形态的微面元的分布。NDF必须满足一定的条件。

NDF是一个函数,宽泛来说,是微面元与某个特定方向对齐的似然(the likelihood of a micro-facet being aligned in a particular direction)。在BRDF中,他作为一个权重函数去缩放整体反射的亮度,但是NDF是表面的基本几何属性,和光的反射没有必然关系。

既然他是一个关于方向的函数(function of direction),以及他的单位为1/sr(注,在eric heitz论文中,指出单位应为m^2/sr),似乎很自然的认为NDF是立体角上的概率密度。如果我们在半球空间中有个单位向量h, 以及一个小立体角d\omega_h(这个立体角代表了h附近的一系列方向(representing a set of directions around h)), 那么,一个微面元的方向落在d\omega_h中的概率为D(h)d\omega_h,其中D(h)为NDF。

既然,微面元法向一定落在半球空间中的某处,那么半球空间中NDF的积分应该等于1:

\int_\Omega D(h)d\omega_h = 1

看起来很简单,right? 如果你用一个标准的NDF,比如Blinn-Phong,Phong,Beckmann,GGX等放进这个积分,结果不会是1. 比如,对于粗糙度m=0.5的Beckmann分布,积分为1.113.

对于一个归一化(normalised)的NDF,正确的形式应该是:

\int_\Omega D(h)(n \cdot h)d\omega_h = 1

这下,计算应该是正确的了。

如果你读过很多BRDF和radiometry的文献,你就会知道(n \cdot h)代表了投影面积(projected area),确实,它代表了宏观表面面积(法向n)和微面元面积(法向h)之间的转换。

image

如果dA_h是法向为h的微面元,其投影到宏观表面的区域为dA,那么dA=(n\cdot h)dA_h

因此,似乎NDF不是立体角上的概率密度了;他和面积也有关系--事实上,两个不同面积的度量:宏观面积和微观面积。那他到底是什么?

介绍GGX的那篇论文,Microfacet Models for Refraction through Rough Surfaces,给出了答案,NDF遵循如下公式:

dA_h=D(h)d\omega_hA

其中,A是一组宏观表面上个一个小块(patch),这个小块很小,小到足以认为平滑,但是比微面元大很多。dAA中,所有法向量在d\omega_h的微面元的总面积。

从这个角度看来,NDF根本不是概率密度,它是在宏观面积和立体角的联合域(joint domain of macro-area and solid angle)上,微观面积的密度(density of micro-area)。 面积单位消去了,因此NDF的单位,仍然为1/sr,但是,它涉及了面积,这需要正确的理解。

归一化条件可从上面的等式中推导,可得:

\frac{1}{A}\int (n\cdot h)dA_h = \int_\Omega D(h)(n \cdot h)d\omega_h

左边部分的积分是在小块(patch on macro-area)上所有微面元的面积上进行的,右边部分的积分是在半球空间的立体角上进行的。如果,我们需要等式等于1,那么相当于,我们需要所有微面元的总共的投影面积等于宏观表面那一小块(patch)的总面积。换句话说,有足够多的微面元去覆盖宏观表面。NDF的归一化条件,保证了一致性。

Walter 给出了一个更强的条件,对于任何方向v,应有:

\int_\Omega D(h)(v \cdot h)d\omega_h = (v \cdot n)

归一化条件也是这个等式的特殊情况,即v=n。更通用的条件保证NDF与“微表面为流型”的一致性,不仅仅是三角形soup(triangle soup)。微表面的边界必须和宏观表面的边界相匹配。(作者不确定是否,一个NDF可以满足归一化条件,但是对于某些v无法满足流型条件)

作者假设微面元法向总是在上半球空间,这一条件与流型条件一起,使得微表面成为一个高度场(heightfield)。这一条件很方便,但是不是必须的。对于一个场景的3D微表面,仅仅扩展其积分从半球空间到整个球面空间。注意,所有的点乘都是未clamped,许多标准的NDF,例如Blinn-Phong,Beckmann,GGX在反法向半球空间内,数值都为0.

所以,NDF不仅仅是微面元的法向在立体角上的概率分布,它需要n\cdot h进行归一化。

相关文章

网友评论

      本文标题:Normal Distribution Function是如何定

      本文链接:https://www.haomeiwen.com/subject/rclvnqtx.html