DongGu
几何的基本表示方法

几何的基本表示方法

这一篇我们进入图形学中几何的讲解。

通常,几何的表示方法被严格划分为两大阵营:隐式几何表示(Implicit Representations)和显式几何表示(Explicit Representations)。

下面我们分别介绍一下这两种表示方法。

隐式几何表示

隐式表示并不直接告诉你表面上有哪些点,而是给出一个满足特定关系的数学公式或规则。对于空间中任意一点 ,如果将其代入函数 ,当 时,说明该点刚好位于几何体的表面上。

代表方式有:代数曲面 (Algebraic Surfaces)、构造实体几何 (Constructive Solid Geometry, CSG)、符号距离场 (Signed Distance Fields, SDF) 等。

代数曲面

代数曲面使用纯数学方程直接定义几何形状。这种方法非常精确,但只能表示相对简单的规则形状。

代数曲面

如图,代数曲面可以精确地表示很多形状,但是对于复杂图形,表示函数会极其复杂。

构造实体几何

这种方法通过对基本的隐式几何体(如球体、立方体、圆柱体)进行布尔运算(交集、并集、差集)来构建复杂的形状。这种方法在工业 CAD 设计软件中非常常见。

构造实体几何

如图,我们可以利用布尔运算,得到复杂形状。

符号距离场

这种方法不记录表面本身,而是记录空间中每个点到离它最近的表面的距离。如果距离为正,表示点在物体外部;如果为负,表示点在内部;为零则表示在表面上。SDF 在现代高级渲染(如光线步进、流体模拟以及 Unreal Engine 5 的 Lumen 技术)中应用极为广泛。

隐式表示的特点

  • 优势:非常容易判断一个点是在物体内部还是外部;布尔运算极其简单;理论上具有无限的分辨率,镜头拉得再近也不会产生锯齿。
  • 劣势:很难直观地知道表面具体长什么样;极难在表面上均匀采样;难以直接对特别复杂、无规则的现实形状(如人脸、衣服褶皱)进行建模。

显式几何表示

显式表示是直接或参数化地给出构成几何体表面的所有点或面片。这也是目前游戏和实时渲染中最主流的方式。你可以把它们想象成由很多微小的零件拼凑起来的壳。

代表方法有:点云 (Point Cloud)、多边形网格 (Polygon Mesh)、参数曲线与曲面 (Parametric Curves and Surfaces)。

点云

这种方法是最简单的显式表示。它就是包含大量 3D 坐标 的列表。通常由 3D 激光扫描仪(LiDAR)直接扫描现实世界获取。点云包含的信息最原始,但缺乏点与点之间的连接关系(拓扑结构),所以很难直接渲染出光照效果。

点云

如图,只要点足够多,就可以显示出精细的模型。

多边形网格

这种方法是图形学绝对的”统治者”,尤其是三角形网格(Triangle Mesh)。它由顶点 (Vertices)、边 (Edges) 和面 (Faces) 组成。因为三角形是最简单的多边形,且三个点必定共面,现代 GPU 都是专门为了极快地处理三角形而设计的。市面上 99% 的 3D 游戏模型都是基于网格的。

多边形网格

如图,我们可以通过许多的三角形面片拼出完整的形状。

这种方法还有许多网格处理方法,我们之后再介绍。

参数曲线与曲面

这种方法是通过一系列控制点 (Control points) 和参数方程 映射到 3D 空间 来定义平滑的表面。广泛应用于汽车工业和 3D 动画软件的建模阶段,因为它们非常平滑、易于调整且不受分辨率限制。

贝塞尔曲线
贝塞尔曲面

如图,这是贝塞尔曲线和曲面,属于参数方法,也是我们后面要重点介绍的。

显式表示的特点

  • 优势:极其方便进行光栅化渲染(绘制到屏幕上);很容易在表面上采样、绑定骨骼和贴图(UV 映射);能极其细致地刻画任意复杂的形状。
  • 劣势:很难判断一个给定的点是在物体内部还是外部(需要复杂的射线检测算法);布尔运算非常复杂且容易产生几何错误(如破面)。

总结

简单来说,隐式几何像是在“制定规则”(符合这个方程的才是我的表面),适合做物理碰撞检测、布尔运算和光线追踪;而显式几何像是在“直接画图”(把这些点连成一个个三角形),极度适合现代 GPU 进行高效的实时渲染。


这次的插图来自画师 mmAir

图片地址:https://www.pixiv.net/artworks/124883229

本文作者:DongGu
本文链接:https://donggu.xyz/2026/06/08/图形学入门/几何的基本表示方法/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可