导图社区 作色Shading思维导图
这是一篇关于现在图形学基础作色Shading的思维导图,内容包括物体反射光的三部分、模型特点、漫反射分量、高光分量计算、环境光分量、组合效果。
几何是研究空间结构及性质的一门学科,它是数学中最基本的研究内容之一,与分析、代数等等具有同样重要的地位并且关系极为密切。本图梳理了现在图形学基础几何的知识点有隐式表示、显示表示、曲线的知识内容。
光栅化是把顶点数据转换为片元的过程,具有将图转化为一个个栅格组成的图象的作用,特点是每个元素对应帧缓冲区中的一像素,下图讲述了光栅化的相关内容,希望梳理的内容对你有所帮助!
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
Blinn-PhongReflection
将物体反射的光分成三部分
漫反射(Diffuse reflection)
高光(Specular highlights)
环境光(Ambient lighting)
模型特点
仅仅是个经验模型,可以非常好地近视出物体表面光
算每个点的光时,输入有
1.观察方向(viewing direcion) v
2.表面法线(surface normal) n
3.光照方向(light direction)l
4.表面参数(surface paramaters) 如color,shinness,....
Shading is Local!!!(shading ≠ shadow)
整个模型中没有反应出影子的效果
注意看模型是没有阴影的
漫反射(Diffuse reflection)分量
0.既然是漫反射,从不同的角度观察,光强应该是一样的 所以和观察方向没有关系!!!
1.表面越是正对着光 该表面吸收的光就越多 光的强度跟n和l夹角的余弦成正比
图示
2.将光认为是匀速传播的 那么对于点光源,光传播就像一个不断扩大的球面 由于能量守恒,球面表面积乘以光强度始终不变!!! 所以可以认为光照强度跟距离的平方成反比
漫反射分量为
kd为漫反射系数 也就是 颜色!
夹角大于180的点,我们认为光为0 所以光源跟法线夹角大于180表示黑暗
高光(Specular highlights)分量计算
高光部分出现在(接近/发生)镜面反射的地方 也就是观察角度方向v正好是光的镜面反射方向R时
也就是发生在v和R方向特别接近的地方
“v接近镜面反射方向R”和“半程向量方向接近法线向量n”等价
半程向量
高光反射分量为
ks是specular coefficient
p是高光次数
仅仅用cosα不足以过滤出高光位置
通常高光系数取100~200左右
用快速幂可以简化运算次数
环境光分量(Ambient Term)
简单认为环境光是个常数而已
组合效果
采样和重心坐标
采样频率
Flat shading(逐面)
每个面对应一个法线
三角形面是平的 所以只有整个三角形只有一个法线方向
得不到平滑的表面
Gouraud shading古罗着色(逐个顶点)
每个顶点对应一个法线
法线运算:对顶点相邻的法线取平均值
通过插值运算,根据三角形的顶点,将颜色算出来
Phong shading冯着色(逐像素)
每个像素对应一个法线
通过重心坐标插值(Barycentric interpolation)来计算每个像素的法线!!
通过插值运算,根据三角形的顶点,将法向量算出来
重心坐标(Barycentric Coordinates)
三角形内的任一点可以表示为三个点的位置乘以相应系数之和 这三个点的系数的组合就是该点重心坐标
中心坐标和切分出来的小三角形面积成反比
标注
几何中心的重心坐标正好是(1/3,1/3,1/3)
根据点坐标计算重心坐标
公式
然而投影前后的重心坐标可能会发生改变
所以要先算重心坐标,再做投影运算
Texture
像素和纹素
理想状态下,我们希望像素和纹素是一对一的,一个像素对应纹理上的一个纹素 然而通常来说这是不可能的!
贴图过小
当多个像素都对应到同一个纹素
不同的插值方法
双线性插值(bilinear) (进行了两趟,共三次插值运算)
bicubic需要用到附近的16个像素,原理类似
贴图过大
当一个像素对应到多个纹素时
问题
摩尔纹
理想情况
如果只用点取样会出的问题
MipMap
为原贴图生成一系列更小的图
怎么计算一个像素在哪个MipMap的Level呢?
根据该像素和上边,右边像素(也可以去上下左右四个像素)的纹理坐标计算出 一个像素距离对应于纹理坐标的多少个像素
如果1个像素对应于2^D个像素,那么就应该用Level D的MipMap作为取样的纹理!
算出像素Level以后,再进行三线性插值(Trilinear Interpolation)
图
一共进行了七次线性插值
Anisotropic Filtering各向异性过滤
MipMap的问题在于MipMap登记过大时会出现过于模糊的情况
可以处理好轴对齐的情况
仍然处理不好对角线的情况
EWA filtering
多次取样,加权平均 仍然使用MipMap层次 可以处理不规则情况
纹理的应用
本质上是用于记录和查找随着点不同而不同的属性
环境光
通常都是认为环境光来自无限远处,用以简化计算
Spherical Environment Map
Cube Map
Bump Mapping
在不需要增加额外三角形的情况下,为表面添加细节信息
通过修改各个点的法线向量实现
因为法线和这张贴图的颜色梯度有关
实际上是法线和光线夹角以及观察方向夹角发生变化
以二维为例
p点的导数是dp=c[h(p+1)-h(p)] 切线方向垂直的就是法线方向n(p)=(-dp,1).normalized()
三维的情况
Displacement mapping
3D Procedural Noise
Precomputed Shading
3D Textures and Volume Rendering