【GAMES101笔记速查——Lecture 11 Geometry2(Curves and Surfaces)】

目录

1 曲线(Curves)

1.1 贝塞尔曲线(Bézier Curves)

1.1.1 如何画出贝塞尔曲线——de Casteljau算法

1.1.2 贝塞尔曲线——代数公式

1.1.3 贝塞尔曲线——一般代数公式

1.1.4 贝塞尔曲线的性质

(1)曲线一定过起点和终点

(2)起始点和结束点的切线的系数都可以计算出来,如果是四个控制点的话,切线的系数为3。

(3)仿射变换前后的几个控制点,所形成的贝塞尔曲线一致。这条性质仅限定为放射变换,投影变换并不满足这个性质

(4)贝塞尔曲线在控制点形成的凸包内。

1.2 逐段贝塞尔曲线(Piecewise Bézier Curves)

(1)C0连续:两个点相等即可

(2)C1连续:点相等,切线一致,一阶导连续

(3)C2连续:二阶导数连续

1.3 其他样条曲线

2 曲面(Surfaces)

2.1 贝塞尔曲面(Bézier Surfaces)

2.1.1 如何用贝塞尔曲线得到贝塞尔曲面?

2.2 网格(Mesh)


1 曲线(Curves)

利用曲线可以实现相机的移动轨迹

利用曲线还可以用模型沿着轨迹移动

利用曲线定义字体

1.1 贝塞尔曲线(Bézier Curves)

贝塞尔曲线属于显式表示法。

用一系列的控制定义一条曲线

比如下面这个例子,定义了曲线的起始点为P0,终点为P3,并且沿着P0到P1、P2到P3的切线方向走。

1.1.1 如何画出贝塞尔曲线——de Casteljau算法

给定3个点,生成的就叫做二次贝塞尔曲线

假设:曲线的开始点在时间0,结束点在时间1。

问题:求任意时间t的时候,这个点的位置。把画线的问题转化成了画点的问题。

解:

从b0-b1线段中找到 t 的位置 b01

从b1-b2线段中找到 t 的位置 b11

连接b01和b11

从b01-b11线段中找到 t 的位置 b02

(下标表示出发点;上标表示第几次操作,在三个点构成的原始线上的操作就是第1次,在新生成的线上的操作就是第二次,以此类推。)

        

        

如果我们研究的是输入为4个点的情况,那么,贝塞尔曲线的绘制过程是:

从b0-b1线段中找到t的位置b01

从b1-b2线段中找到t的位置b11

从b2-b3线段中找到t的位置b21

将上述这三个点连接起来

从b01- b11线段中找到t的位置b02

从b11- b21线段中找到t的位置b12

将上述这两个点连接起来

从b02- b12线段中找到t的位置b03

那么这个b03 点就是贝塞尔曲线上的点。

这里给出了一个动画演示

以上是贝塞尔曲线的直观解释。

1.1.2 贝塞尔曲线——代数公式

接下来,从代数层面解析这个绘制贝塞尔曲线的de Casteljau算法。

贝塞尔曲线绘制的思路就是:在相邻点之间进行多次的线性插值,然后重复这个过程,最终得到一个值。

每个插值得到新点,都可以表示为关于t、已知点的一个函数。

这个函数形式的结论也符合我们对整个绘制过程的理解:这条曲线必然是受b0\b1\b2这些已知点的控制的。

1.1.3 贝塞尔曲线——一般代数公式

这门课介绍贝塞尔曲线是先介绍了它的几何,然后才介绍了代数定义。与常规课程不同,为的是方便大家理解。

已知n+1个控制点,我们可以得到一个n阶的贝塞尔曲线。

这个曲线在任意时间t,都是已知点的线性组合,系数就是一个关于时间的多项式(二项分布/伯恩斯坦多项式)。

举个例子

如果是在三维空间中绘制贝塞尔曲线,那么就输入三维空间内的坐标点即可:

这里为什么任何一个横坐标上的值的和都为1?

答案:

这个式子的系数就是(1 - t + t)平方的展开,即1本身的展开

即,任何T时刻的伯恩斯坦多项式系数的和就是1.(竖着画一条红色线)

还有,上图是一个对称图形,可以理解为组合数学中的C(n,i)=C(n,n-i)。

1.1.4 贝塞尔曲线的性质

(1)曲线一定过起点和终点
(2)起始点和结束点的切线的系数都可以计算出来,如果是四个控制点的话,切线的系数为3。
(3)仿射变换前后的几个控制点,所形成的贝塞尔曲线一致。这条性质仅限定为放射变换,投影变换并不满足这个性质
(4)贝塞尔曲线在控制点形成的凸包内。

凸包长这样:

小问题:如果控制点都是在一条直线上,那么画出来的贝塞尔曲线是什么样的?

答:是这条线自己。因为它不能超过凸包的范围。

1.2 逐段贝塞尔曲线(Piecewise Bézier Curves)

如果用10个控制点,那么得到的曲线就不太满足要求,所以人们逐段定义。

一般每4个控制点控制一条曲线,然后将每一条曲线都拼起来。

那么如何保证衔接的地方光滑?

前者切线和后者切线,方向相同、大小相同。即,衔接点处导数连续

1.2.1 不同程度的连续性

(1)C0连续:两个点相等即可

(2)C1连续:点相等,切线一致,一阶导连续

(3)C2连续:二阶导数连续

1.3 其他样条曲线

样条曲线(splines):由控制点控制,且能满足一定的连续性。

简单来说,样条就是一个可控的曲线。

B样条曲线(B-splines):基函数样条、更容易控制,有局部性。

B样条曲线很复杂,不说了,下图给了进一步学习的链接

清华胡老师的课

其中,NURBS是B样条的延伸。

2 曲面(Surfaces)

2.1 贝塞尔曲面(Bézier Surfaces)

多块曲面拼接形成的大象、一块曲面定义的茶壶。

2.1.1 如何用贝塞尔曲线得到贝塞尔曲面?

直观理解:4*4个控制点把一个平面拉上去

在两个方向上分别利用贝塞尔曲线

这里有一个动画演示,我文字描述一下:

1.先用横向每一行的控制点生成4条贝塞尔曲线(灰色线)

2.然后在纵向上,在不同时刻t,在上述4条贝塞尔曲线上取t时刻的值,然后得到四个点,再通过这四个控制点绘制贝塞尔曲线。(蓝色线)

感觉这个过程有点像古代织布的过程,先定经纱,再缝纫纬纱

问题:不同的贝塞尔曲面怎么平滑拼接?

课程上没有多说

2.2 网格(Mesh)

网格操作:几何处理(Mesh Operations: Geometry Processing)

·网格细分(Mesh subdivision)

·网格简化(Mesh simplification)

·网格正规化(Mesh regularization)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值