返回

计算机图形学基础学习笔记-高级外观模型

非表面模型

参与介质(Participating Media)

例如云、雾等。

其中的小晶体、小分子等会吸收光、反射光等。

使用相位函数(Phase Function)来描述如何反射等。

渲染思路:

  1. 随机选择一个方向来反射
  2. 随机选择一个距离来传播
  3. 在每个反射点来连接光源进行着色

头发材质

Kajiya-Kay 模型

效果不是很好,只考虑了头发上的反射。

Marschner 模型

广泛应用,更进一步地考虑了光线透过头发。

但是这个模型不能很好地表现动物毛发。

这个模型将头发认为是有颜色的实心圆柱体。

但实际上头发中不是均一的某种物质,其中还有一个更小的圆柱体含有髓质。头发的髓质较少,但是其他毛发的髓质较多。

双圆柱模型

同上文描述,即考虑了髓质的存在。

颗粒(Granular)材质

例如盐、白砂糖、米、沙子等。

表面模型

半透明(Translucent)材质

例如玉石、水母等。

次表面反射

也就是,在材质内部反射,然后从某个方向离开表面。

BSSRDF:作为BRDF的延伸,决定了光从某个方向进来,某个点进来,某个方向出去,某个点出去时光照。也会改变渲染方程。

Dipole Approximation

通过在物体内部加一个虚拟光源来达到次表面反射的效果

布料

可以当做表面来渲染,用BRDF进行。

也可以当做参与介质来渲染,效果比当做平面要好,但是慢。

也可以直接暴力地将每一根纤维渲染出来,类似头发,效果好,速度慢。

有细节的材质

例如遍布金属表面的小划痕。

可以用法线贴图,以及微表面模型来渲染,虽然效果很好,但是十分的慢。

解决办法:在像素意义上使用BRDF。

有时候,物体表面反射出来的是各种颜色。例如照射一块铝片,反射出来的宏观上是银色,但是细细的观察会发现有很多不同的颜色。这需要波动光学的帮助。

程序化生成表面

不用纹理而是用一个噪声函数定义表面。

可以生成地形、木纹、铁锈等等。