Mathematics for Computer Graphics

计算机图形学
数学与交互笔记

线性代数 · 球面积分 · 概率统计 · 函数逼近
Spherical Integral Monte Carlo Spherical Gaussians Jacobian
01 图形学数学体系全局概览

现代计算机图形学(尤其是实时渲染与离线路径追踪)建立在坚实的数学基础之上。我们将整个体系提炼为以下四大支柱:

📐 线性与几何代数

向量与矩阵:点积(光照余弦项)、叉积(法线/面积元)。
变换:齐次坐标、正交/透视投影、Rodrigues 旋转公式。
四元数:万向节死锁解决、Slerp 插值。

📈 微积分与分析

坐标系:球面坐标参数化、立体角面积元。
微积分:Jacobian 换元积分、弧长公式。
向量分析:梯度/散度、Gauss/Stokes 定理(可见性与光照积分)。

🎲 概率与统计

分布:均匀、余弦加权、GGX 法线分布。
蒙特卡洛:重要性采样 (IS)、多重重要性采样 (MIS)。
方差:估计器收敛速度

✨ 函数逼近与数值计算

展开:泰勒展开 (Shader 优化)、球谐函数 (SH, 低频环境光)。
球面高斯 (SG):高频光照与 SSS 拟合。
求交:Möller–Trumbore (射线-三角)、分离轴定理 (SAT)。

02 微积分:球面坐标系与立体角积分

在 BRDF 归一化、IBL 预计算以及渲染方程中,我们几乎无时无刻不在球面上做积分。理解**立体角微元(Solid Angle Differential)**的来源是图形学数学的必修课。

单位向量参数化

其中极角 ,方位角

微元面积 的推导

为什么立体角微元是 ?这里提供几何直观与代数严谨两种推导视角:

在球面上,考虑一个极小"矩形补丁"。

  • 1 方向弧长:固定 ,沿子午线移动 ,弧长为
  • 2 方向弧长:固定 ,绕 Z 轴旋转。由于此时旋转的真实半径(投影到 XY 平面)是 ,因此弧长为
  • 3 面积元:相乘得到 。在单位球 () 上,即为立体角微元

,我们可以通过度量矩阵(第一基本形式)或偏导叉积计算换元缩放因子(Jacobian)。

分别对 偏导:

计算叉积并取二范数(或计算度量矩阵 的行列式 ),最终结果均为 。当 时得

▸ 交互:极角 与微元面积的关系可视化

在北极点()附近, 趋于 0,微小角度 张开的面积极小;而在赤道()附近, 最大,微元面积最大。这就是高纬度地图投影变形的原因。

旋转半径
0.707

图形学高频积分结论速查

公式几何/物理意义应用场景
单位球的总立体角 环境光积分解 / 点光源能量
半球余弦积分 Lambertian BRDF 归一化 ()
高次余弦积分 Phong / Blinn-Phong 波瓣能量归一化
03 辐射度量学与蒙特卡洛积分

真实感渲染的核心在于求解**渲染方程 (Rendering Equation)**,它描述了表面某点 沿方向 的出射辐射率

渲染方程 (Kajiya 1986)
BRDF 的核心约束

1. 非负性
2. 赫米特对称性 (Helmholtz Reciprocity)
3. 能量守恒

由于存在环境贴图(IBL)或复杂材质,该积分极难求解析解,只能依靠**蒙特卡洛积分 (Monte Carlo Integration)**:通过按照某种概率密度函数 (PDF) 随机采样方向,来估计积分期望。

蒙特卡洛估计量

为了降低方差(即渲染画面中的噪点),我们通常采用**重要性采样 (Importance Sampling)**。例如,对于漫反射表面,根据余弦项进行采样,其 PDF 为 。对于高光材质,我们利用反演法 (Inverse Transform) 针对 GGX 法线分布进行采样。

04 函数近似与球面高斯 (SG)

在实时渲染中,我们无法负担逐像素的蒙特卡洛积分。除了使用低频的球谐函数(SH,通常到 3 阶即可近似漫反射)外,对于 高频镜面反射次表面散射 (SSS) 的烘焙与拟合,我们常引入球面高斯 (Spherical Gaussians, SG)

标准 1D 高斯 vs 球面高斯 SG
广
:求值方向 (单位向量)
:波瓣轴向 (Lobe Axis)
:锐度/带宽 (Sharpness,正数,越大越锐利)
:振幅 (Amplitude)

SG 的强大之处在于其代数性质极其优良:两个 SG 的乘积仍然是一个 SG,且 SG 的内积积分存在闭合解析解(Closed-form solution)。这使得它非常适合用来近似 BRDF 波瓣和入射光分布(如 ASG, Anisotropic SG)。

▸ 交互:球面高斯 (SG) 波瓣形态剖面

在二维截面上观测 SG 的形态。固定求值向量 为角度 ,轴向 取决于偏移角。注意观察 是如何影响"粗糙度"(波瓣宽度)的。