1058 字
5 分钟
GAMES101 Lecture 11 Geometry 2 (Curves and Surfaces)
2026-04-03
2026-04-23

显式几何#

点云 Piont Cloud#

密度足够高的点,大量的点直接形成表面 点云变成多边形的面,点云密度很低就很难画出来.

Polygon Mesh多边形面#

用三角形或四边形来表示物体

The Wavefront Object File(.obj)#

把空间中的点、法线和纹理坐标组合起来的文件 f v(顶点/vt(纹理坐标))/vn(法线) *3 来表示一个三角形 将面表示出来,定义形成的物体

曲线#

Bezier Curve贝塞尔曲线#

用一系列的控制点去定义一个曲线,这些控制点定义虚线满足的性质.

以从p0到p1为切线往前走,曲线会在p3结束,结束时沿着p2到p3的切线走.这样就可以得到唯一的曲线

曲线不一定要经过控制点,取决于我们怎么定义

怎样画贝塞尔曲线#

de Casteljau算法#

假设曲线上可以定义起点在时间0,终点在时间1.我只需要找在[0,1]中的时间t时刻,点所在的位置.

假设b0是时刻0,b1是时刻1,假设t在1/3的位置上,那就能找出b01位置,同理b1是时刻0,b2是时刻1,找1/3的位置,就能找出b11的位置;在以b10作为时刻0,b11作为时刻1,找到1/3的点,我们就认为这个点就是t时刻的点.

图形是通过参数t来表示的,因此是显式几何

当t = 0.5时

形成过程像递归

找出控制点与时间t的代数关系

显式地写出表达式

这里要注意b0乘以的是(1-t),我们把t=0带入就能发现这是对的. 两次过程的系数就是 (1-t + t)² (把1-t看作一个数进行开方)

给n+1个控制点,可以得到n阶贝塞尔曲线. 该贝塞尔曲线在任意时刻t,都是各控制点的线性组合

不用限制控制点限制在二维平面内

伯恩斯坦多项式

贝塞尔曲线的性质:

  1. 过起点和终点
  2. 三次贝塞尔曲线(四个控制点):起始切线一定是3(b1-b0),结束的切线一定是3(b3-b2)
  3. 仿射变化下,直接对顶点做仿射变换再画出的贝塞尔曲线的结果和先画贝塞尔曲线再进行仿射变化的结果一致 ----- 对贝塞尔曲线进行仿射变换可以转化成先对顶点做仿射变化再画出贝塞尔曲线.(投影不成立)
  4. 凸包性质

凸包性质#

贝塞尔曲线一定在控制点形成最大凸多边形内.

控制点如果是一条直线----根据凸包性质就能知道贝塞尔曲线就是这条直线.

Picewise Beizer Curves 逐段贝塞尔曲线#

贝塞尔曲线和控制点的关系不直观.控制点多了就不太好得到想要的形状.

每次用很少的控制点来定义贝塞尔曲线,再把这些贝塞尔曲线连起来. (习惯用每四个控制点来形成贝塞尔曲线)

如何使两段贝塞尔曲线的连接处是连续的. 利用3次贝塞尔曲线的性质(三次贝塞尔曲线(四个控制点):起始切线一定是3(b1-b0),结束的切线一定是3(b3-b2)),使得两点之间中点的距离相同且共线,就认为是连续的.

C0连续:前一段的终点 = 后一段的起点

C1 连续:切线连续

Splines曲线 (样条)#

一个可控的曲线

B-splines B样条#

想要实现多个点曲线修改的局部性(能够对曲线进行一个点局部性修改,而不影响整个曲线)

曲面 Surface#

贝塞尔曲面

用贝塞尔曲线得到贝塞尔曲面

如何实现? 考虑双线性插值

贝塞尔曲面表达式#

需要用两个不同的时间t来表示,u和v

贝塞尔曲面为什么是显式曲面的原因就是通过u,v映射出来的.

几何处理#

  • 网格细分
  • 网格简化
  • 网格正规化
GAMES101 Lecture 11 Geometry 2 (Curves and Surfaces)
https://dingfengbo.vercel.app/posts/games101/lecture-11-geometry-2-curves-and-surfaces/
作者
Eureka
发布于
2026-04-03
许可协议
CC BY-NC-SA 4.0