引言
着色模型根据应用可以主要分为两大类:写实风格(photorealism)和风格化外观(stylized appearance)。
一、着色模型
着色模型描述了物体的颜色对于各种因素(如表面方向、视角、光照等)应该如何产生颜色变化。
着色模型通常包含一些属性来控制外观的变化。
以Gooch着色模型为例。该着色模型是非写实风格的着色模型,主要目的是提升工程制图领域的细节清晰度。其主要理念是对比表面法线和光源位置,同时收到视角影响。数学定义如下:
c s h a d e d = s c h i g h l i g h t + ( 1 − s ) ( t c w a r m + ( 1 − t ) c c o o l ) \mathbf c_{shaded}=s\mathbf c_{highlight}+(1-s)(t\mathbf c_{warm}+(1-t)\mathbf c_{cool}) cshaded=schighlight+(1−s)(tcwarm+(1−t)ccool)
其中部分中间变量定义如下:
c c o o l = ( 0 , 0 , 0.55 ) + 0.25 c s u r f a c e , c w a r m = ( 0.3 , 0.3 , 0 ) + 0.25 c s u r f a c e , c h i g h l i g h t = ( 1 , 1 , 1 ) , t = ( n ⋅ l ) + 1 2 , r = 2 ( n ⋅ l ) n − l , s = ( 100 ( r ⋅ v ) − 97 ) ∓ \mathbf c_{cool}=(0,0,0.55)+0.25\mathbf c_{surface},\\ \mathbf c_{warm}=(0.3,0.3,0)+0.25\mathbf c_{surface},\\ \mathbf c_{highlight}=(1,1,1),\\ t=\cfrac{(\mathbf n\cdot\mathbf l)+1}{2},\\ \mathbf r=2(\mathbf n\cdot\mathbf l)\mathbf n-\mathbf l,\\ s=(100(\mathbf r\cdot\mathbf v)-97)^{\mp} ccool=(0,0,0.55)+0.25csurface,cwarm=(0.3,0.3,0)+0.25csurface,chighlight=(1,1,1),t=2(n⋅l)+1,r=2(n⋅l)n−l,s=(100(r⋅v)−97)∓
其中常见的数学操作:限制操作 ∓ \mp ∓,如限制高光混合因子取值范围;点乘操作,对于单位向量来说,可以直接计算两个向量的夹角余弦,可用于计算光线与法线夹角等;线性插值操作,在着色器内置函数中很常见,如lerp
或mix
等。 r = 2 ( n ⋅ l ) n − l \mathbf r=2(\mathbf n\cdot\mathbf l)\mathbf n-\mathbf l r=2(n⋅l)n−l是用于计算光线 l \mathbf l l对于 n \mathbf n