01#
Computer Graphics field
Video Games
什么是好的画面, 整个画面是否够亮(暗部细节量)
Movies
Animations
Design
Visualization 医学范畴, 比如B超
Virtual Reality (AR&VR)
Digital Illustration (Photoshop电子绘画)
Simulation 环境太空模拟
Course Topics 课程主题
Graphical User Interfaces UI设计
Typography 矢量图
ppt内容 why study computer graphics
图形学包含很多东西, 他需要你对真实世界有所了解, 包括不同物质模拟, 光的反射, 材质制作都要有所研究, 对真实世界的理解作为输入
怎么输出, 新的计算方法, 新的显示方法, 裸眼3D, 全息投影
图形学包括各种数学知识, 三维知识, 光学, 动画或仿真等
Rasterization#
把三维空间的形体显示在屏幕上, 就叫光栅化
实时和离线 30fps为标准, 达到是实时, 否则为离线. 光栅化被广泛应用在实时图形学上
Curves and Meshes#
几何, 曲面与网格
Ray Tracing#
光线追踪. trade off 为了达到某个目标而牺牲其他目标
Animation/Simulation#
动画模拟
计算机图形学和计算机视觉的差别
计算机图形学是把模型等三维空间的信息通过渲染生成出图片
计算机视觉是通过图片分析三维空间的结构, 这个过程叫做计算机视觉
与图像无关, 与三维空间有关的信息处理, 比如动画模拟, 材质制作等都归于计算机图形学的范畴
图像方面的处理, 以前叫做图像或视频处理, 现在基本使用计算机视觉的方法, 通过深度学习去分析一个图像使其变成另一个图, 这些被归于计算机视觉的范畴
运用不同的捕捉方法, 摄像机, 测量不同的属性, 拍摄不同的图片, 比如说在极其微小的时间内传播一些图, 叫做计算摄影学
这类学科的联系越来越紧密, 界限也越来越模糊
书籍推荐#
Fundamentals & Computer Graphics
02#
Preview of Linear Algebra
图形学相关知识#
Basic Mathematics
Linear algebra, calculus, statistics 线性代数, 微积分, 统计
Basic Physics
Optics, Mechanics 光学, 力学
Misc
Signal Procsssing, Numerical analysis 信号处理, 数据分析
Aesthetics 美学
向量#
向量归一化#
向量长度写作 ||a||
单位向量是长度为1的向量
得到一个向量的单位向量, 即将这个向量归一化的方式为: 单位向量a = 向量ahat / 向量a的长度
单位向量用于表示方向
用笛卡尔坐标系表示向量, 向量起始点在原点, XY轴每一段代表一个单位向量, 通常表示一个向量用复数的x和y来表示
垂直坐标系#
图形学中一般用列向量表示向量
A = (x y) AT = (x, y), T代表转置
把向量表示成直角坐标系这种代数形式, 方便于计算它的长度
点乘运算, 向量分解#
a · b = ab cosθ
点乘可以快速算出两个向量之间的夹角度数
假设一个三角形, 由abc三条边组成, ab互相垂直, c为领边. 取一个锐角θ, 对边为a, 此时
sin = a/c对边与斜边的比值, cos = b/c邻边与斜边的比值 tan = a/b对边与邻边的比值
这个计算本质是输入向量原模长和cosθ, 得到投影的模长, cosθ是 投影模长/原模长 比值
在3blue1brown的说法里, 点乘被视为一个向量和一个数轴矩阵相乘, 此次课程则视为两个向量模长乘以cosθ. 两者的说法都成立
在此次课程的说法中, 为了计算cosθ, 我们需要构造直角三角形, 一般是从向量b的终点向向量a作垂线, 也就是投影
3blue1brown的说法关键在于理解点乘在线性变换上的含义, 而此次课程则重于求得cosθ的计算结果
点乘的作用#
meansure how close two directions are 向量间是否接近
decompose a vector 分解一个向量
determine forward/ backward 向量前后关系
叉乘的作用#
计算和说明请看3blue1brown
关键: 通过叉乘的结果, 可以判断一个向量在另一个向量的左侧还是右侧
还可以判断一个点是否在三角形的内部. 假设三角形abc, 点p如果在内部, 那么它就在三个边的左侧, 比如AB和AP, BC和BP, CA和CP的结果就都为正的
corner case#
会出现点P既不在内部也不在外部, 这种清空需要自定义, 被称为corner case
通过定义向量来构成坐标系
三个向量都是单位向量
三个向量相互垂直
向量W = 向量U叉乘向量V (确定右手坐标系)
定义任意向量P, 通过分解向量得到向量P投影到3个轴上的模长, 这三个模长就是xyz坐标标量
矩阵#
什么是矩阵#
矩阵的乘积#
矩阵乘积规律
(MxN)(NxP) = (MxP)
如何计算新矩阵的行列数
例: 假设要计算新矩阵三行四列的数字, 取输入矩阵的数, 第一个矩阵取第三行, 第二个矩阵取第四列, 4个数点乘, 得到最终的数
矩阵转置
单位矩阵和逆矩阵
点乘和叉乘用矩阵表示
03 Transformation#
为什么学习变换#
模型变换#
视变换#
2D变换#
scale变换
reflection变换 翻转变换
shear变换
rotate变换 基于原点旋转
所有矩阵可以写成另一种形式 这里认为有输入向量, 输出向量, 矩阵为变换过程, 就是线性变换
平移变换 不是线性变换 在原本的向量乘矩阵的基础上加上平移值, 因为多了这一步, 不符合上述的线性变换定义
齐次坐标#
为了让平移变换复合线性变换的定义, 需要运用齐次坐标, 用n+1维表示一个n维度的向量
升维度, 用三维表示二维的向量
向量具有平移不变性, 在给向量增维, 写0 (x,y,0)是为了保持向量平移不变性 给点升维时, 点定义为(x,y,1),这样点-点=向量, 第三个维度结果会是 1 - 1 = 0 点加点等于两个点之间的中点
逆变换M-1
复合变换#
3D变换#
同2D变换, 进行升维到齐次坐标
先线性变换再平移
04 Transformation Cont#
Rθ R-θ = RTθ R-θ = Rθ-1
一个矩阵的逆矩阵等于它的转置, 那就是正交矩阵
3D Transformations#
x,y,z轴旋转, y轴旋转和其他轴不同, 由于右手定理, 只能z叉乘x得到y, 所以y的和其他轴有点不同
把对三个轴的旋转写成Rx,Ry,Rz, 分别定义不同轴的旋转, 也被称为roll, pitch, yaw
罗德里格斯旋转公式 Rodrigues’ Rotation Formula
输入旋转轴和旋转度数, 默认在原点旋转
如果要在任意点旋转, 先平移回原点, 旋转, 再平移回去
四元数#
用于做矩阵差值, 比如旋转15度,再旋转25度, 加起来求平均. 旋转矩阵不能简单相加求平均, 因为两次旋转轴向可能不同, 其次相加求和后的矩阵大概率不是正交矩阵, 行列式可能不等于原旋转矩阵的1
四元数计算多次旋转矩阵的平均值的含义是, 计算旋转的起点和终点的距离, 求一个中间点, 计算到达这个中间点要往哪个方向旋转多少度
Viewing Transformation 观测变换#
View/Camera Transformation 视图变换#
三维变换成二维
什么是视图变换 mvp变换, model, view, projection
怎么做视图变换
放置相机, 定义两个方向, Up Direction, Lookat Direction, 看的朝向和相机向上方向
把相机放在原点(标准位置), 让后续操作简化
通过平移再旋转矩阵来调整相机位置, 由于要先平移, 无法先旋转再平移, 所以需要写成两个单独的矩阵
直接对轴进行旋转不方便, 先求逆矩阵. 比如原轴为gxt, t, -g. 要变换到的轴为xyz, 先求xyz到gxt,t,-g的逆矩阵, 再求逆矩阵的转置, 由于旋转矩阵是正交矩阵, 所以结果为我们原本想要的旋转矩阵
所有东西都需要施加同样的变换
这个变换被称为model/ view transformation
Projection Transformation 投影#
是否有进大远小性质, 是两种投影矩阵的差别
Orthographic Projection 正交#
相机在原点, 对向-z方向, y朝上. 去掉z轴. 平移和缩放结果到一个-1,1的矩形里
只所以是非正式做法, 是因为这个做法会丢失z深度
正式点的做法是
定义空间中的立方体, 把立方体移到原点, 把立方体拉成-1到1的尺寸, 这两步对应平移和缩放矩阵
右手坐标系相机对着-z方向, 导致z值越大的物体,离相机越近. 左手坐标系相反.
最开始立方体的位置和尺寸是由相机决定的, 代表相机可以看到的所有内容物, 也就是far clip plane和near clip plane这两个平面形成的空间
Perspective Projection 透视#
对far clip plane进行缩放挤压, 再进行正交投影. 这个过程就是透视投影
通过相机和far clip plane, 以及相机和near clip plane的距离的比值, 来计算far clip plane需要横向平移的距离, 纵向平移距离也可以这么获得
这个矩阵对near clip plane上的点不会有影响, 对far clip plane上的点的z值不会有影响, 而far clip plane的中心点位置不会受这个变换矩阵影响, 由此性质来计算这个变换矩阵
这个空间中的点, 经过变换, 会更靠近far clip plane, 因为z轴映射为非线性函数
判断非线性函数的方法
- 输入0, 输出非0
- 不能有输入的高次项, 比如x的平方
- 不能有输入乘积项, 比如xy
- 不能有非线性操作, 比如根号, 倒数, 三角函数等