当前课程知识点:Grasshopper参数化设计与建模 >  第五章 Nurbs曲线与曲面建模 >  5.1 Nurbs原理简介 >  5.1

返回《Grasshopper参数化设计与建模》慕课在线视频课程列表

5.1在线视频

下一节:5.2

返回《Grasshopper参数化设计与建模》慕课在线视频列表

5.1课程教案、知识点、字幕

本节呢

我们将给大家介绍一下

Nurbs曲线曲面建模的

基本原里以及如何使用

这一章我们给大家介绍一下
基本原里以及如何使用

控至点表示Nurbs曲线和曲面
这一章我们给大家介绍一下
基本原里以及如何使用

控至点表示Nurbs曲线和曲面

这一张呢我们给大家介绍以下

Nurbs曲线曲面建模的基本原理

我们知道Rhino是一种

基于Nurbs的建模软件
我们知道Rhino是一种

基于Nurbs的建模软件

Nurbs是Rhino当中

曲线曲面建模所采用的数学模型

因此本章的内容呢

对于我们使用Grasshopper 建模

是一种基础性的知识

也是非常重要的

希望大家能够认真学习本章的知识

Nurbs是什么呢

它的英文是Non-uniformrational B-spline

NURBS

它的字面的含意呢

翻译过来就是非均匀有理B样条曲线

Nurbs是计算器曲线和曲面建模当中

非常常用的一种数学模型
Nurbs是计算器曲线和曲面建模当中

非常常用的一种数学模型

它在处理解析的几何形态

以及建模操作所需要的

这种几何形态的时候呢

有很好的自由度以及精确性

因此Nurbs目前在CAD

就是计算器辅助设计

CAM计算器辅助制造

CAE计算器辅助工程等多个领域中

被广泛的采用

也包括我们所使用的Rhino

那么因此

我们正在学习的Grasshopper

因为它是Rhino上的一个
我们正在学习的Grasshopper

因为它是Rhino上的一个

图形化的编程平台

所以Grasshopper当中
图形化的编程平台

所以Grasshopper当中

也使用了大量的

基于Nurbs的曲线曲面建模方法

下面这两张图显示了

在Nurbs当中我们是怎样

定义一个曲线和曲面的

比如说左图显示的是

Nurbs曲线和它的控制点
比如说左图显示的是

Nurbs曲线和它的控制点

也就是说我们是通过

一系列绿色的控制点

来控制这条蓝色的Nurbs曲线

而右边这张图显示的是一个曲面

我们同样使用了控制点的方式

我们可以先思考一下

如果没有计算机的时代

我们的科学家和工匠们

他们是如何确定一条曲线的

如何绘制曲线呢

首先对于直线来讲

我们都会用直尺圆会用圆规

那么椭圆我们会用到椭圆规

这里椭圆规是个很有意思的工具

当你把十字交叉型的支架

固定在纸面上
当你把十字交叉型的支架

固定在纸面上

然后去滑动这根长的杆

这两个点都会在十字型支架的

限定当中去移动

那么当你把笔放在

最端头的这个红点这
那么当你把笔放在

最端头的这个红点这

去绘制的时候

就会得到一条标准的椭圆曲线

这些都是我们说标准的几何曲线

那么如何确定一条自由曲线呢

像这样的任意形状的自由曲线

实际上我们在日常生活

在工程中在科学当中
实际上我们在日常生活

在工程中在科学当中

都会使用到这种自由曲线
在工程中在科学当中

都会使用到这种自由曲线

那么那个时代为了确定一条自由曲线

工匠们使用了这种钉子
那么那个时代为了确定一条自由曲线

工匠们使用了这种钉子

和有弹性木条的方式

来确定一条自由曲线

我们看到在左边这张图上
来确定一条自由曲线

我们看到在左边这张图上

这个有弹性的木条它的两端被限定

同时在中间由两根钉子
这个有弹性的木条它的两端被限定

同时在中间由两根钉子

来确定它的局部形态
同时在中间由两根钉子

来确定它的局部形态

那么这样一种木条就被称为样条

在这里木条它是有弹性的

它通过自动找到弹性势能最低的位置

消除了木条上这种曲率的突变

使得曲线能够是一个均匀连续的曲线

同时呢一个很重要的特点是

有这种限位点

也就是我们说的端点
有这种限位点

也就是我们说的端点

以及中间的钉子定的这些点

这些限位点可以根据需要去移动

去设置的

因此我们就可以很灵活的去

画出各种所需要的曲线

当然这个木条也是可以重复利用的
画出各种所需要的曲线

当然这个木条也是可以重复利用的

所以这种方式在没有计算机的时代

是被广泛使用的方式

20世纪40年代开始

数学家关注spline 就是样条

前面所说的样条

关注样条所产生的曲线
前面所说的样条

关注样条所产生的曲线

并且他们成功地用数学模型

对这样的曲线进行了描述

使用分段多项式函数

来精确确定曲线的形态
使用分段多项式函数

来精确确定曲线的形态

那么这样我们就可以用计算机来

方便的绘制出连续的曲线了

那么下面这张图

它是一个spline曲线最简单的形态
那么下面这张图

它是一个spline曲线最简单的形态

是一个分段函数

我们看看这张图所显示的信息
是一个分段函数

我们看看这张图所显示的信息

一条spline曲线

是由一系列的点来描述曲线的
一条spline曲线

是由一系列的点来描述曲线的

那么这条曲线是由一段一段的曲线

组合在一起所形成的
那么这条曲线是由一段一段的曲线

组合在一起所形成的

刚才我们所看到的这种描述曲线方式

实际上是一种使用控制点表示曲线的方法
刚才我们所看到的这种描述曲线方式

实际上是一种使用控制点表示曲线的方法

我们看到这张图跟上页的图很像

我们使用了六个点

q0 q1一直到q5

来描述这条曲线

那么这些点呢就是这条曲线的控制点

我们把这条曲线上所有的点

把它的集合叫做pt

在这个公式里头

那么这里的t是这条曲线的参数

这个参数可以不断地变化

那么我们给t不同的值

就会得到曲线上不同位置的点

所以当这个t

比如说我们让它是从

0到1的一个连续的实数的话
比如说我们让它是从

0到1的一个连续的实数的话

那么pt当t在变化的时候

我们就可以遍历整条曲线上所有的点
那么pt当t在变化的时候

我们就可以遍历整条曲线上所有的点

所以我们在这里说

pt实际上它就是曲线
所以我们在这里说

pt实际上它就是曲线

或者说呢是曲线上所有点组成的集合

qi呢就是我刚才说的q0到q5

但这个点的数量可以更多或者更少

那么它们都叫做控制点
但这个点的数量可以更多或者更少

那么它们都叫做控制点

那么在这里比较有意思的是

我们看这公式里头还有一个叫做fit

就叫做权函数或者叫做混合函数

它的意思是什么呢

如果大家对数学比较敏感的话

会知道其实这里有一个sigma

sigma的意思是加和求和的意思

这公式的意思是说

我们的这一部分里面的i

可以从0变到n

也就是说这个公式是从f0tq0到f

我们这是5

那么就是f5tq5的六个式子
我们这是5

那么就是f5tq5的六个式子

组合在一起加合在一起得到的

它的实际的意义是对qi进行了一个加权

而其中的权函数就是这个fit

我们来理解一下这个公式的意义

它的意思是说我们将所有的控制点qi

从0到5的坐标

按照权函数进行加权组合

这个意思是说所有这些点

它的坐标都会对

这条曲线上任意一个点的位置

都会有影响或者有贡献

那么到底这个影响或者贡献有多大呢

是由权函数决定的

由 fit决定的

那么一条曲线上有无穷多个点

那么每一个点到底每一个控制点

对这条曲线上任意一个点的

贡献或者影响有多大呢

是随着参数t不断变化的

就这个权函数是随着参数t不断变化的

也就是说每个控制点qi

对曲线上不同位置的形状的影响是不同的

这里权函数成为这样一个式子里头

非常重要的因素
这里权函数成为这样一个式子里头

非常重要的因素

那么这里有一个小的原理

对于任意的的参数t

这个权函数满足这样一个公式

也就是权函数在t等于任意值的情况下
这个权函数满足这样一个公式

也就是权函数在t等于任意值的情况下

那么把权函数在一起都等于1

但这样的数学公式呢

这个如果大家有兴趣的话

可以去进一步的理解
这个如果大家有兴趣的话

可以去进一步的理解

如果是学习设计的同学
可以去进一步的理解

如果是学习设计的同学

觉得这个数学已经比较难去深入的钻研的话

那么只要大致的理解这里面的原理就好

我们把这个公式叫做

控制点表示曲线的一般表达式

那么这里的Fit 或者叫权函数

当它有不同的表达式的时候

就会得到不同的曲线建模的模型
当它有不同的表达式的时候

就会得到不同的曲线建模的模型

比如说我们非常常用的贝塞尔曲线

或者叫贝兹曲线或者叫北折曲线

这种曲线呢

是我们在很多平面设计的软件当中

包括InDesign包括photoshop里面

用到的曲线建模的方式
包括InDesign包括photoshop里面

用到的曲线建模的方式

在贝塞尔曲线里面

我们看到这里的权函数换了一个字母叫b

那么它有一个具体的表达式是这样的

这个Cn i是组合数

有兴趣可以去了解一下组合数

当然实际上这里我们并不要求大家去了解
有兴趣可以去了解一下组合数

当然实际上这里我们并不要求大家去了解

或者说记住这个公式

只是想给大家展示一下

当我们改变权函数的形式的时候

就会得到不同的曲线的模型
当我们改变权函数的形式的时候

就会得到不同的曲线的模型

这张图显示的是三次的

贝塞尔曲线的表达方式

这边右边是图左边是公式

这公式里头我们看到

其实它是一连串的加和

q0 q1 q2 q3
其实它是一连串的加和

q0 q1 q2 q3

前面乘上一个系数

然后把它们加和在一起

这就是我们说的加权组合的意思
然后把它们加和在一起

这就是我们说的加权组合的意思

一个展开的公式

那么每一项它前面的权值的公式是不同的
一个展开的公式

那么每一项它前面的权值的公式是不同的

而且会随着t发生变化

那么贝塞尔曲线它的基本形式

三次的贝塞尔曲线基本是这样的
那么贝塞尔曲线它的基本形式

三次的贝塞尔曲线基本是这样的

我们如果去把这个t的参数
三次的贝塞尔曲线基本是这样的

我们如果去把这个t的参数

让它从零变到一的话

我们就会看到

当t等于零的时候

这个相应的这个参数有一个取值

t等于一的时候有个取值

那么相当于是说t等于零的时候

后面三项都等于零了
那么相当于是说t等于零的时候

后面三项都等于零了

只剩下q0

当t等于一的时候前面三项都等于零
只剩下q0

当t等于一的时候前面三项都等于零

只剩下q3
当t等于一的时候前面三项都等于零

只剩下q3

所以这条曲线

在它的起点和终点是经过q0和q3这个点

包括这种形态是经过q0 q3这个点的

这就是贝塞尔曲线的一般表达式

但是贝塞尔曲线呢

它有一定的不方便的地方

所以呢这个数学家又发明了b样条
它有一定的不方便的地方

所以呢这个数学家又发明了b样条

曲线的这种方式

它保留了贝塞尔曲线的优点

同时克服了它由于整体表示带来的

不具有局部性质的缺点

这是什么意思呢

是说一条贝塞尔曲线
这是什么意思呢

是说一条贝塞尔曲线

如果我们要去描述一条很长的曲线
是说一条贝塞尔曲线

如果我们要去描述一条很长的曲线

那么用了多个

比如说用了十个控制点的时候
那么用了多个

比如说用了十个控制点的时候

那么每一个控制点

都会对这个曲线上所有位置的形态
那么每一个控制点

都会对这个曲线上所有位置的形态

都会有影响

那么就是不太方便的
都会有影响

那么就是不太方便的

所以呢就提出了b-spline

这种b样条曲线
所以呢就提出了b-spline

这种b样条曲线

b样条曲线解决了这种

整体性表示的不方便的这种缺点

这样在描述复杂形态时就可以更方便

解决了它的连接性问题

那么就提出了这样一个b样条曲线

我们说b样条曲线的公式呢

在这里也可以给大家看一下

如果是三次b样条曲线的话

同样的大家不需要去记这样的公式

只要知道这里我们更换了权函数

那么就得到了不同的曲线的数学模型

那么对b样条曲线进行推广

我们就会得到非均匀有理b样条

就是nurbs就是我们今天的主角
我们就会得到非均匀有理b样条

就是nurbs就是我们今天的主角

从b样条的nurbs主要的区别

在于加入了控制点的权值

nurbs的模型呢

就既可以表示标准的圆锥曲线

比如像圆 椭圆 双曲线这些

也可以表示自由的曲线和曲面

这个公式是NURBS曲线的数学表达式

这里的Ni(t)权函数

由于公式比较复杂我们就不展开了
这里的Ni(t)权函数

由于公式比较复杂我们就不展开了

NURBS也是当我们

替换权函数的表达式以后

得到的一种新的曲线表示的数学模型
替换权函数的表达式以后

得到的一种新的曲线表示的数学模型

对于用控制点生成曲线的方法

我们对它进行发展

就会得到用控制点生成曲面的方式

我们看到图和对应的公式

如果我们用控制点来表示一个曲面的时候

我们用到的就不是一系列的点
如果我们用控制点来表示一个曲面的时候

我们用到的就不是一系列的点

而是一个点的阵列

不是一个线性的点

而是两个维度上延展的点的阵列
不是一个线性的点

而是两个维度上延展的点的阵列

这些点共同决定了整个曲面的形态

所以在公式里我们看到控制点q

它的下标也变成了ij

也就是两个维度

在这个方向和这个方向上

都有延展的两个维度的控制点

同时权函数也变成了两个Fi(u)和Fj(v)

在u和v两个方向上分别有不同的权函数

这两个权函数乘在一起

再去对qij控制点进行加权
这两个权函数乘在一起

再去对qij控制点进行加权

最后把它们用两层的∑

两层的加和组合在一起

得到最后的由控制点生成曲面的

这样的表达式

其实它是一种

我们刚才说用控制点

来生成曲线的方式的一种推广

这里的权函数Fi(u)和Fj(v)

那么这两个权函数

它也满足类似的这样一种
那么这两个权函数

它也满足类似的这样一种

就是加和起来等于1的基本原理
它也满足类似的这样一种

就是加和起来等于1的基本原理

也就是说u不管取任意值

Fi(u)加在一起都等于1

同样这个v取不同的值的时候

Fj(v)加在一起也都等于1

这个同样不要求大家掌握

但是也是一个基本原理可以了解一下

刚才我们看到了这个是

NURBS曲线的表达方式

我们现在又看到

我们同样可以得到NURBS曲面的表达方式

在这里我们用到了权函数Ni(u)和Nj(v)

这个是用NURBS来表示

自由曲线和曲面的公式
这个是用NURBS来表示

自由曲线和曲面的公式

刚才给大家讲了很多

原理性的数学的知识

那么这些知识呢

对于有些学设计的同学来说难以掌握
那么这些知识呢

对于有些学设计的同学来说难以掌握

所以我们在这里再梳理一下

在本节课里头我们讲到的知识

哪些是需要掌握的

这两个公式分别是

用控制点表示曲线和曲面的

一般性通用公式

我们看到包括这样的图

这里我们需要掌握的是说
我们看到包括这样的图

这里我们需要掌握的是说

用控制点来表示曲线

曲面也是一样的

就是将控制点的坐标按照一定的公式

或者是权函数进行加权组合
就是将控制点的坐标按照一定的公式

或者是权函数进行加权组合

这个公式的意义就是这个

它的意义是说

一条曲线或者曲面上的控制点

它对于曲线或者曲面的形态

都有贡献或者说影响

至于贡献或者影响有多大

是由权函数来决定的

由Fi(t)或者Fi(u)和Fj(v)来决定

权函数Fi(t)

那么我们说每一个控制点

每一个曲线或者曲面上的点的位置
那么我们说每一个控制点

每一个曲线或者曲面上的点的位置

它的贡献是不同的

这个贡献的大小

是由Fi(t)权函数来决定的

随着参数t不断变化

也就是说每个控制点qi

对曲线上不同位置的形状

它的贡献或者影响是不同的

这就是权函数的意义

不同的曲线模型

其实基本形式都是一样的

就是这两个公式

但是当权函数不同的时候

我们就得到了不同的曲线模型

这里比如说像Bezier曲线

是PowerPoint Photoshop

还有InDesign

这些平面设计软件当中

经常使用的数学模型

我们切换到一个InDesign界面

我们看到这里已经有一条曲线

这条曲线呢

它是由两条Bezier曲线组合而成的

在这里点击一下就可以看到

这边是一条曲线

这边又是另一条曲线
这边是一条曲线

这边又是另一条曲线

那么我们说一个三次的Bezier曲线

是由四个控制点决定的

这里一个两个三个四个

这就是它的控制点

当我们去调整控制点的位置的时候
这就是它的控制点

当我们去调整控制点的位置的时候

就会得到不同的曲线形态
当我们去调整控制点的位置的时候

就会得到不同的曲线形态

Bezier曲线有一个很重要的性质就是

它会在端点的地方

经过第一个和最后一个控制点
它会在端点的地方

经过第一个和最后一个控制点

同时它的切线方向
经过第一个和最后一个控制点

同时它的切线方向

是由前两个点和后两个点来决定的

所以当两条Bezier曲线组合在一起的时候

我们如果改变在这里的切线方向的话

两条Bezier曲线在这里还保持相切

所以我们可以方便地去调整

Bezier曲线的形态

但是大家记住这条Bezier曲线

它是由两条基本的Bezier曲线组合在一起的

我们也可以组合更多

形成更复杂的曲线

所以Bezier曲线在实际应用的时候

它是由一段段的曲线
所以Bezier曲线在实际应用的时候

它是由一段段的曲线

首尾相接而成的连续曲线
它是由一段段的曲线

首尾相接而成的连续曲线

在连接点处相切连续

那么把Bezier曲线进一步推广

就会得到B-样条曲线

它可以实现局部可控

也就是调整某个控制点的位置

曲线只有局部受到影响

这个我们会在后面的演示中

再给大家介绍再给大家演示

Bezier曲线和Spline样条曲线的区别

对B-Spline曲线进行进一步的推广

就会得到不仅能够表示自由曲线

也能表示标准圆锥曲线的数学模型
就会得到不仅能够表示自由曲线

也能表示标准圆锥曲线的数学模型

圆锥曲线包括圆 椭圆 双曲线等等

这个模型也就是我们所说的NURBS曲线

非均匀有理B样条曲线

总结以下本节的要点

我们首先介绍了NURBS曲线曲面的原理

接下来我们介绍了控制点的概念

和利用控制点表示曲线的方法

在第三点我们介绍了Bezier曲线

B-Spline曲线、Nurbs曲线之间的区别

最后

我们也讲解NURBS曲面的生成原理

Grasshopper参数化设计与建模课程列表:

第一章 参数化设计简介

-1.1 参数化设计简介

--1.1

--模型文件

第二章 Grasshopper简介

-2.1 Grasshopper简介

--2.1

-2.2 Grasshopper界面与基本操作

--2.2

-2.3 Bake与Internalize Data操作

--2.3

-第二章习题--作业

第三章 Grasshopper基本数据类型

-3.1 Math运算器

--3.1.1

-3.2 点与向量

--3.2.1

--3.2.2

-3.3 Grasshopper曲线运算器

--3.3.1

--3.3.2

-3.4 Grasshopper曲面运算器

--3.4.1

--3.4.2

-3.5 案例:水波

--3.5

-3.6 案例:螺旋曲面

--3.6

-第三章习题--作业

第四章 Grasshopper数据结构(一)

-4.1 Grasshopper数据结构基础

--4.1

-4.2 数据流匹配

--4.2

-4.3 Dispatch运算器

--4.3.1

--4.3.2

-4.4 案例:项链

--4.4.1

--4.4.2

--4.4.3

-第四章 Grasshopper数据结构(一)--第四章习题

第五章 Nurbs曲线与曲面建模

-5.1 Nurbs原理简介

--5.1

-5.2 Nurbs建模演示

--5.2

-5.3 Evaluate操作

--5.3

-5.4 由点建立曲线

--5.4

-5.5 Nurbs与向量

--5.5.1

--5.5.2

-5.6 案例:凤凰中心曲线环廊

--5.6.1

--5.6.2

-5.7 案例:鸟巢表皮钢结构

--5.7.1

--5.7.2

-第五章习题(一)--作业

-第五章 Nurbs曲线与曲面建模-- 第五章习题(二)

期中大作业

-期中作业:工艺品设计

--期中作业

第六章 Grasshopper数据结构(二)

-6.1 Grasshopper树状数据结构(1)

--6.1.1

--6.1.2

--6.1.3

-6.2 案例:2016年BIG事务所蛇形画廊

--6.2.1

--6.2.2

-6.3 Grasshopper参数化表皮

--6.3.1

--6.3.2

-6.4 案例:凤凰中心表皮结构

--6.4.1

--6.4.2

-第六章 Grasshopper数据结构(二)--第六章习题

第七章 Grasshopper建模技巧

-7.1 Image Sampler

--7.1.1

--7.1.2

-7.2 案例:望京soho表皮

--7.2

-7.3 Vironoi运算器

--7.3

-7.4 Metaball运算器

--7.4

-7.5 参数化设计在大型项目中的应用案例-“红飘带”景观装置

--7.5

--第七章 Grasshopper建模技巧--第七章习题

第八章 Mesh建模基础

-8.1 Mesh原理

--8.1

-8.2 SubDivision与银河Soho案例

--8.2

-8.3 地形建模

--8.3

-8.4 面板划分:以银河soho为例

--8.4.1

--8.4.2

-第八章 Mesh建模基础--第八章习题

第九章 Kangaroo物理模拟

-9.1 Kangaroo插件简介

--9.1

-9.2 悬链线

--9.2.1

--9.2.2

--9.2.3

--9.2.4

-9.3 张拉膜,充气膜与可受弯面

--9.3.1

--9.3.2

-9.4 CirclePacking

--9.4

-结语

--9.5

-第九章 Kangaroo物理模拟--第九章习题

期末作业

-期末作业: 综合运用

--期末大作业

5.1笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。