3D数学 学习笔记(8) 光照

来源:互联网 发布:ecu编程 编辑:程序博客网 时间:2024/05/22 12:08

3D数学 学习笔记(8) 光照

参考书籍:
《3D数学基础:图形与游戏开发》

⊗符号代表两个色彩“按位乘”。


标准光照方程

Clit = Cspec + Cdiff + Camb + Cemis

  • Clit:打开光照情况下计算颜色值的结果。
  • Cspec:镜面反射分量。
  • Cdiff:漫反射分量。
  • Camb:环境光分量。
  • Cemis:自发光分量。

需要考虑的因素:
- 材质属性。
- 表明法向量方向。
- 光源性质。
- 观察者位置。


自发光(emissive)

Cemis = memis
光照颜色值等于自身材质颜色值。


镜面反射(高光反射,specular)

Phong模型

所有向量都是单位向量。
- n:表面法向量。
- v:指向观察者。
- l:指向光源。
- r:l 对 n 镜像的结果,r = 2 ( n · l ) n − l 。
- θ:r 和 v 的夹角,可以用 r · v 计算得到。

r的计算方法:

  • mgls:材料的光泽度(gloss),一般是灰度值。控制“光斑”范围,值越小,光斑越大且平滑。下图从下到上,值越来越大。
  • mspec:材料的反射强度。控制“光斑”的强度,值越大,越光滑(越亮)。下图从左到右,值越来越大。
  • sspec:光源的镜面反射颜色。控制光的颜色和强度。

从下到上,mgls越来越大,从左到右mspec越来越大。最左列因为mspec为0,所以对光照不做任何贡献。

Blinn模型

h(halfway)为 v 和 l 的中间向量(类似对称轴)。


漫反射(diffuse)

是随机的反射光,不依赖于视点位置。光源位置是主要因素。镜面反射是物体表面完全光滑下的反射,而漫反射是物体表面粗糙造成的。

假设光之间距离相同,且表面有限,垂直射入的光线就会比斜着进入的光线多。

Lambert法则

  • mdiff:材料的散射色。
  • sdiff:光源的散射色,一般等同于光源镜面色sspec
  • n · l:法向量与光源夹角的余弦值,即角度越大,值越小。

环境光(ambient)

不涉及任何光源。
- mamb:材质的环境光,总是等于漫反射分量:纹理图。
- gamb:整个环境光值。


多个光源结合

  • 所有光源结合即可,环境光和自发光只有一个。

在计算顶点光照时,因为mdiff不是顶点级材质属性,可以假设mamb等于mdiff


着色模型

flat着色

逐多边形计算。一个三角形只计算一次,去三角形的中心。

Gourand着色

逐顶点插值计算。先通过顶点计算光照,再用于三角形面插值。

Phong着色

逐像素计算。


光源

  • 点光源(全向光、球状光,Point Light)。
  • 平行光(Directional Light、Parallel Light),没有位置和衰减。
  • 聚光灯(Spot Light),有高光区还有衰减区。常见圆锥形(手电筒)和四椎体形(电影放映)。

光的衰减(Attenuation)

现实世界中,光的强度反比于物体和光源距离的平方。

常用一个简单线性方程来计算衰减:dmin内,光强不衰减,dmin到dmax内,光强从1减到0,超出dmax则光强为0。


BRDF光照模型(Bidirectional Reflectance Distribution Function)

  给定入射光线方向和辐照度后,可以得到出射方向的光照分布。如果是对场景理想化和简化后的模型,称为经验模型。

原创粉丝点击