图形学-光线追踪5(路径追踪)
 Whitted-Style 光线追踪的问题
Whitted-Style 风格的光线追踪特点:
总是计算镜面反射和折射。
在漫反射表面上光线不会反弹。
但这些假设是有问题的,因此需要引入路径追踪。
左边像镜子,右边像磨砂金属。
左边是完全的镜像反射 Mirror reflection,右边是 Glossy reflection。
一根光线从上面打到了一个漫反射物体表面,光线就不再弹射了,这导致如图左侧所示的黑色阴影区域。
如右图物体表面呈现红色区域,说明红色的墙面的颜色跑到了物体表面上,这种现象称之为color bleeding。这是因为光线打到了墙面后,光线又反弹到了物体表面上,说明了全局光照会反弹不止一次。
如果没有全局光照,天花板就是黑的,物体侧面就是黑的。
 Whitted-Style 光线追踪的错误
所以 Whitted-Style 风格的光线追踪是错误的,渲染方程是正确的。
如果需要正确计算物体表面上一个点打到的光线,则需要求解渲染方程。
但是求解它,需要计算半球上的积分,这是一个递归的执行流程。
这个积分式可以使用蒙特拉洛积分的方式来求解。
 蒙特拉洛方式求解渲 ...
图形学-光线追踪4(概率论)
 概率论简单回顾
 随机变量 Random Variable
随机变量 $ X $:代表潜在值的分布。
概率密度函数(PDF)$ X \sim p(x) $:描述随机过程选取值 $ x $ 的相对概率。
示例:均匀的概率密度函数:在一个定义域内所有值的可能性均等。
例如:六面骰子,$ X $ 取值为 $ 1,2,3,4,5,6 $,且 $ p(1)=p(2)=p(3)=p(4)=p(5)=p(6) $。
 概率 Probabilities
存在 $ n $ 个离散值 $ x_i $,每个值对应概率 $ p_i $。
概率分布的要求:
$ p_i \geq 0 $
$ \sum_{i = 1}^{n} p_i = 1 $
六面骰子示例:$ p_i = \frac{1}{6} $
 随机变量的期望 Expected Value of a Random Variable
是从随机分布中反复抽取样本时得到的平均值。
若随机变量 $ X $ 来自具有 $ n $ 个离散值 $ xi $(对应概率为 $ p_i )的分布,)的分布,)的分布, X $ 的期望值为:$ E ...
图形学-光线追踪(渲染方程)
 Radiance vs Irradiance 辐射/亮度 vs 辐照度
Irradiance 辐照度: 单位面积上接收到的辐射功率
Radiance 辐射/亮度: 在dωd\omegadω立体角方向上,单位面积上接收到的辐射功率
沿着某个方向ω\omegaω入射到点ppp上的辐射亮度为Li(p,ω)L_i(p, \omega)Li(p,ω),则该点在该方向ω\omegaω上单位面积上接收到的辐照度为dE(p)d E(p)dE(p)。
dE(p,ω)=Li(p,ω)⋅cosθ⋅dωd E(p, \omega) = L_i(p, \omega) \cdot \cos \theta \cdot d\omega \\
dE(p,ω)=Li(p,ω)⋅cosθ⋅dω
则在所有方向上入射到点ppp上的辐照度为:
E(p)=∫H2Li(p,ω)⋅cosθ⋅dωE(p) = \int_{H^2} L_i(p, \omega) \cdot \cos \theta \cdot d\omega
E(p)=∫H2Li(p,ω)⋅cosθ⋅dω
 BRDF 双向反射分布函数(Bidirect ...
图形学-Animation动画2
 单质点模拟
首先,提出先聚焦于单个粒子的运动,之后再将研究推广到大量粒子的情况。
为开展研究,假设粒子的运动由速度矢量场决定。该速度矢量场是位置xxx和时间ttt的函数,记为v(x,t)v(x,t)v(x,t)。
右侧的图示直观呈现了速度矢量场(由箭头表示)以及粒子在该速度场中运动的轨迹。
 常微分方程 Ordinary Differential Equation (ODE)
计算速度场内粒子的位置需要计算一阶常微分方程
dxdt=x˙=v(x,t)\frac{dx}{dt} = \dot{x} = v(x, t)
dtdx=x˙=v(x,t)
 欧拉方法 Euler’s Method
欧拉方法,又称为前向欧拉,显式欧拉,是数值积分中最简单的方法之一。
使用很简单的迭代的方式
很常见
很不准
结果通常不稳定
始终使用前一段的量估计下一帧的量。
xt+Δt=xt+Δt⋅x˙tx˙t+Δt=x˙t+Δt⋅x¨tx^{t+\Delta t} = x^t + \Delta t \cdot \dot{x}^t \\
\dot{x}^{t+\Delta t} = \dot{x}^t + ...
图形学-Animation动画
动画是一种信息传递的工具
美学经常比技术重要
是模型的延伸 → 连续性
将场景模型表示为时间的函数
输出一系列图像,当顺序查看时提供运动的感觉
帧率
电影:24FPS
视频:30FPS、29.994FPS
VR:90FPS (不晕的基础要求)
 关键帧动画
动画师创建关键帧
助手(人工或程序)创建中间帧
其中的关键技术即为插值技术
线性插值: 通常可能不太满足动画需求
样条插值: 更平滑的插值方式
Catmull-Rom 样条
B 样条
Bezier 曲线
 物理仿真动画
模拟、仿真:推导、实现公式,模拟出物体应该怎么变化
例子:布料模拟、流体模拟
 质点弹簧系统 Mass-Spring System
一个弹簧左右连接两个质点,位置是a,b\mathbf a, \mathbf ba,b,弹簧劲度系数为kSk_SkS。
当弹簧拉伸时候,弹簧会对两个质点施加一个拉力:
质点a\mathbf aa受到的往b\mathbf bb方向的拉力为:
fa→b=kS(b−a)\mathbf f_{a \rightarrow b} = k_S ( \mathbf  ...
图形学-光线追踪(辐射度量学)
 背景
Radiometry(辐射度量学)是研究光的物理量的学科,主要关注光的能量和强度等方面。它与光线追踪密切相关,因为光线追踪需要模拟光的传播和交互。
它定义了光在空间中的各种物理量,根据这些物理量用正确的物理方式来计算光照。
 Radiant energy 辐射能
Radiant energy 是电磁辐射的能力,单位是焦耳(J)。通常使用符号 $ Q [J = Joule]$ 来表示。
 Radiant flux/power 辐射通量
Radiant flux 是单位时间内能量发射,反射,传播,接收的能量量。单位是瓦特(W)。通常使用符号 $ \Phi = \frac{dQ}{dt}[W = Watt = J/s]$ 来表示。对于光而言,通常使用 lumen(流明)来表示。
 Angle & Solid Angles 角与立体角
 Angle 角
角度:弧长和半径的比值。
θ=lr\theta = \frac{l}{r}θ=rl
整个圆的角度是2π2\pi2π。
 Solid Angle 立体角
立体角:是角度在三维空间中的推广。它是一个球面上某个区域的面积与球半 ...
图形学-Geometry几何
表达几何的方式有很多种,基本可以分为两大类:
隐式表示
Algebraic Surface 代数曲面
Level Set 水平集
Distance Function 距离函数
Signed Distance Function(SDF): 有符号距离函数
Unsigned Distance Function(UDF): 无符号距离函数
…
显式表示
Point Cloud 点云
Polygon Mesh 多边形网格
subdivision, NURBS
…
 几何的表示方式
 几何的隐式表示
隐式不会告诉具体的点在哪,只描述点满足什么约束关系,如对于一个球的隐式表示如下:
x2+y2+z2=r2x^2 + y^2 + z^2 = r^2
x2+y2+z2=r2
更通用的表述方式为满足f(x,y,z)=0f(x, y, z) = 0f(x,y,z)=0的点集,就可以描述一个隐式的几何表示。
隐式表示的缺点是不直观并不知道有哪些点,优点是很轻易可以判断一个点是否在几何上,几何内还是几何外。
 基于代数方法的隐式表示
使用代数方程来描述几何体
 CSG(Const ...
图形学-Sharding着色
图形学中 Sharding 的概念值对一个物体应用不同的材质的过程。
 光照 Lighting
 Blinn-Phong 反射模型(BPR)
Blinn-Phong 反射模型是对光线与物体表面交互的一个经验模型。
它将光线与物体表面的交互分为三个部分:
环境光:物体表面在没有直接光照的情况下的颜色
漫反射:物体表面在直接光照下的颜色,取决于光源的颜色和物体表面的颜色
高光反射:物体表面在直接光照下的高光部分,取决于光源的颜色、物体表面的颜色和观察者的视角
计算光线从一个着色点反射到相机中中的颜色:
输入变量定义如下:
vvv: 观察者的视角的单位向量
lll: 表示光源的方向的单位向量
nnn: 物体表面着色点的单位法向量
表面材质(颜色,反光程度,…)
 漫反射
一根光线从光源发出,照射到着色点后,会沿四周反射,即为漫反射。
Lambert’s Cosine Law 描述了漫反射的强度与光线入射角的关系。
当光线垂直入射时,物体表面几乎可以接收到全部的光线能量。
当光线倾斜入射时,物体表面接收到的光线能量会减少。
当光线平行于物体表面时,物体表面几乎无法接收到光线能 ...
图形学光栅化
光栅化是把标准化立方体渲染到屏幕上的过程
屏幕的定义:
一段像素数组
像素的数组长度就是分辨率的尺寸
屏幕是一个典型的光栅成像设备
像素的定义:
Pixel 是 Picture Element 的缩写
一个简单的假设是每个像素认为是一个拥有单一颜色的小正方形(当然还有更复杂的假设放在后面讨论)
每个像素的颜色可以用 RGB 三个分量来表示
屏幕空间的定义(这里和虎书中的定义有所差别):
屏幕空间是一个二维坐标系,原点在左下角,x 轴向右,y 轴向上
每个像素的索引由(x, y)唯一表示,x, y 均为整数
像素索引的范围是 [0,width−1]×[0,height−1][0, width-1] \times [0, height-1][0,width−1]×[0,height−1]
像素的中心点坐标为 (x+0.5,y+0.5)(x + 0.5, y + 0.5)(x+0.5,y+0.5)
屏幕空间的坐标范围是 [0,width]×[0,height][0, width] \times [0, height][0,width]×[0,height]
 Viewport ...
椭圆周长公式推导
 参考资料
本文是针对视频
https://www.bilibili.com/video/BV1ZF411f7Xv
整理的笔记
 推导
椭圆的参数方程:
{x=acosθy=bsinθ\begin{cases}
x = a \cos \theta \\
y = b \sin \theta
\end{cases}
{x=acosθy=bsinθ
对参数方程求微分:
{dx=−asinθdθdy=bcosθdθ\begin{cases}
dx = -a \sin \theta d\theta \\
dy = b \cos \theta d\theta
\end{cases}
{dx=−asinθdθdy=bcosθdθ
则周长可以表示为:
C=∫02πdx2+dy2=∫02π(−asinθ)2+(bcosθ)2dθ=∫02πa2(1−cos2θ)+b2cos2θdθ=∫02πa2−(a2−b2)cos2θdθ=a∫02π1−a2−b2a2cos2θdθ=4a∫0π21−a2−b2a2cos2θdθ\begin{aligned}
C &= \int_0^{2\pi}  ...