赞
踩
有偏和无偏的光线传播:
之前做的路径追踪,利用了光路的可逆性,从相机开始产生路径,最后连接相机与光源。
但对于双向路径追踪来说,就需要把路径追踪这个概念拓展一下:
下图是同等条件下,做单向路径追踪和双向路径追踪的对比举例:
简单理解马尔科夫链:当前有一个样本,马尔科夫链可以根据当前样本,生成当前样本靠近的下一个样本,因此与之前的均匀采样不一样。
MLT使用了马尔科夫链蒙特卡洛方法(Markov Chain Monte Carlo, MCMC),给定足够的时间,能生成一系列以任意函数的形状为pdf的样本。而当采样的pdf与要积分的函数形状一致的时候,这时候的variance最小,效果最好。
对于任何未知的函数,都可以使用马尔科夫链方法生成一系列的样本,使得这些样本分布,就是和这些被积函数形状一致。
对应在光路上是一个局部方法,当存在一条路径时,可以产生与该路径相似的路径。如下橙色与蓝色路径。
比如说蓝色的光路是我们已经找到的,在这个基础上对蓝色的光路进行一些扰动,各个交点都动一动,就会形成一条新的路径。通过不断地在周围产生新的样本的方法,最后就可以找出所有的path。
上图是BDPT和MLT的对比图,说一下MLT的优点:
再说一下MLT的缺点:
阶段一——光子追踪
从光源出发,会辐射出很多光子,光子往各个方向打出去,碰到物体也会做相应地反射或者折射或者其他操作,直到光子打到一个漫反射表面上停止。
阶段二——光子收集(最后生成)
从眼睛(或者说摄像机)开始,打出一系列地sub-paths,这些伴路径也是该反射反射,该折射折射,直到打到漫反射物体表面上。
阶段三——局部密度估计
从计算局部密度估计上就可以看出原因:
右边的ΔA与左边的dA本质上就不同,ΔA是根据具体的面积,而dA则是单位面积,所以正常情况下两边的公式不等。除非ΔA无限小,两边的公式才可能相等。
但当N取较小时,噪声大,N取较大时,会模糊。
如果将原先只打出大量的光子改成打出巨量的光子,同时N的取值不变,所以N个光子一定会覆盖更小的区域,但是结果多少有点糊。这时的ΔA就会更接近dA。
在渲染中有偏更容易理解的解释:
为什么不取一个固定的面积?
优点:
上图采用的是许多光源的方法,并不是真正的IR方法。
缺点:
下面是雾气介质:
下面是云介质:
云,雾等介质。光打过来会被小颗粒散射到四面八方。
那么怎么散射?
通常情况下我们认为碰到了diffuse表面上会进行均匀的散射。
散射介质有点像BRDF,但对于散射介质来说,相位函数(Phase Function)定义了散射的方式。使用相位函数描述参与介质中任意点x处光散射的角分布。
散射介质的渲染:
光线往某方向走多远取决于介质的吸收能力,遇到小颗粒会反射,在任何一点都可能改变方向,找到一个与光源相连的路径计算其贡献。
应用:
也是一种不是定义在物体表面上的材质。
上面有两种高光:
一开始人们研究毛发,采用的是简单的模型——Kajiya-Kay模型
将一根头发当成一根圆柱,所以当有一根光线打到圆柱上,会产生一个漏斗形的散射范围。
这才是一种现在广泛使用的模型。
上面这种模型考虑了光线打到圆柱上:
Marschner模型将头发当成玻璃材质的圆柱,头发当然可以扭曲,只是将局部当成直的。
Marschner模型应用:
上述步骤都是只针对一根头发,对于大量的头发的处理过程可想而知,光源在穿透完一根头发出来后又会进入其他头发中,所以头发的渲染是一项巨大的工程,需要进行巨量的计算。
不能使用人的头发渲染方法来渲染动物的毛。生物结构上不同。动物的毛的髓质多。
可以看出动物的髓质(Medulla)要比人类大很多。光线进去之后更容易发生散射。
所以根据上面的理论,又有人提出双层圆柱模型,这是考虑到髓质,并将其精准地描述出来的模型。
通过上图可以看出,相比于Marchner模型,多了两层:TTs和TRTs。
下图每一根毛发都是真实存在的,每一帧都渲染了很长时间。
我们能通过程序定义,避免所有颗粒的显式建模。
比如下图,远看是沙丘:
近看是颗粒:
这里翻译成半透明材质不太准确,准确来说,半透明是semi-transparent,translucent和半透明是有区别的,光线是可以在物体内部发生大量散射,再出射到别的方向去,并不只是沿着直线传播。
比如玉石地材质:
又比如说水母:
物理模型:
次表面散射:光线从一个点进入表面,在内部发生了大量散射,最终再出去。
BRDF的所有作用都发生在一个点上,而BSSRDF是由一个方向进来,但是可以从其他方向出去, 进来和出去的点不一定一样。渲染方程要考虑对表面其他地方进入的光线,要对面积进行积分。也就是BSSRDF对方向和面积均要积分。
下面是用两个光源近似表现次表面反射的效果。
布料材质:
有的东西渲染出来看着十分完美,反而显得不够真实。
真实的世界应该是下面那样,会有划痕,会有高光等等。
热水壶真实感对比:
使用200k x 200k的法线贴图(很大的贴图),给予每一个点不同的法线,会得到下面的效果:
亮片材质:
逐个追踪单根光线,很多光线并不能打到光源上,没有实际作用。
所以解决方法是考虑像素,一个像素会覆盖很多的微表面,如果能把微表面分布给拿出来,在一个范围内将这个微表面的法线分布算出来,就能替代原本光滑的分布,并且用在微表面模型里。
所以考虑一个像素覆盖了多大的范围,那就会法线很多神奇的发现分布,有些分布就会显示出统计学的概率;同样覆盖范围小,也会显示出一些独特的性质:
不是真正生成材质,用一定方式指导材质的生成,并且可以动态查询(不生成,随用随取)。通过加入噪声函数,在没有材质的情况下定义细节,,如下所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。