镜面术语 (Blinn-Phong)
- 光线的强度取决于反射方向,当
v
⃗
\vec{v}
v
越接近
R
⃗
\vec{R}
R
时,光线越强。
-
那 I ⃗ \vec{I} I 与 v ⃗ \vec{v} v 的两者相加做平行四边形法则得到单位化后的 h ⃗ \vec{h} h 。比较 h ⃗ \vec{h} h 与法线 n ⃗ \vec{n} n 的夹角:
-
如果不计算 h ⃗ \vec{h} h ,直接一把梭哈 v ⃗ \vec{v} v I ⃗ \vec{I} I 两者,这样是不是也可以。
- 是可以,这种方法叫做Phong 方法
- 使用 h ⃗ \vec{h} h 的方法是其改进版,称之为 B l i n n − P h o n g Blinn-Phong Blinn−Phong 方法。这样可以减少一些复杂运算
-
什么要使用 p p p呢,如果不使用 p p p,则当两者相差$45^{o} , 但 是 ,但是 ,但是cos$值还是很大
-
随着 k s k_s ks 与 p p p 的变换,高光变换:
环境光照
-
环境光照着色不取决于任何物体:
-
这里做一个大胆假设,后面课程会对该模型进行修正:
-
假定环境光照
把三种光照方式相加起来
-
-
着色频率
如图:
着色频率。第一个选择一个大多边形,第二个选择一个三角形,内部使用插值方法,第三个对每一个像素进行着色。
-
Flat Shading
-
Gouraud Shading
-
Phong shading——这里指的是着色频率,之前光线反射。Phong这个大牛天妒英才,wc。
-
三种形式的对比
-
如果模型足够复杂,着点也可以起到一定效果。当然,计算机量方面,着像素不一定比着三角形大。
定义顶点的法线向量
- 如果从一个几何图形中得到一个点的法线向量
-
使用点周围的平面法向量的加权得到该点的法向量
- 如果知道了两个点的法向量,那么确定该边其他点的法向量:
- 不断插值平滑过渡,但是需要单位化变成单位向量
图形(实时渲染)管线
- 流程(这个操作已经在显卡中写好了):
-
为什么要定义三角形?
- 在空间中连接点点形成三角形,这样的话,可以保留的空间信息。投影到2D平面时,三角形的信息还在。
-
每一个步骤细节体现:
-
整个实时渲染界都是在处理
顶点处理
像素处理
这一方面,可以在这两个阶段进行编程自定义。这部分代码就叫做Shading
。 -
如何让三角形显示出以下图片样式,这就叫做纹理映射
-
使用Shade 编程
- 不需要特意使用对每个像素着色
- 如果对顶点操作,叫做顶点shader、如果是对像素,就叫做像素shader
- 使用两个全局变量 一个是质地、一个是光照方向。漫反射的简单实现。
计算机硬件可以快速处理大量的场景的三角形。
现在很多游戏引擎都已经处理好了计算机图形学的内容,我们可以更多的关注编程场景、游戏开发。
纹理映射
在图片中不同位置物体的属性,不同点不同的物理属性:
三维物体的表面是二维物体,这一可以和一张图建立映射关系。三维表面映射到二维平面图片上,这个过程叫做纹理映射。
如何把空间的三角形映射到纹理上,这不是我们处理的事情,这是美工处理的事情。我们直接可以知道不同纹理映射到不同的三角形上(物体的坐标)。
纹理上有坐标系,使用三维图片铺展开平面。无论如何,(u,v)的坐标都大于0
纹理不止是使用一次,还可以“复制粘贴”
纹理无缝衔接,高度合成。如果不能无缝连接的话,也可以考虑插值连接。
纹理是着色的时候不同点的属性