5. 反射模型1

上一章我们介绍了表面反射公式,这一张我们介绍具体的反射模型。来自许多表面的散射最好的描述是多个BRDF和BTDF的空间混合。
表面反射模型实际上可以来自于很多资料:

  1. 测量数据:许多现实世界的表面的反射分布属性都在实验室中被测量了。这些数据可以直接以表格形式使用。
  2. 现象学模型:用公式来模仿现实世界物体表面的定性特性。这种类型的BSDF非常容易使用
  3. 模拟:有时候表面组成的底层信息可以获取到,例如我们知道颜料由带颜色的附着于某些介质的粒子组成,每种粒子的反射特性我们可以知道。这种情况下我们可以模拟微观层面的光散射来模拟产生反射数据。这个过程既可以在渲染过程完成也可以作为预处理。
  4. 物理光学:这是计算复杂度相当高的一种方法,将光当作波来看待,计算麦克斯韦方程求解。并且未必比集合光学效果更好
  5. 几何光学:如果知道了表面的底层散射和几何属性,反射模型可以直接从描述中构造出来。几何光学使得光和表面的交互可追踪,许多情况下都是非常好的选择。之前我们介绍的公式都是基于几何光学建立的

光线追踪算法中一般的着色过程是:对于每条光线,找到其最近的和物体相交的点。然后找到物体上该点的表面属性(例如材质)来确定该点的BSDF。然后我们利用之前介绍的积分公式使用BSDF基于输入光照来计算该点的散射光。

基本术语

为了能够比较不同反射模型的视觉效果不同,我们这里介绍一些描述表面反射的基本术语。
表面反射可以分为四个大类别:漫反射(diffuse),光滑镜面反射(glossy specular),完美镜面反射(perfect specular
以及复古反射(reto-reflective)。与下图所示分别对应。大多数现实表面都是上述四种类型反射的混合。

  1. 漫反射所有方向都均匀散射光。理想的漫反射表面几乎不存在,但是诸如无光泽的黑板和无光油漆都可以看做近乎理想的漫反射(考虑一下黑板不管从哪个方位看基本颜色几乎都是一样的(不考虑高光等))。
  2. 光滑镜面表面(包括塑料制品或者高光泽度涂料)会在一组反射方向散射光,因而会显示其他物体的模糊反射。(因为某个视角看过去光可以来源于多个输入方向的光来源,也就是多个物体的表面可以在同一个观察点被观察到,这就带来了模糊。实际上这个我的理解和采样是一样的。当对一个像素点进行采样的时候,一个像素点的像素值来源于就会来源于多个物体。所以一个像素点的值可以认为是多个物体表面的混合值。但是当像素点足够小的时候,这种模糊效果也足够小。当像素点大的时候(分辨率很低),这种模糊效果就很明显了)。当然,采样和这种光滑镜面反射带来的模糊本质上还是有点区别的。单个人觉得有很多相似点。
  3. 完美镜面表面在一个反射方向散射输入光。镜子和玻璃都是完美镜面表面的例子。
  4. 复古反射包面诸如丝绒或者月球表面,他们会将大部分光延沿着输入方向的周围反射。

在这里插入图片描述
给定一类特定的反射,反射分布函数可以是各向同性或者各向异性。大多数物体都是各向同性的。各向异性的表面包括刷过的金属,多种衣服以及光盘,他们表面某点反射的光随着该点位置的不同而不同。

几何设置

我们采用反射坐标系来计算反射。
在这里插入图片描述
上图中s,t是和表面相切的向量,n则是和表面垂直的向量。他们分别和x,y,z轴对齐,组成了单位正交基。世界坐标系下面的方向向量 ω \omega ω首先转化到该坐标系下面,然后再进行BRDF和BTDF的计算。该反射坐标系也可以成为着色坐标系。
着色坐标系可以方便表达球形坐标的方向 ( θ , ϕ ) (\theta,\phi) (θ,ϕ)。给定该坐标系下面的方向向量 ω \omega ω,其与法向量n的夹角的余弦值为:

cos ⁡ θ = ( n ⋅ ω ) = ( ( 0 , 0 , 1 ) ⋅ ω ) = ω z \cos\theta=(\boldsymbol{n}\cdot\omega)=((0,0,1)\cdot\omega)=\omega_z cosθ=(nω)=((0,0,1)ω)=ωz
在此基础上我们可以轻松得到 sin ⁡ θ \sin\theta sinθ以及 tan ⁡ θ \tan\theta tanθ
类似的, ϕ \phi ϕ也可以轻松得到。如下图,
cos ⁡ ϕ = x r = x sin ⁡ θ \cos\phi=\frac{x}{r}=\frac{x}{\sin\theta} cosϕ=rx=sinθx
sin ⁡ ϕ = y r = y sin ⁡ θ \sin\phi=\frac{y}{r}=\frac{y}{\sin\theta} sinϕ=ry=sinθy
在这里插入图片描述

反射率

有的时候表达4D的BRDF或者BTDF比较麻烦,我们更愿意将他们降维到在一个单独方向上面的2D函数,甚至是一个可以描述所有散射行为的常量。
半球方向反射率(hemisphererical-directional reflectance)是一个2D函数,它会给出由于整个半球的常量光照引起的特定方向的反射。

p h d ( ω 0 ) = ∫ H 2 ( n ) f r ( p , ω o , ω i ) ∣ c o s θ i ∣ d ω i p_{hd}(\omega_0)=\int_{H^2(\boldsymbol{n})}f_r(\boldsymbol{p},\omega_o,\omega_i)|cos\theta_i|\mathrm{d}\omega_i phd(ω0)=H2(n)fr(p,ωo,ωi)cosθidωi

上式实际上就是rho,我的理解是reflectance hemisphere outogoing,即某个输出方向的半球反射率。需要注意以下几点:

  1. 这是个2D函数,如何理解2D呢??因为变量可以理解为就是输出方向,对应公式也就是只有一个 ω o \omega_o ωo。但是右边式子又需要 p p p点,所以该函数的输入是:起源于p点的方向 ω o \omega_o ωo,输出是这个方向上面的来自半球所有方向的光照造成的反射。
  2. 由于BRDF的互易性,rho也可以理解为来自某个特定方向的光导致的整个半球的反射。

还有一种情况就是给定 p p p点,但是不指定出射方向 ω o \omega_o ωo,这是另外一种反射率,我们称之为hemispherical-hemispherical reflectance 。它描述的是当来自所有输入方向的光一样的时候被表面反射的输入光的比率:

p h h = 1 π ∫ H 2 ( n ) ∫ H 2 ( n ) f r ( p , ω o , ω i ) ∣ cos ⁡ θ o cos ⁡ θ i ∣ d ω o d ω i p_{hh}=\frac{1}{\pi}\int_{H^2(n)}\int_{H^2(n)}f_r(p,\omega_o,\omega_i)|\cos\theta_o\cos\theta_i|\mathrm{d}\omega_o\mathrm{d}\omega_i phh=π1H2(n)H2(n)fr(p,ωo,ωi)cosθocosθidωodωi

如何理解rho呢??

  1. 这是一个反射率,当给定反射方向的时候,这个反射率沿着该反射方向的能量和整个半球的输入能量的比值。当没有给定反射方向的时候,这个反射率是整个半球的所有反射方向和所有入射方向的光的能量的比值。
  2. 当rho为1的时候,可以认为是没有任何能量损耗的反射
  3. 一般用蒙特卡洛积分来求解rho的积分。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
地面反射模型是用来模拟地面对入射光的反射过程的数学模型。通过该模型,我们可以预测地面表面在不同入射角度和入射光强度下的反射效果。 在matlab中,我们可以利用光学原理和几何关系来建立地面反射模型。首先,我们需要确定地面表面的材质属性,例如反射系数和折射系数等。 其次,我们需要确定光源的位置和光强度,以及观测者所处的位置。通过入射光的入射角度和光强度,我们可以计算出反射光的角度和光强度。 然后,利用光的反射定律和能量守恒原理,我们可以计算出地面对入射光的反射效果。具体的计算方法可以采用菲涅尔公式、洛伦兹-洛伦兹方程或其他适用的模型。 最后,我们可以将模型的结果用图形进行展示,以直观地观察地面反射的效果。利用matlab中的图形绘制函数,可以将反射光的角度和光强度用图像表示出来,从而更好地理解地面反射过程。 需要注意的是,地面反射模型需要考虑一些实际情况,例如地面的粗糙度、不均匀性和光源的光谱分布等。这些因素都可能会对地面反射效果产生影响,因此在建立模型时需要进行合理的假设和参数选择。 总之,地面反射模型是一种用于模拟地面对入射光的反射过程的数学模型。通过在matlab中建立模型,我们可以计算和显示地面反射的效果,从而更好地理解和利用光的反射特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值