首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微面模型α(粗糙度== 1)的最大值是如何确定的?

微面模型α(粗糙度== 1)的最大值是如何确定的?
EN

Computer Graphics用户
提问于 2021-09-04 05:36:46
回答 1查看 193关注 0票数 2

最近,我一直在研究pbrt,并且正在研究它们从粗糙度到\alpha值的重新映射:https://github.com/mmp/pbrt-v3/blob/master/src/core/microfacet.h#L86

我了解到,在粗糙度值和\alpha值之间使用一些非线性重映射来使粗糙度在感知上线性和在[0, 1]范围内的变化是很常见的。在我看来,这个函数看起来可能是函数的某种多项式近似:

\alpha = 1.62142\cdot\sqrt{roughness}

(这是一个显示匹配的Desmos链接--如果有人知道这是否正确,并且也知道他们是如何得出这个近似的,我很想知道,因为这看起来不像是标准的Taylor级数展开)如果这是正确的,它似乎是一个相当标准的重映射,使用\alpha的平方来获得粗糙度值,并确保\alpha的最大值(在本例中是1.62142)以粗糙度的形式传递给1

我真正好奇的是,如何选择1.62142的最大值。在pbrt中,\alpha = \sqrt{2}\cdot(RMS slope)

https://pbr-book.org/3ed-2018/Reflection_模型/微面_模型#eq:贝克曼-各向同性

这意味着最大的均方根斜率是\approx 1.14652。这似乎是一个非常具体的数值,最大粗糙度-这个限制是从哪里来的?据我所知,RMS斜率有无穷大的界限--是否有某种物理上的原因来限制它,或者它们所遵循的某种标准?

EN

回答 1

Computer Graphics用户

回答已采纳

发布于 2021-09-04 17:01:19

事实上,\alpha没有数学最大值。正如您注意到的,microfacet斜率是无界的,所以原则上您可以有任意大的斜率值,因此可以有任意大的\alpha。这没有什么不对的--微面模型的数学一直工作得很好。

作为一件实际的事情,在某个特定的点之外,你并没有看到随着\alpha的增加,表面的外观发生了很大的变化。随着粗糙度的增加,镜面的高光变得更加宽广和柔和,直到表面看起来本质上是兰伯人。

我不知道值1.62142的起源或者那个特殊的粗糙度重映射曲线,但我猜想最大\alpha主要是为了给出一个视觉上有用的粗糙度值范围,最大值大约在它变得与漫射表面无法区分的点上。由于这是一个模糊的审美判断,可能没有意义的确切价值。

此外,从PBR的角度来看,典型的BSDFs只模拟单个散射(没有微面间的相互反射),但随着粗糙度的增加,多次散射对表面形貌的影响更大。因此,在某些高\alpha点,模型的精度会崩溃,并且不再是基于物理的,除非你在BSDF中加入了多次散射。具有复杂微观几何的材料也可以更好地用体积微片状分布来模拟,而不是(或除了)表面BSDFs。

票数 1
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/12168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档