0%

圆/球的均匀采样

复习一下数学。也不是特别严谨的数学,但是太严谨有点钻牛角尖了。

参考:

开局,我们只有两个服从 $U(0, 1)$ 的随机变量 $\xi_0$ 和 $\xi_1$。我们需要用它们构造出在圆面或者球壳上均匀分布的点。

逆变换采样

首先讲一下如何使用一个 0-1 均匀分布的随机变量得到累积分布函数已知的随机变量。直观理解就是:随机那个变量的 CDF 值,然后通过逆函数就可以得到那个变量。

Wiki 上是这么说的:对于任何一个实数域上的随机变量 $X\in\mathbb R$,随机变量 $F^{-1}_X(U)$ 服从与 $X$ 相同的分布,其中 $F^{-1}_X$ 是 $X$ 的累积分布函数(CDF) $F_X$ 的广义逆分布函数,$U$ 是 0 到 1 的均匀分布。称之为广义是因为有的 CDF 不是严格递增,那么这个时候 $F^{-1}(p) = \inf{x\in \mathbb R: F(x)\ge p}$,即下确界(最大下界)。

简单证明一下:

  • 假设 CDF $F_X$ 是单调的,尝试找到一个 $T: [0, 1]\rightarrow\mathbb R$ 使得 $T(U)$ 与 $X$ 分布相同
  • 由 CDF 定义,$F_X(x)=P(X\le x)$
  • 代入,$F_X(x) = P(T(U)\le x)$
  • 两边应用逆函数,$F_X(x) = P(U\le T^{-1}(x))$
  • 对于 0-1 均匀分布的 $U$,$P(U\le u) = u$
  • 则 $F_X(x) = T^{-1}(x)$,等价于 $F^{-1}_X(u) = T(u)$

圆、球的均匀采样

所以问题的关键就是求出 CDF。

既然都是圆就用圆的坐标系求了,极坐标系极径 $\rho\in[0, 1]$,极角 $\theta\in[0, 2\pi]$;球坐标系距离 $\rho\in[0, 1]$,天顶角 $\theta\in[0, \pi]$,方位角 $\phi\in[0, 2\pi]$。

圆面均匀采样

圆面积元是 $\rho\mathrm{d}\rho\mathrm{d}\theta$,每个面积元的概率是 $1\over\pi$,所以概率密度函数 $f(\rho, \theta) = \frac{\rho}{\pi}$。然后求边缘概率分布:

CDF:

所以生成方式是:

球壳均匀采样

球面的面积元是 $\sin\theta\mathrm d\theta \mathrm d\phi$,概率密度 $f(\theta, \phi) = \frac{\sin\theta}{4\pi}$,边缘概率分布:

CDF:

生成:

球体均匀采样

球的体积元是 $\rho^2\sin\theta\mathrm d\rho\mathrm d\theta \mathrm d\phi$,概率密度 $f(\rho, \theta, \phi) = \frac{3}{4\pi}\rho^2\sin\theta$,边缘概率分布:

CDF:

生成,这里多用了一个随机变量:

半球壳余弦采样

许多 BRDF 是按照余弦分布采样的,即 $p(\omega)\propto\cos\theta$,也就是如下的积分结果成立:

分部积分算出常数 $c=\frac{1}{\pi}$,概率密度 $f(\theta, \phi) = \frac{\cos\theta\sin\theta}{\pi}$。

继续分部积分:

pbrt 上有另外一种方法(Malley’s method)以及证明,用到了概率分布变换。

概率分布变换

比较详细的解释,相当于从 0-1 随机变量生成任意分布变量的推广。简记一下:

由已知分布的随机变量 $X\sim f_X$ 与映射 $Y = T(X)$ 计算 $Y$ 的概率密度:

多维变量的话就是微分换成雅可比矩阵。