完美镜的画法很简单,
如在http://www.pbr-book.org/3ed-2018/Reflection_模型/光谱_反射_和_Transmission.html
正如几篇文章所示,微面片的粗糙度可以定义为零,那么它们就应该能够代表一个完美的镜子。但我不能把它们导出到正确的、完美的地方。
例如,当我将零粗糙度放入GGX模型时,(https://www.graphics.cornell.edu/~bjw/microfacetbsdf.pdf )
D(m) = D(H)除以0,G仅为1。不过,我得到的是,
绘制方程是,
如果这是正确的,\frac{D(H)G(L,V,H)}{4|N\cdot V|}应该是一个狄拉克δ函数。但我不这么认为。
我哪里错了?我怎样才能从微面片中得到完美的镜子呢?
我的结论是,库克-托伦斯的画笔不能代表一个完美的镜子。当H,\neq,N,即使粗糙度为零时,方程有一些小值大于零。因此,不应删除归一化因子4|N\cdot V|。
如果我错了就纠正我。
发布于 2019-05-07 06:24:24
如果这是正确的,\frac{D(H)G(L,V,H)}{4|N⋅V|}应该是一个狄拉克δ函数。但我不这么认为。
实际上,你已经接近了你的答案--你只是想找出最初假设是什么--如果你说的是镜面BRDF。术语F\frac{DG}{4|N⋅V||N⋅L|}只起作用,如果你从前提条件开始,你处理的是一个完美的镜子,否则这将是一个积分本身。看看小厄尔·哈蒙( explains .)的GGX+SmithMicrosurfaces漫射照明,这里解释了如何到达镜面的BRDF。特别是看一看幻灯片29:
因此,完美的镜子是您的模型在开始的^1-但只为镜面BRDF!
如果你想看到,如果把漫射的BRDF包含到你的BRDF中是一个完美的镜子,那么这个假设不再成立,因此你没有diracδ函数。
^1注意到他说一个微面是一个完美的镜子。但是,如果您的所有微面都是完全对齐的,那么您的微几何“等于”您的宏几何。
发布于 2022-11-23 06:59:09
实际上,我偶然发现了同样的问题。我想我已经在pbr书中找到了解决方案:https://www.pbr-book.org/3ed-2018/Reflection_模型/微面_Models#TheTorrancendashSparrowModel
基本上,据我所知,完美镜子的推导(没有壁画和几何术语)是这样的:
然而,关键的细节是分布函数D(\omega_h)=\delta(\omega_h)是\omega_h的函数,但是集成发生在\omega_i上。根据pbr书中的公式8.17,
,对于在完美镜像上集成的情况,\theta_h=\theta_i=\theta_o,本质上意味着d\omega_i=4 \cos(\theta_o)d\omega_h。
现在,最后替代这个d\omega_i并在\omega_h上进行本质上的集成,我们得到:
这是因为D(\omega_h)是\omega_h的函数,而不是\omega_i的函数。但是,可以通过以下“额外”术语将其中一个转换为另一个:d\omega_h=\frac{d\omega_o}{4\cos(\omega_h)}
https://computergraphics.stackexchange.com/questions/8820
复制相似问题