我正在尝试实现 Microfacet BRDF 着色模型(类似于 Cook-Torrance 模型),但我在使用本文中定义的贝克曼分布时遇到了一些问题:https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf
其中 M 是微面法线,N 是宏面法线,ab 是 [0, 1] 之间的“硬度”参数。
我的问题是,这种分布经常返回非常大的值,特别是当 ab 非常小时。
例如,贝克曼分布用于计算根据以下方程生成微面法线 M 的概率:
概率必须在范围 [0,1] 之间,那么如果贝克曼分布给出的值大小超过 1000000000+,如何使用上面的函数获得此范围内的值呢?
那么有没有合适的方法来限制分布呢?或者我误解了它或概率函数?如果值超过 1,我曾尝试简单地将其限制为 1,但这并没有真正给出我想要的结果。
我也有和你一样的问题。
如果你读过
http://blog.selfshadow.com/publications/s2012-shading-course/hoffman/s2012_pbs_physicals_math_notes.pdf http://blog.selfshadow.com/publications/s2012-shading-course/hoffman/s2012_pbs_physics_math_notes.pdf
and
http://blog.selfshadow.com/publications/s2012-shading-course/hoffman/s2012_pbs_physicals_math_notebook.pdf http://blog.selfshadow.com/publications/s2012-shading-course/hoffman/s2012_pbs_physics_math_notebook.pdf
你会发现这是完全正常的。引用链接中的内容:
“贝克曼 αb 参数等于 RMS(均方根)微面斜率。因此,其有效范围是从 0 开始(不包括 –0 对应于完美镜像或狄拉克 delta,并导致贝克曼公式中除以 0 错误)直至任意高的值。值 1 没有特殊意义 – 这仅意味着 RMS 斜率为 1/1 或 45°。(...)"
还有另一句话:
“微面方向的统计分布是通过微面正态分布函数 D(m) 定义的。与 F () 不同,D() 的值不限于 0 到 1 之间——尽管值必须是非负数,但它们可以是任意大(表示法线指向特定方向的微面的浓度非常高)。(...)"
您应该在 google 上搜索 Self Shadow 的基于物理的着色课程,其中充满了有用的材料(每年都有一篇博客文章:2010、2011、2012 和 2013)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)