图形学基础笔记
课程主页GAMES101: 现代计算机图形学入门(2020 年春季)【B站录播】GAMES101-现代计算机图形学入门-严令琪
目录
- 基本的图形笔记
- 图形学概述
-
- 应用图形学
- Rasterization(光栅化)
- Curves and Meshes
- Ray Tracing
- Animation / Simulation
- 向量和线性代数
- 变换 Transformation
-
- 变换矩阵
-
- 缩放矩阵
- 切变矩阵
- 旋转矩阵
- 齐次坐标
-
- 引入齐次坐标的原因
- 引入齐次坐标
- 变换的顺序
- 变换的分解
- 3D旋转
- 观测变换 Viewing transformations
-
- 观察/相机变换
- 投影变换
-
- 正交投影 Orthographic Projection
- 透视投影 Perspective Projection
- 光栅化 Rasterization
-
- 像素(Short for picture element)
- 视口变换
- 成像设备
- 三角形
-
- 三角形是最基本的形状
- 判断像素与三角形的关系
-
- 采样 Sampling
- 抗锯齿和深度缓存
-
- 采样带来的 Artifacts
- 抗锯齿/反走样 Antialiasing
-
- 频域 Frequency Domain
- 滤波
- 反走样思想
- 抗锯齿 Antialiasing
- 超分辨率 Supersampling
- 深度缓存 Z-buffer
- 着色 Shading
-
- 一些基本定义
- Blinn-Phong Model
-
- 漫反射 Diffuse reflection
- 高光反射 Specular highlights
- 环境光 Ambient lighting
- 着色频率 Shading Frequencies
-
- Flat Shading
- Gouraud Shading
- Phong Shading
- 渲染管线 pipeline
- 纹理映射 Texture Mapping
-
- 插值
-
- 补充:插值平滑
- 重心坐标
- 纹理太小
- 纹理太大
-
- Mipmap
- 计算 Mipmap 的 Level D
- Mipmap Limitations
- 拓展:在 unity/UE4 打开各向异性过滤,纹理内存不是 3 倍而是 1/3 。
-
- 纹理应用 Applications of Textures
- 几何 Geometry
-
- 几何表示
-
- 隐式几何 Implicit
- 显式几何 Explicit
- 曲线 Curves
-
-
- 计算贝塞尔曲线——de Casteljau 算法
- 贝塞尔曲线逐段 Piecewise Bezier Curves
- 其它曲线:样条 Splines
- 贝塞尔曲面
-
- 网格操作
-
- 细分
-
- Loop Subdivision
- Catmull-Clark Subdivision
- 简化
-
- 边坍缩
- 阴影 Shadows
-
- Shadow Mapping
- 一些阴影问题
- 光照追踪 Ray Tracing
-
- 为什么需要光线跟踪?
- Whitted-Style Ray Tracing
-
- 光线
- Casting Ray:生成 Eye Ray
- Whitted-Style Ray Tracing 思路
- 计算光与物体表面的交点
-
- 隐藏表面(光和表达表面)
- 显式表面(光和三角形)
- 加速求光与表面的交点
- 加速结构 Acceleration
-
- 均匀格子 Uniform Grids
- 空间划分 Spatial Partitions
-
- KD-Tree
- 物体划分 Object Partitions
-
- Bounding Volume Hierarchy(BVH)
- 辐射度量学 Radiometry
-
- 辐照强度 Intensity
- 辐[射]照度 Irradiance
- 辐[射]亮度 Radiance
- 双向反射分布函数 BRDF
-
- 反射方程
- 渲染方程
- 全局光照
- 蒙特卡洛积分与路径追踪
-
- 蒙特卡洛积分 Monte Carlo Integration
- 路径追踪 Path Tracing
- 俄罗斯轮盘赌 Russian Roulette
- 材质与外观 Materials and Appearances
-
- 漫反射系数 albedo
- 折射定律 Snell's Law
- 菲涅尔项 Fresnel Reflection / Term
- 微表面材质 Microfacet Material
- 各向同/异性材质 Isotropic / Anisotropic Materials
- BRDF 的性质
-
- BRDF 的测量
- 高级光线传播 Advanced Light Transport
-
- 无偏光线传播方法
-
- 双向路径追踪 Bidirectional Path tPTracing(BDPT)
- Metropolis Light Transport(MLT)
- 有偏光线传播方法
-
- 光子映射 Photon Mapping
- Vertex Connection and Merging(VCM)
- 实时辐射度算法 Instant Radiosity(IR)
- 高级外观建模 Advanced Appearance Modeling
-
- 非表面模型 Non-surface Models
-
- 散射/参与介质 Participating Meida
- 头发/毛发/纤维 Hair / Fur / Fiber(BCSDF)
-
- 头发
- 毛发
- 颗粒 Granular Material
- 表面模型 Surface Models
-
- 半透明 Translucent Material(BSSRDF)
-
- 次表面散射 BSSRDF
- 布料 Cloth
- Detailed Material(non-statistical BRDF)
- 程序化生成模型 Procedural Appearance
- 相机与透镜 Cameras and Lenses
-
- 视场 Filed of View
- 曝光 Exposure
-
- 影响曝光度的因素
- 镜头 Lens
-
- Defocus Blur
- 景深 Depth of Field
- 光场、颜色与感知 Light Field, Color and Perception
-
- 全光函数 The Plenoptic Function
- 光场 Light Field
-
- 光场摄像机 Light Field Camera
- 颜色与感知 Color and Perception
-
- 颜色的物理基础 Physical Basis of Color
-
- 光谱 Spectrum of Light
- 谱功率密度 Spectral Power Distribution(SPD)
- 三色理论 Tristimulus Theory of Color
-
- 同色异谱 Metamerism
- 颜色复制和匹配 Color Reproduction / Matching
- 颜色空间 Color Space
-
- 标准 Standardized RGB(sRGB)
- 通用颜色系统 CIE XYZ
- HSV Color Space
- CMYK:Subtractive Color Space
- 动画与模拟 Animation / Simulation
-
- 关键帧动画 Keyframe Animation
- 物理模拟 Physical Simulation
-
- 质点弹簧系统 Mass Spring Rope
- 粒子系统 Particle Systems
- 运动学 Kinematics
-
- 前向运动学 Forward Kinematics
- 逆向运动学 Inverse Kinematics
- 绑定 Rigging
-
- 动作捕捉 Motion Capture
- 欧拉方法 Euler's Method
-
- 中点法 Midpoint Method
- 自适应步长大小 Adaptive Step Size
- 隐式方法 Implicit Method
- **龙格库塔方法** Runge-Kutta Families
- 基于位置的方法 Positon-Based / Verlet Integration
- 刚体模拟 Rigid Body
- 流体模拟 Fluid Simulation
图形学概述
更注重原理,而不是注重 OpenGL、DirectX 等图形API图形学 ≠ 计算机视觉// 直白点说,计算机视觉就是猜测分析看到的东西
图形学的应用
- Video Games
- Movies
- Animations
- Design
- Visualization
- Virtual Reality
- Digital illustrations
- Simulation
- Graphical User Interfaces
- Typography
Rasterization(光栅化)
实时图形学的主要应用// 在计算机图形学中,能达到每秒生成30帧就为“实时”,否则就为“离线”
Curves and Meshes
Ray Tracing
渲染稍微慢一点,目前动画和电影使用较多。当然现在也有一些实时光线追踪的技术
Animation / Simulation
- Key Frame Animation(关键帧动画)
- Mass-spring System
向量与线性代数
基础数学:线性代数、微积分、统计基础物理:光学、力学其它知识:信号处理、数值分析、美学
向量
默认都是列向量,这里默认右手坐标系
单位向量
a ^ = a ⃗ ∥ a ⃗ ∥ \hat{a} = \frac{\vec{a}}{\left \| \vec{a} \right \|} a^=∥a ∥a
向量乘法
点乘
- 夹角:点乘除以两向量模长
- 投影:点乘除以投影到向量的模长
- 前后信息:点乘大于0或者小于0
叉乘
- 判断向量左、右关系
a ⃗ × b ⃗ = + z ⃗ \vec{a}\times\vec{b} = + \vec{z} a ×b =+z
- 判断内、外
例:已知一个 三角形ABC 和一个 点P,判断点是否在三角形内分别用AB、BC、CA向量叉乘AP、BP、CP,若三个结果得到的向量通向,则说明AP、BP、CP分别在AB、BC、CA的同一侧,即点P在三角形内
矩阵
两个向量的叉乘可以转换为矩阵乘法 a ⃗ × b ⃗ = A ∗ b = [ 0 − z a y a z a 0 − x a − y a x a 0 ] ⋅ [ x b y b z b ] = [ y a ⋅ z b − z a ⋅ y b + − x a ⋅ z b + z a ⋅ x b x a ⋅ y b − y a ⋅ x b ] \vec{a}\times\vec{b} = A^*b = \begin{bmatrix} 0&-z_a&y_a\\ z_a&0&-x_a\\ -y_a&x_a&0\\ \end{bmatrix} \cdot \begin{bmatrix} x_b\\ y_b\\ z_b\\ \end{bmatrix} = \begin{bmatrix} y_a\cdot z_b - z_a\cdot y_b+\\ -x_a\cdot z_b + z_a\cdot x_b\\ x_a\cdot y_b - y_a\cdot x_b\\ \end{bmatrix} a ×b =A∗b=⎣⎡0za−ya−za0xaya−xa0⎦⎤⋅⎣⎡xbybzb⎦⎤=⎣⎡ya⋅zb−za⋅yb+−xa⋅zb+za⋅xbxa⋅yb−ya⋅xb⎦⎤
变换 Transformation
对于一个把 x 映射到 x’ 的线性变换 T,其中的矩阵 M 就为变换矩阵 T : x ′ = M x T: x'=Mx T:x′=Mx
变换矩阵
缩放矩阵
x 轴缩放 k_x 倍,y 轴缩放 k_y 倍 [ k x 0 0 k y ] \begin{bmatrix} k_x&0\\ 0&k_y\\ \end{bmatrix} [kx00ky]
切变矩阵
x 坐标偏移 y/a [ 1 a 0 1 ] \begin{bmatrix} 1&a\\ 0&1\\ \end{bmatrix} [10a1]
旋转矩阵
旋转 θ 度 [ cos θ − sin θ sin θ cos θ ] \begin{bmatrix} \cos θ&-\sin θ\\ \sin θ&\cos θ\\ \end{bmatrix} [cosθsinθ−sinθcosθ]旋转 -θ 度只需要求其逆矩阵旋转的逆矩阵 = 旋转的转置 // 正交矩阵
齐次坐标
引入齐次坐标的原因
平移变换不能用矩阵的形式来表示 [ x ′ y ′ ] = [ 1 0 0 1 ] [ x y ] + [ t x t y ] \begin{bmatrix} x'\\ y'\\ \end{bmatrix} = \begin{bmatrix} 1&0\\ 0&1\\ \end{bmatrix} \begin{bmatrix} x\\ y\\ \end{bmatrix} + \begin{bmatrix} t_x\\ t_y\\ \end{bmatrix} [x′y′]=[1001 标签: 重力平衡式料位传感器弹簧片式矩形连接器1000td位移传感器h1141接近传感器ni43fb振动速度传感器0804zb4m圆形电连接器