当前课程知识点:Grasshopper参数化设计与建模 > 第五章 Nurbs曲线与曲面建模 > 5.1 Nurbs原理简介 > 5.1
返回《Grasshopper参数化设计与建模》慕课在线视频课程列表
返回《Grasshopper参数化设计与建模》慕课在线视频列表
本节呢
我们将给大家介绍一下
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曲面的生成原理
-1.1 参数化设计简介
--1.1
--模型文件
-2.1 Grasshopper简介
--2.1
-2.2 Grasshopper界面与基本操作
--2.2
-2.3 Bake与Internalize Data操作
--2.3
-第二章习题--作业
-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
-第三章习题--作业
-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数据结构(一)--第四章习题
-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曲线与曲面建模-- 第五章习题(二)
-期中作业:工艺品设计
--期中作业
-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数据结构(二)--第六章习题
-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建模技巧--第七章习题
-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建模基础--第八章习题
-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物理模拟--第九章习题
-期末作业: 综合运用
--期末大作业