【图形学笔记】Lecture05-Shading 着色

Lecture05-Shading 着色

Shading:Definition

  • The process of applying a material to an object.把材质应用于物体的过程

Blinn-Phong 反射模型:

镜面高光(Specular highlights)、漫反射(Diffuse reflection)、环境光(Ambient lighting)

Diffuse Reflection 漫反射

光线均匀地散射到所有方向,从所有方向看到的颜色是相同的,但是明暗可能不同。

Lambert 余弦定律:

能量衰弱,平方反比定律——假设在距离光照中心距离为单位长度的位置,光照强度I ,则距离为 r 的地方的光照强度(intensity)应该是 I/r2 (能量守恒)。

漫反射光强

Ld=kdIr2max(0,nl)

其中 kd 是漫反射(diffuse)系数,如果是1 意味着完全反射了能量, 0 则对应完全吸收了(实际上可能对RGB分别设置系数)。

I 是源点的光强,n 是表面的法向量,l 是反射的向量(这里假设都是单位向量,因此点乘其实就是算余弦)。

Q:这个漫反射看着和 v 没什么关系?

A:确实,漫反射向四面八方反射的效果应该是一样的才对。

Specular Shading (Blinn-Phong) 镜面反射

接近镜面反射,通常意味着:反射方向和观察的方向很接近,进一步,意味着 I+v 和法线很接近

半程向量h=bisector(v,l)=v+l|v+l| (因为都是单位化的),镜面反射光:

Ls=ksIr2max(0,nh)p

ks 代表镜面反射(Spectacular)系数,p 通常会取到比较大的值(100到200)

Ambient Shading 环境光

大胆假设:任何点接收到的环境光是相同的!(?)那么很明显,环境光和位置、观测方向没什么关系,应该是一个常数!

最终

L=La+Ls+Ld=kaIa+kdIr2max(0,nl)+ksIr2max(0,nh)p

Shading Triangle Meshes 三角形网格着色

  • 给每个三角形着色(flat shading:平面着色)——对光滑的表面效果不太好
  • 给每个顶点着色(Gouraud shading )——颜色插值,每个顶点定义一个法向量
  • 给每个像素着色(Phong shading)——通过每个三角形,插值出法向量,对每个像素按照完整的着色模型计算。

Per-Vertex Normal Vectors

顶点的法向量怎么定义?和顶点相邻的面的法向量求平均:

必要时,加权(面积)平均效果会更好。

Per-Pixel Normal Vectors

重心插值,在下一个Lecture讲。

posted @   yoshinow2001  阅读(120)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示