计算机图形学入门 games 101 学习记录

games 101 学习记录

  • 学习笔记简介
    • 1.计算机图形概论
    • 2. 向量与线性代数
    • 3. 二维与三维
    • 4. 模型,视图,投影 变换(MVP)
    • 5. 光栅化
    • 6. 着色
    • 7. 几何
    • 8. 光线追踪
    • 9.材质与外观
    • 10.动画与模拟

学习笔记简介

本文是学习 Games下课程现代计算机图形学入门课程后所总结的笔记,主要是记录结论夹杂自己的理解,减少记录推导过程,意在于总结和复习。
games 101 原课程主页

1.计算机图形概论

本节是概论,课程的介绍。

  1. 什么是计算机图形学:用计算机描绘(synthesize and manipulate)可视信息。
  2. 为什么学计算机图形学:从目前应用,必要的挑战,技术的方向讲了讲。
  3. 讲了讲课程的内容和要求以及推荐书籍等。

2. 向量与线性代数

本节是线代中向量和矩阵的基础知识,与其在图形学上的应用:

  1. vector:向量可以代表图像的点与线。向量的点乘,可以得出一个向量在另一向量的投影,可以判断两向量方向相同或者相反,可以判断两向量有多接近(即向量的夹角比较小);向量的叉乘,可以判断向量在另一向量的左右,延伸可以判断点在几何的内外。向量构建正交坐标系框架。

计算机图形学入门 games 101 学习记录_第1张图片

  1. Matrices:矩阵(在左)乘 列向量(在右)应用于向量的变换,表示点或线的变换。向量的点乘与叉乘均可用矩阵乘积表示:

计算机图形学入门 games 101 学习记录_第2张图片

3. 二维与三维

本节主要讲的是二维图形和三维图形的变换(仿射变换 = 线性变换+平移)操作

  1. 线性变换:缩放,翻转,切变,绕原点逆时针旋转

  2. 齐次坐标:用于将仿射变换(平移和线性变换)都用一个种类型的矩阵表示。

  3. 2D point = (x,y,1); 2D vector = (x,y,0);3D point = (x,y,z,1); 3D vector = (x,y,z,0);

  4. 2D 平移变换:

  5. 2D 线性变换:

  6. 2D 如下矩阵的意义:先子矩阵M线性变换再平移变换
    在这里插入图片描述

  7. 逆变换:即是乘变换矩阵的逆矩阵。比如:想做顺时针旋转而非逆时针,那么将乘于R(arfa)的逆矩阵也是其转置矩阵(因为他是正交矩阵)

  8. 组合变换与变换的分解:比如:想做非原点的变换,步骤应该是:(1)平移到原点(2)做旋转(3)做第一步平移的逆变换。再比如:3D的过原点任意轴旋转,步骤应该将向量分解成轴方向的旋转和垂直轴方向的旋转,如果是非原点也无非是先平移再旋转再逆平移吧。

  9. 3D 旋转:绕x,y,z轴旋转:可以发现绕哪个轴转,那个变换矩阵位置为1,另外的绕x,z轴是,为平面的绕原点逆时针旋转的矩阵;但绕y轴却是,为平面的绕原点顺时针旋转的矩阵(其逆矩阵)。
    计算机图形学入门 games 101 学习记录_第3张图片

  10. 3D旋转:绕经过原点的任意轴旋转 其证明:(主要思想为变换分解,分解向量为指向任意轴+任意轴与向量的平面内垂直任意轴的方向)

https://blog.csdn.net/u014165186/article/details/102627271
计算机图形学入门 games 101 学习记录_第4张图片

4. 模型,视图,投影 变换(MVP)

我们实际的世界是3D的,而展现在我们视野里是2D的,本节主要讲3D模型自身变换处理,人的视角变换的处理,3D到2D的变换的处理?即三步:模型变换,视图变换,投影变换。

  1. 模型变换(modeling tranformation):将一个物体自身进行变换(缩放、旋转、位移),上一节介绍了此变换方法。

  2. 视角变换(view tranformation):根据眼睛(相机)来判断物体的相对位置。定义相机的三要素:相机位置position(向量e),相机面向方向gaze direction(单位向量g),相机上下方向up direction(单位向量t)。为了方便计算,我们应设定相机处于原点(0,0,0),并up direction 指向Y轴方向,gaze direction 指向-Z方向。如此,我们应该先进行相机平移(见下图1);后进行相机的旋转:将单位向量g转到-Z轴方向,将单位向量t转到Y轴方向,那么顺理成章的 gXt即指向X轴方向(见下图2)。在介绍如何变换相机后,根据相对位置的原理:相机做的变换,物体做相同的变换才能保证看到的视图是不变的。因此,其实视角变换仍是为模型变换。
    计算机图形学入门 games 101 学习记录_第5张图片
    如何方便地得出图二的旋转矩阵,采用逆矩阵思想。
    计算机图形学入门 games 101 学习记录_第6张图片

  3. 投影变换(projection tranformation):将三维空间内的物体投影至标准二维平面([-1,1]2)之上,这一步才是真正的3D转2D的过程。投影变换分为两种:正交投影(orthographic)和透视投影(perspective)。
    正交投影:无论远近,投影大小和实物面大小都一样;理解做法:丢弃z,将xy平面标准二维平面([-1,1]2)之上,方便之后计算;具体做法:先定义一个空间中的长方体(前后f,n;下上b,t;左右l,r),再将整个长方体中心移动到原点,再将其x,y,z均拉伸到[-1,1],达到整个图像处在标准立方体([-1,1]3)之中的效果。计算机图形学入门 games 101 学习记录_第7张图片
    透视投影:近大远小(梗:道理我都懂,但为什么鸽子那么大)。视角方向是一个视锥(由两个元素定义视锥:Vertical Field Of View 垂直可视角度,Aspect Ratio 长宽比[width:height]);其次规定近平面Z(n)[近平面其为照片大小]与远平面Z(f)。【我们通过视锥的定义可以算出远近平面的l,r,b,t,f,n。】
    计算机图形学入门 games 101 学习记录_第8张图片

  4. 【续】上图呈现的一个Frustum截头椎体,将其远平面压缩成近平面大小,转化成正交投影的长方体。如何理解这步操作:所谓为何近大远小,远平面能看到的视野广阔,而我们视野形成的2D平面是近平面大小,所以将远平面压缩,才造成远处物体缩小。在处理完压缩后,再以正交投影方式处理。
    然后我们要讨论如何压缩:压缩要求远近平面的Z不变,而中间平面的Z随压缩而变化,远平面中心在压缩后仍为平面中心。其中问号处为(0,0,n+f,-n*f) ,原课程有推理过程。
    计算机图形学入门 games 101 学习记录_第9张图片

5. 光栅化

光栅化可以理解为计算机如何将图像画在屏幕上,本节在上节进行投影并固定在标准立方体([-1,1]3)之中后,介绍了如何在屏幕上用像素画出原图像。

  1. 屏幕空间的定义(不同教程定义不同):(1)像素点(x,y)的定义:设为左下点,那么(0,0)–>(w-1,h-1)。(2)像素中心的定义:(x+0.5,y+0.5)。(3)屏幕大小(0,0)–>(w,h)。
  2. 忽略z方向,进行视口变换(Viewport transformation):将处于标准平面映射到屏幕分辨率范围之内,即[-1,1]^2→[0,width]*[0,height], 其中width和height指屏幕分辨率大小。计算机图形学入门 games 101 学习记录_第10张图片
  3. 光栅化三角形:为什么?因为图像可由三角形网格构成。怎么做?(1)离散化采样,判断像素中心是否在三角形内部,从而确定此像素显示与否(2)像素点在线上的判断(3)检查像素点的加速算法(Use a Bounding Box;Incremental Triangle Traversal)(4)反走样(课程讲了很多,包括傅里叶变换和卷积处理,用频率的方式解释了反走样现象,提出了解决方法,这里暂时不管了,简单理解:先模糊处理(卷积操作(求平均值)),再采集)
  4. 抗锯齿具体实现算法:MSAA近似方法(Antialiasing By Supersampling)将一个像素分割成更多的采样点,如N X N;根据每个像素在有count个采样点在三角形内部,得到颜色的淡化处理count/(N X N)。
  5. 深度测试:一个判断物体前后覆盖显示的技术(简单但重要)。具体的实现方法:维护一个Z-Buffer深度缓冲区,Z-Buffer记录的数据为每个像素目前深度的最小值,那么当每一个图像绘制时,判断其像素深度是否比Z-Buffer中的深度值更小,只有更小才修改当前像素为本图像应该显示的颜色。如何计算三角形内部像素的Z深度值,用插值方法(第6节有介绍)。

6. 着色

在没有着色的图形中,在同一个立体呈现同一个颜色时,并没有立体感,看不出分明的棱角。在课程里着色定义为:对应物体应用不同材质,在光线相互作用的下,呈现明暗不同。本节介绍了基本着色模型,着色频率,插值的作用和计算方法以及纹理映射。

  1. Blinn-Phong Reflectance Model(基本着色模型)三种不同的部分:高光,漫反射,环境光照。计算出三部分相加即可【只考虑局部,不考虑阴影】。(0)首先定义光照点(shading point):光照点均看成平面,法线方向n,光照方向l,观测方向v,表面因子(颜色,光亮…)。
    (1)漫反射(diffuse):如何计算多么明亮,分析光照点平面接受的光线有效吸收面积(跟法线方向n与光照方向l有关);分析光源点传播到光照点的能量传播衰减(跟光源点与光照点距离r有关);分析观测点,由于漫反射光线均匀反射(跟观测方向v无关)。
    计算机图形学入门 games 101 学习记录_第11张图片
    (2)镜面反射(specular):高光处取决于光照方向l经过镜面反射方向与观测方向接近。如何具体判断,l与v的角平分线方向h,判断是否h与n接近;p指数为了控制高光范围大小。
    计算机图形学入门 games 101 学习记录_第12张图片
    (3)环境光照(Ambient):其为间接光照,并假设任何方向来自环境的光是相同的。与光照方向,观测方向均无关,设为一个常数。计算机图形学入门 games 101 学习记录_第13张图片

  2. 着色频率(shading frequencies)三种方式:Flat shading 对每个三角形平面着色;Gouraud shading 对每个三角形顶点着色,三角形中心用插值法平滑过渡;Phong shading 对每个像素点着色。(1)对于Flat shading 很好计算其平面法向量,而另外两种方式呢。(2)Gouraud shading 中如何定义三角形顶点的向量:一种简单的方法是计算与此点有相接的平面的法向量的平均值,更准确的是应该在每个平面法向量*其加权值(其三角形面积)再求平均值。计算机图形学入门 games 101 学习记录_第14张图片
    (3)Phong shading 中如何定义像素点的向量:在知道顶点的法线方向时,用重心坐标计算像素点插值代替三角形内部像素的法线方向。

  3. 插值(Interpolation):(1)为什么使用插值:在顶点拥有特殊值,我们希望三角形内的像素点能平滑过渡。(2)插值的应用:插值可以用在任何属性上,包括颜色,法向量,纹理坐标。(3)我们如何插值:重心坐标。首先定义重心坐标:重心坐标是定义在一个三角形上的;在已知三个三角形顶点的情况下,三角形内的任意一个点的坐标均可由三个点的坐标来线性表示(需要满足三个系数为非负,并且相加为1),那么其系数组合即为重心坐标;计算机图形学入门 games 101 学习记录_第15张图片
    其次,如何求一个点的线性坐标:如下图,A顶点对面的分割三角形AA面积在三角形总面积之比。特殊的对于三角形的重心,其分割的三个三角形面积相等,重心坐标为(1/3,1/3,1/3)。计算机图形学入门 games 101 学习记录_第16张图片
    重心坐标的推得求解公式:计算机图形学入门 games 101 学习记录_第17张图片
    最后,如何使用重心坐标:其实就是点的属性=点的重心坐标系数分别乘其三角形顶点的属性求和。

  4. 如何将纹理应用在渲染中:
    (1)简单纹理映射:对于每个光栅化采样点根据插值计算出其纹理坐标,根据纹理坐标查询像素点对应的颜色,可用作于着色系数。
    (2)纹理的处理1:对于纹理本身分辨率太小,造成投影的像素点与纹理的像素点不重合。处理方法:双线性插值(Bilinear interpolation):先找到像素点相邻的四个纹理点,根据两边的两点水平插值出u0,u1的属性值,再讲u0,u1进行垂直插值得到像素点的值。
    计算机图形学入门 games 101 学习记录_第18张图片
    (3)纹理的处理2:在纹理分辨率对于像素太大,对于透视投影的远处一个像素中需要很多纹理表示,造成走样。处理方法步骤:a.近似正方形的范围查询(Mipmap),提前将纹理生成出多层缩小分辨率的纹理。
    计算机图形学入门 games 101 学习记录_第19张图片
    b.如何计算出一个像素点所占纹理的范围(即Mipmap的查询范围):一个像素点与相邻像素点的距离为1,将像素点和相邻像素点映射到纹理中,得到的像素点映与相邻像素点映射之间的距离计算出,取最大值近似作为像素块长度1在纹理中的长度L。查询的区域level D = log2(L),就是用比L X L 一样的一个mipmap生成图。
    计算机图形学入门 games 101 学习记录_第20张图片
    c.如果D为非整数的处理方法:使用三线性插值插值,先在ceil(D)和floor(D)的mipmap生成图分别做双线性插值求出其值,再将两个值再做一次线性插值。计算机图形学入门 games 101 学习记录_第21张图片
    d.纹理处理2【续】:各向异性过滤(Anistropic Filtering)可进行扁平型范围查询,mipmap是正方形范围查询,因为各向异性过滤会生成128 X 64 … 64 X 16 …;其他更精密的范围查询 EWA Filtering。

(4)纹理的应用:texture = memory + range query (filtering)
a. 环境光照(只记录其方向信息,认为其光源无限远)。处理方法:1. Spherical Environment Map(球形环境映射),但是球形展开会产生上下扭曲;2.Cube Map(立方体映射)将环境光映射到立方体6个面展开;
b. 凹凸贴图(纹理不仅仅只记录颜色,也可以定义相对高度)。根据其相对高度改变其每个像素点 的法线方向,从而造成着色的明暗变化。处理方法:2D. 假设建设局部坐标系,其原法线方向为(0,1),经过增高dp,计算其切线方向,旋转90度得到法线方向计算机图形学入门 games 101 学习记录_第22张图片处理方法(3D):
计算机图形学入门 games 101 学习记录_第23张图片c. 位移贴图,真实改变三角形顶点位置
d. 3D纹理映射(噪声)
e. 将纹理预处理,实现一些效果(如阴影)
f. 3D纹理构造立体展示

7. 几何

  1. 图形学中几何表示方式:

(1)隐式表示(Implicit):表示模型点的一定关系,不给出具体点,如边界点满足f(x,y,z) = 0;隐式表示的优点:可以快速判断点是否在面上或面内外。a.数学函数表示;b.基础形状通过布尔运算(交,并)得到复杂几何;c.距离函数融合;d.水平集融合;e.分形(Fractals)

显示表示(Explicit):模型点直接给出,或通过参数函数映射;显示表示的优点:容易得到模型的形状。a.点云(Point Cloud)b.多面形网格(Polygon Mesh)

  1. 曲线和曲面

(1)贝塞尔曲线(Bezier Curves)使用一系列控制点定义一条曲线。三个控制点的贝塞尔曲线,b0->b1长度截取t倍得到b01,b1->b2长度截取t倍得到b11,b01->b11长度截取t倍得到贝塞尔曲线在t时刻点的位置。
计算机图形学入门 games 101 学习记录_第24张图片同理,四个控制点的贝塞尔曲线,使用左三点做贝塞尔曲线在t时刻点位置b02,使用右三点做贝塞尔曲线在t时刻点位置b12, 再b02->b12长度截取t倍得到贝塞尔曲线在t时刻点的位置。

计算机图形学入门 games 101 学习记录_第25张图片贝塞尔曲线公式:计算机图形学入门 games 101 学习记录_第26张图片贝塞尔曲线性质:【后面两个性质】曲线仿射变换和其控制点仿射变换再做曲线是一样的;曲线均处于凸包(包含所有点的最小包围圈)内。
计算机图形学入门 games 101 学习记录_第27张图片片段化贝塞尔曲线(Piecewise Bezier Curves):一般定义每四个点形成一段贝塞尔曲线。贝塞尔曲线连续:C0连续指两段相邻曲线的控制点前一段终点和后一段起点相同即可;C1连续指两段相邻曲线交接处导数方向相同,大小相同,即一阶导连续。

其他曲线:样条(splines)

(2)贝塞尔曲面:输入4X4控制点,对于x方向做贝塞尔曲线,其有一个t参数表示,对于y方向其贝塞尔曲线的点构成的控制点再做贝塞尔曲线,其还有一个参数t1表示。那么t,t1用(u,v)表示。
计算机图形学入门 games 101 学习记录_第28张图片


  1. 网格处理操作:

(1)网格细分(Mesh Subivision):增加三角形个数,在引入更多三角形后,进行位置变化使得更圆滑。
a. Loop Subivision:只能处理三角形网格。首先(细分),将三角形边的中心作为新顶点相连,从而划分每个三角形为四个三角形;其次(调整),加权公式调整新顶点和旧顶点:计算机图形学入门 games 101 学习记录_第29张图片计算机图形学入门 games 101 学习记录_第30张图片b. Catmull-Clark Subdivision: 可以处理非三角形网格,处理一般网格情况。首先,将面的边取中点,在面中取中心点,连接边中点和面中心点,可以将四边形继续细分为四边形,非四边形通过一次细分变为四边形面;其次,分别公式调整边中点和面中心点。计算机图形学入门 games 101 学习记录_第31张图片
(2)网格简化(Mesh Simplification)减少三角形个数。
边坍缩(Collapsing An Edge)将一些边缩成一个点,那么如何选择坍缩边:二次误差度量(Quadric Error Metrics)测量每个边二次度量误差,取最小二次度量误差的边,在边进行坍缩后动态更改其他相连边的二次度量误差。

(3)网格正规化(Mesh Regularization)修改用正三角形表示图形

8. 光线追踪

光栅化和光线追踪是两种不同的成像方式。
为什么需要光线追踪:1.光栅化难以处理的问题:soft shadows, glossy reflection, indirect illumination。2.光栅化处理速度快,质量低,用于实时效果;光线追踪生成速度慢,质量高,用于离线效果,如:电影。

  1. 光线追踪的定义:
    (1)光线的定义:a. 光线是沿直线传播的;b. 光线之间不会发生碰撞;c. 光源一定是由光源出发到达人的眼睛形成可视的光路(由于光路的可逆性,可以认为光线由眼睛出发传播到光源)。
    (2)光线的投射:a. 眼睛向成像平面每个像素投射一根光线;b. 确认光线与场景物体的相交(确认光线相交物体的最近点);c. 连接相交物体点和光源点形成光路,判断光线是否能反射到光源(是否在阴影中),计算像素点的着色值。
    (3) 递归光线追踪(whitted-style):解决光线反射多次,或折射多次问题,即光线在任意点可以继续传播。其在计算像素点的着色值需要加权光线每个弹射点到光源的连线的光路。

如何构建每个像素点与眼睛构成的初始光路,课程没有细讲。额外讲解

  1. 光线追踪求交表达:
    (1)光线的方程式:r(t) = o + td; 其中o为原点,d为方向向量,t为正数。
    (2)光线与隐式表面的交点:设隐式表面方程为 f(p) = 0 , 而p在表面上,p= r(t) =o + td; 代入p求出交点的t。
    计算机图形学入门 games 101 学习记录_第32张图片

(3)光线与显式表面的交点:计算光线与三角形求交–>(方法一)计算光线与三角形平面交点,再判断交点是否在三角形内。如何计算光线与平面交点:平面的方程式:f(p):(p-k)dot N = 0,其中k为给定的平面上的点,如三角形顶点;N为三角形平面的法线。代入平面方程与光线方程求出t。
计算机图形学入门 games 101 学习记录_第33张图片
(4)计算光线与三角形求交–>(方法二):代入三角形重心坐标和平面方程。
计算机图形学入门 games 101 学习记录_第34张图片

  1. 光线追踪与场景多个三角形求交–>加速算法:
    (1)包围盒(Bounding Volumes):使用一个简单的形状将物体包围起来,如果光线连包围盒都无法相交,那么更不可能与物体相交。
    a. 轴对齐包围盒(Axis-Aligned Bounding Box)【AABB】:由三组对齐的平面构成的包围盒,且对齐平面分别与x,y,z轴平行。如此:可以在求交点t时,用x,y,z分量分别计算,而不用复杂计算光线与平面交点。
    计算机图形学入门 games 101 学习记录_第35张图片

b. 如何判断光线与AABB求交:对于三组对齐平面(对面),光线全进入三组对面中才算进入盒子;光线不在任意一组对面则算离开盒子。具体操作,对于每组对面求出其进入时间和出去时间,然后对三组的进入时间求最大值,对三组出去时间求最小值。
c. 处理光线为射线而非直线:当进入离开的时间为负,则光线和盒子无交点,当进入时间为负&离开时间为正,则光源点在盒子内。

(2)如何使用AABB加速光线追踪
a. Uniform Grids:
Preprocess:找到一个包围盒;划分多个格子;与物体表面相交格子标记,表示此格子相交可能会有物体相交。
Ray-Scene Intersection:与光线相交格子是否被标记过,标记过表示这个格子的物体可能与光线相交。

b. Spatial Partitions(空间划分):
如何划分格子的算法之一KD-Tree:每层划分按x,y轴交替划分,找一个何时的位置划分,形成子节点,最终形成二叉树。
如何使用KD-Tree:先判断光线与根节点有无交点,如果有再判断其两个子节点有无交点,若有交点,继续往子节点判断,直到无交点或者判断到叶子节点,若得到叶子节点有交点,再计算叶子节点中的物体和光线求交。
KD-Tree两个问题:难以判断物体和格子求交;物体和格子交集有多个。

c. Bounding Volume Hirerarchy (物体划分 BVH)
找到一个包围盒;一个包围盒物体分成两堆重新求包围盒,其生成的两个包围盒在父包围盒内;逐层分堆至堆中三角形数量比较合适,形成二叉树。 解决了KD-Tree的两个问题,但生成包围盒会有交集。
如何分堆:选择长的边,取中间的物体,…其他方法

  1. 辐射度量学(Basic radiometry)
    辐射度量学是精准的,实际的定义光的各种物理量的方法。
    精确测试光的具体属性:Radiant flux, intensity, irradiance, radiance.
    (1)定义:
    Radiant Energy: Q[J焦耳]
    Radiant Flux: Φ = dQ/dt [W = Watt] 、[lm = lumen]
    单位时间感光面通过光子的数量

Radiant Intensity: 光源的能量定义:Flux per unit solid angle。
solid angle(立体角)= 弧度制在空间中的衍生 = (其面积是物体在单位体上的投影)面积A / 半径平方r²
differential solid angle(微分立体角:空间任意方向的立体角变化)= dA/r² = sinθ

Irradiance: 物体点接收光的能量定义: Flux per projected unit area。E(x) = dΦ(x)/d面积A(垂直光线的面积) [W/m²] .[lm/m²]

Radiance:光线传播中能量:Flux, per unit solid angle,per projected unit area.

(2)Bidrectional Reflectance Distribution Function(BRDF):why,用于一个表面如何把收集到的光线能量反射发送到各个立体角去。BRDF是一个比例,跟反射点材质相关。计算机图形学入门 games 101 学习记录_第36张图片

(3)The Rendering Equation 渲染方程
某个点对某个方向发出的能量 = 自身发光对某个方向发出的能量+收集的能量反射某个方向的能量(= 每个方向角收集能量 * BRDF * cosθ垂直光分量)。
计算机图形学入门 games 101 学习记录_第37张图片

(4) 全局光照(多次反射渲染方程修正)

  1. 渲染方程求解
    (1)Monte Carlo Integration (蒙特卡罗积分):用来解决一种定积分,是一种积分方法。将定义域间取样x,得到值f(x)作为高,定义域作为底,将底X高得到的长方形面积近似为定积分值,多次随机取样求平均作为定积分值。下图中p(x)为采样概率,若均匀采样p(x)=1/(b-a)
    计算机图形学入门 games 101 学习记录_第38张图片
    (2)Path Tracing(路径追踪):
    why::解决Whitted-Style Ray Tracing不准确的地方,产生的问题。问题:Glossy材质的反射设置为镜面反射不准确,漫反射材质没有间接反射。
    what:求解渲染方程,求解两个问题:a.求解直接光照下的定积分;b.处理间接光照递归问题;c.测试路径是否被遮挡。
    how:a. 求解直接光照下的渲染方程定积分:采用蒙特卡罗积分
    计算机图形学入门 games 101 学习记录_第39张图片
    b.处理间接光照递归问题
    处理反射数量产生指数爆炸:采用的间接光照反射光线数量设为1。从而在对于一个像素应该计算多次路径求平均。
    处理光线反射无法停止:Russian Roulette,设置概率P,以P概率反射光线得到结果/P,1-P概率停止反射光线,其期望(E=P*REAL/P+(1-P)*0=REAL)等于正确结果。
    计算机图形学入门 games 101 学习记录_第40张图片
    对于均匀的PDF(即取样概率),有可能会导致由于光源太小,光线需要过多条才能打到光源。
    改写渲染方程,将其对单位球的取样概率,设置为对光源的取样概率。将立体角扩展到光源位置。
    计算机图形学入门 games 101 学习记录_第41张图片

直接光照+间接光照 分离
计算机图形学入门 games 101 学习记录_第42张图片
c.测试路径是否被遮挡

9.材质与外观

Materias and Appearances

  1. 什么是材质:Materias = BRDF

  2. 材质列表:
    (1)Diffuse/Lambertian Material 漫反射材质
    解释下图:Lo(wo)是指反射方向能量,fr是指BRDF比例系数,Li是指某个入射方向的能量,H2是指积分域。积分半球所有入射能量得到的是此点能够接收的总能量(即渲染方程),在不考虑能量吸收的情况下,等于反射方向能量;而在漫反射下,若所有方向入射能量相同,根据能量守恒定律,任意反射方向能量应等于任意入射方向能量;从而得到BRDF比例系数1/π,由于考虑非完全反射,albedo是指反射率。
    计算机图形学入门 games 101 学习记录_第43张图片
    (2)Glossy material 金属材质

(3)Ideal reflective/refractive material 理想反射/折射材质(既包含反射,又包含折射)
a. 反射方向计算:正向的反射w,与从上往下向的反射φ
计算机图形学入门 games 101 学习记录_第44张图片
b. 折射的计算:正向的折射w,与从上往下向的折射φ。注意的是在计算折射角时,由于可能会有没有折射现象(即全反射),应该直接计算折射角的余弦值,可以保证有折射光。
计算机图形学入门 games 101 学习记录_第45张图片
c. Fresnel Reflection / Term (菲涅尔项):解释能量反射和折射的比率。准确与近似:
计算机图形学入门 games 101 学习记录_第46张图片
(4)Microfacet Material 微表面材质
a. 微表面:对于粗糙的表面,可以看作多个微表面,每一个微表面作为微小的镜面。

(5)Isotropic/Anisotropic Materials 各项异性材质

  1. BRDF属性
    Non-negativity 非负
    Linearity 线性
    Reciprocity principle 可逆性
    Energy conservation 能量守恒
    Isotropic or anisotropic 各项同性或各项异性

  2. BRDF测量
    对于现实得到物体给定入射和出射,枚举计算每个方向的BRDF。

10.动画与模拟

  1. 动画是什么:交互工具,更注重美学,对于几何建模的四维拓展,按一个时间范围内播放多个图片。
  2. keyframe 关键帧,关键帧插值
  3. Mass Spring System 质点弹簧系统
    弹力:距离和弹力系数
    摩擦力:单方向相对速度和摩擦系数
  4. Particle Systems 粒子系统

你可能感兴趣的:(图形学)