usuiforhe 3 年 前
コミット
fbaf57056d

BIN
图形学/Image/39.png


BIN
图形学/Image/40.png


BIN
图形学/Image/41.png


BIN
图形学/Image/42.png


BIN
图形学/Image/43.png


BIN
图形学/Image/44.png


BIN
图形学/Image/45.png


BIN
图形学/Image/46.png


BIN
图形学/Image/47.png


+ 95 - 1
图形学/图形学.md

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-10-01 11:33:27
- * @LastEditTime: 2022-02-22 01:07:45
+ * @LastEditTime: 2022-02-23 01:17:38
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: D:\MarkdownLog\图形学.md
@@ -1102,7 +1102,101 @@ MSAA解决的对信号的模糊操作,只不过MSAA最后的出来的值也可
 
 ## 深度缓冲
 
+很多三角形叠在一起的时候,怎么处理?
 
+要让离摄像机近的物体遮挡远处物体,通过深度缓冲,也叫Z-Buffer
+
+1. 画家算法
+
+先画远处的面,再画近处的面,一层一层的覆盖
+
+需要先对所有的三角形面片进行排序,时间复杂度 $O(n\log _2n)$
+
+![](./Image/39.png)
+
+画家算法无法解决这种互相遮挡的关系
+
+2. Z-Buffer
+
+对单独的三角形面片无法排序,那么直接对单个像素进行处理,保证单个像素所存的是其看到的几何物体的最浅的深度信息,即**深度图**,**深度缓存**
+
+![](./Image/40.png)
+
+左边为渲染出的图片,右边为深度图
+
+> 深度图中,越近越黑,越远越白
+
+![](./Image/41.png)
+
+图中每个格子表示一个像素,先来了个一个三角形深度都是5,R表示无限大,则5比无限大小,可以覆盖;然后来了个新的三角形,根据深度信息进行覆盖操作
+
+一般而言,n个三角形,每个三角形覆盖常数个像素,那么最终时间复杂度只是$O(n)$
+
+## 着色
+
+shading,引入物体的明暗的不同,颜色的不同,**对不同的物体应用不同的材质的过程**
+
+### Blinn-Phong反射模型
+
+- 反射
+  - 高光
+  - 漫反射
+  - 间接光照
+
+![](./Image/42.png)
+
+- 定义
+  - 在局部,比较小的范围内,物体表面是一个平面(无论物体长什么样)
+  - 定义垂直于平面的法线n
+  - 摄像机的观察方向v
+  - 看向光源的方向l
+  - 颜色color
+  - 光的亮度 shininess
+
+> 所有的方向都是单位向量,只表示方向
+
+#### 漫反射
+
+![](./Image/43.png)
+
+> 暂且只讨论某一个点的着色,也就是只考虑光照的方向,而不考虑照向这个点的光是不是被挡住了
+
+![](./Image/44.png)
+
+同一束光照,当紫色物体旋转时,其单位面积接收到的光变少,导致其变暗
+
+任何一个着色点周围单位面积能接受到多少光照,与光线的角度成一定关系,从而引出Lambert's定律:接受到的光照与l和n的余弦(上图中的 $\cos \theta$)成正比
+
+> 带入现实,一个是太阳能板,被照射面积越大热得越快;一个是四季,夏天是被太阳光直射
+
+![](./Image/45.png)
+
+对于一个光源,某一瞬间,其发出的能量是固定的,而伴随着光线的传递,其蕴含的能量也逐渐分散(球壳,而不是圆形)
+
+此时定义距离为1是,光线强度为**I**,当距离为r,则光纤强度为 $\frac{I}{r^2}$,通过这个式子可以算出当前传播到着色点的光照强度
+
+通过上面两个公式,可以得到着色点(Shading Point)的光照强度、多少光会打在着色点上,得到计算式子
+
+$$
+L_d = k_d(I/r^2)max(0, n \cdot l)
+$$
+
+- 上面的数学表达式就是**漫反射**的表示方法
+  - $k_d$漫反射的系数,表示这个点吸收多少能量(类似物体吸收所有颜色就是黑色,不吸收所有颜色就是白色的物理规律)
+  - $I/r^2$ 到达着色点的能量
+  - $max(0, n \cdot l)$ 接收了多少能量
+
+> 为什么是$max(0, n \cdot l)$ ,$n \cdot l$也就是$\cos \theta$可能为负数,因为光线可能从物体下面往上发射,而这种光不具备物理意义(这里只讨论发射,不讨论折射) 
+
+漫反射的物理规律就是看一个物体无论从什么角度看都是一样的,而上面的$L_d$式子刚好与观察方向v没有任何关系
+
+![](./Image/46.png)
+
+通过前面的解释,可以清楚的了解为什么这个球是渐变的,从亮变灰再变黑
+
+![](./Image/47.png)
+
+通过定义$k_d$颜色系数,可以定义该物体整体上的明暗
 
 # 几何