Tony102's Blog - 计算机图形学
type: channel
link: https://tony102.com/index.php/tag/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/
items: Miscellaneous Math for CG 为计算机图形学准备的数学
items: 3D Gaussian Splatting for Real-Time Radiance Field Rendering

Miscellaneous Math for CG 为计算机图形学准备的数学
type: item
date: 2024-04-18T19:26:00+08:00
description: VectorCross Product叉积，简单回顾一下$$ ||\vec{a} \times \vec{b}|| = ||a||||b|| \sin \phi $$而 $\vec{a} \times \vec{b}$ 的方向可以用右手系来判断。在笛卡尔坐标系中，其结果可以用：$$ \vec{a} \times \vec{b} = (y_az_b - z_ay_b, z_ax_b - x_az_b, x_ay_b - y_ax_b) $$Orthonormal BasesConstructing a Basis from a Single Vector利用单个向量构造正交基首先取该向量的方向向量：$$ \vec{w} = \frac{\vec{a}}{||\vec{a}||} $$之后选取任意一个与 $\vec{w}$ 不共线的向量 $\vec{t}$，利用叉积来构造与 $\vec{w}$ 正交的单位向量$$ \vec{u} = \frac{\vec{t} \times \vec{w}}{||\vec{t} \times \vec{w}||} $$Constructing a Basis from a Single Vector将 $\vec{u}$ 构造中的 $\vec{t}$ 替换成第二个向量 $\vec{b}$ 即可。Curves and Surfaces2D Implicit Curves一种常见的描述二维曲线的方法是隐等式（Implicit Equation）。二维曲线的一般形式是：$$ f(x,y) = 0 $$其中， 点 $(x,y)$ 是 $f(x,y)=0$ 的根，表示该点在曲线上。反之则不在。例如，一个圆可以表示为 $f(x,y) = (x-x_c)^2 + (y - y_c)^2 -r^2$ 。因为在曲线上的点并非显式地表达出来，而是要解这个等式，所以成为 Implicit Equation。此外，我们还可以用向量来压缩我们的表达式。如果我们有 $\vec{c} = (x_c, y_c)$ 和 $\vec{p} = (x,y)$，那么以 $(x_c, y_c)$ 为圆心 $r$ 为半径的原则可以用这些满足以下条件的位置向量来表示：$$ (\vec{p} - \vec{c}) \cdot (\vec{p} - \vec{c}) - r^2 = 0 $$由点积的性质可知，该式也等价于：$$ \vert \vert \vec{p} - \vec{c} || -r^2 = 0 $$2D Gradient这一节我们讨论2D梯度假如我们认为 $f(x,y)$ 是一块高地且高度$=f(x,y)$，那么梯度向量指向的是最大向上斜率的方向。梯度向量 $\nabla f(x,y)$ 由下式给出：$$ \nabla f(x,y) = (\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}) $$在一个在隐曲线 $f(x,y) = 0$ 上的点测量的梯度向量是与 tangent vector 在该点垂直的一个向量。这个垂直的向量通常称为 normal vector （法向量）。因为梯度向量指向的是最大向上斜率的方向，这说明了梯度向量指向了 $f(x,y) > 0$ 的区域。3D Implicit Surfaces类似于 2D 的情形，我们可以简单给出 3D Implicit Equation 来描述一个 3D 平面$$ f(x,y,z) = 0 $$同理，可以用向量来表示。有 $\vec{p} =(x,y,z)$ ，上式可以重写为：$$ f(\vec{p}) = 0 $$Surface Normal to an Implicit SurfaceSurface Normal，即法线。其目的是为了减小计算量，是一个垂直于平面的向量。任意一个在平面上的点都有可能有不同的法向量。类似地，梯度为2D隐曲线指出了一条法线，在点 $\vec{p}$ 处的3D平面发现由隐函数的梯度给出：$$ \vec{n} = \nabla f(\vec{p}) = (\frac{\partial f(\vec{p}}{\partial x}, \frac{\partial f(\vec{p})}{\partial y}, \frac{\partial f(\vec{p})}{\partial z}) $$Implicit Planes上面提到了法线。我们是否可以用法线来定义一个平面？假如我们有一个无限平面，穿过点 $\vec{a}$，且在该点有法线 $\vec{n}$。则该平面的 Implicit Equation 可以表达为：$$ (\vec{p} - \vec{a}) \cdot \ve…

3D Gaussian Splatting for Real-Time Radiance Field Rendering
type: item
date: 2024-04-16T23:40:00+08:00
description: 简述近期 3D-Reconstruction 的无敌热点，纯拼手速。该文章提供了一种利用高斯分布控制椭球来重建空间中几何体的方法，区别于 Nerf 利用了神经网络，该方法可以视为是一种传统方法。优点在于精度高，速度快，可以做到 1080 30fps 的实时重建。缺点在于内存消耗较大（存储的 Gaussian Splatting 的信息较多）。此外，该文章还提供了一种基于 GPU 的基数排序，来提升光栅化速度的方法。 没有提供消融实验来说明速度的提升是否来源于此。参考3DGS