Games101-系列课程笔记-Lecture-11

Games101-系列课程笔记

Lecture 11 Geometry 2

  • Games101-系列课程笔记
  • 更多显式表示
  • 曲线
    • 贝塞尔曲线(Bézier Curves)
      • 简单定义
      • 德卡斯特里奥(de Casteljau)算法
      • 贝塞尔曲线性质
      • 高阶贝塞尔曲线存在的问题
    • 其他样条曲线
      • 基样条(B-splines)
  • 曲面
    • 贝塞尔曲面
      • 图示
      • 原理
  • 参考


本篇博客内容为Games-101系列课程的 Lecture 11 Geometry 2(Curves and Surfaces)内容,有兴趣的小伙伴可前往GAMES101官网下载相关内容。GAMES101官网


更多显式表示

  • 三角形网格(triangle meshes)
  • 贝塞尔曲面(Bezier surfaces)
  • 细分曲面(subdivision surfaces)
  • 非均匀有理B样条(NURBS)
  • 点云(point cloud)

曲线

贝塞尔曲线(Bézier Curves)

简单定义

贝塞尔曲线就是在确定起点和终点的前提下,根据其他控制点的位置,绘制出的一条符合控制点走向的平滑曲线。n阶贝塞尔曲线有n+1个控制点,下图是3阶贝塞尔曲线。

德卡斯特里奥(de Casteljau)算法

  • 思想:取每个控制点的连线,并在每条连线的t(取值范围0-1)位置生成新的控制点并用新的控制点继续连线,直到最后一条连线的t位置就是整段贝塞尔曲线的t(取值范围0-1)点坐标
  • 图示:Games101-系列课程笔记-Lecture-11_第1张图片
    Games101-系列课程笔记-Lecture-11_第2张图片


  • 树状表示
  • 计算公式

贝塞尔曲线性质

  • 贝塞尔曲线起始点就是控制点中的起始点,终止点就是控制点中的终止点。
    对于三阶贝塞尔曲线(下同),即:b(0)=b0,b(1)=b3
  • 三阶贝塞尔曲线初始点和终止点斜率满足:
    b’(0)=3(b1-b0),b’(1)=3(b3-b2)
    因为3阶贝塞尔曲线表达式如下:
    Games101-系列课程笔记-Lecture-11_第3张图片
    求导就可以得到上述性质。
  • 仿射变换不变性
    1、先对控制点做仿射变换,再根据变换后的控制点画贝塞尔曲线
    2、先画贝塞尔曲线,再对贝塞尔曲线上的点做仿射变换
    1和2的结果完全一样
  • 凸包(Convex hull)性质
    即贝塞尔曲线一定在所有控制点构成的凸包内

高阶贝塞尔曲线存在的问题


可以看到10阶贝塞尔曲线中间的控制点没有对曲线走向造成影响,这是高阶Bezier曲线的固有问题。
解决方式:
对控制点进行拆分,以每四个点作为控制点,构成三阶贝塞尔曲线。相邻曲线间的平滑问题可以通过调整控制点位置解决(一般来说C1连续就可以满足要求,如果需要更高精度的连续可以采用C2…连续)。

其他样条曲线

基样条(B-splines)

  • 相较于贝塞尔曲线要求更多信息
  • 满足贝塞尔曲线的所有性质

曲面

贝塞尔曲面

图示

原理

首先,贝塞尔曲面由4×4个控制点得到。由于每行都有4个控制点,因此对每行可以得到1个三阶贝塞尔曲线。
Games101-系列课程笔记-Lecture-11_第4张图片
我们在这四个曲线上选择同样的时间u,可以得到u时刻的4个点(如上图)。利用这四个点在竖直方向画出贝塞尔曲线,得到下图。
Games101-系列课程笔记-Lecture-11_第5张图片
由0-1中无数的u可以得到无数条对应的上图蓝色曲线,由这些曲线构成的面就称为贝塞尔曲面。
Games101-系列课程笔记-Lecture-11_第6张图片
贝塞尔曲面上每个点都可以用一个二维坐标(u,v)表示,这是一种显式化参数的表现方式,结果如下图。


参考

[1]. https://zhuanlan.zhihu.com/p/268031177
[2]. GAMES101_Lecture_11.pdf
[3]. Shirley P , Marschner S R . Fundamentals of Computer Graphics[M]. AK Peters, 2005.

你可能感兴趣的:(Games101系列课程笔记,几何学,图形学,3d,算法,图形渲染)