c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)...

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第1张图片

前言

最近入坑Grasshopper(以下简称GH),由于本人是产品设计师(硬的那种),所以更专注GH在产品设计上的应用,本篇简单讲讲在3D打印中用到比较多的网格结构的基本做法,面向GH初级用户(包括零基础),所以讲得比较细,高手请自动忽略。

关于GH能干嘛这里不多讲了,有机会单写。自Rhino6开始,已经在软件内集成了GH,本次案例使用的就是Rhino6中自带的GH。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第2张图片
点击这个就能进入GH

如果使用Rhino5,可以从官网下载GH,链接如下:

https://www.grasshopper3d.com/page/download-1​www.grasshopper3d.com

安装好之后在命令栏输入Grasshopper就能进入(Rhino6也可以这样进入)

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第3张图片

建议使用Windows系统,虽然Mac版的Rhino6也集成了GH,但很多插件还不支持OS系统,比如今天分享的插件就不支持...


这次给大家分享Dendro这个插件,其主要功能就是可以直接将线生成柱状体,比如下面这些“方便面”造型,同时也可以作为一个小案例,引出GH的一些基本操作和概念。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第4张图片

这种网格结构的造型主要用在3D打印产品设计中,可以起到增加强度和减少重量(用料)的目的。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第5张图片
在3D打印件内部加入这种结构可以更好的增加强度

当然也可以作为一种造型特征,将功能与美观结合在一起

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第6张图片
Adidas的Future craft 4d 系列的中底将这种结构直接作为造型特征

这些造型看似复杂,其实是有规律可循的,这种结构的生成过程有点像平面纹理设计里常用的四方连续:

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第7张图片
四方连续,将一个单元格不断重复,就能形成一个有规律的纹理

立体纹理就可以理解为在三维空间上的四方连续,只要在一个正方体里做好结构线,然后在空间里阵列一下就行了:

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第8张图片

这里需要注意的就是“连续性”的问题,里面的线结构最好在六个面上都能彼此相连,不然整体阵列出来的线就连不到一起了

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第9张图片
上图中的线结构最外围端点分别落在了正方体的八个顶点以及6个面的中心点上,因此无论向哪个方向阵列,线结构都能很好的形成连续的网状结构

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第10张图片
这个结构线就完全没有连接上,阵列出来的线就是单独的,也就无法形成网状结构了

我这次使用的是adidas那个鞋的结构同款的网格,这个网格由32根线组成,其特点就是,所有线的长度都是相等的,这样可以保证生成出来的结构受力是均匀的,这个线结构在这里就不写是怎么做出来的了,主要没啥技术含量,操作起来还比较繁琐,就不浪费篇幅了,当然只要保持连续性的前提下,随便用什么线结构都可以,这不是重点。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第11张图片

现在我得到了线构成的网状结构,怎么让线加粗变成柱状的体呢?

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第12张图片

这个问题困扰了我很久,如果直接用线生成圆管,要想用布尔运算加成一个实体,很容易出错,尤其是多个线汇聚的端点那里

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第13张图片
在Rhino里想把这个地方用布尔运算做出来,简直是痴心妄想

后来试过用Tspline的Pipe,确实强大,能做很多变化,而且还能输出Nurbs曲面,具体操作可以参看这篇内容。

这个模型在 Rhino 中的建模思路是什么?​www.zhihu.com
c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第14张图片

不过Tspline的问题是,在线比较少的情况下还行,一旦线比较多的话... 我之前用Tspline生成一个造型花了整整一天时间,后来保存文件又花了半天,结果生成的模型连转都转不动(不说了,都是泪)... 另外Tspline只有Rhino5能用...

直到遇见了Dendro(感谢Rhino原厂的工程师Dixon,是D大的推荐使我摆脱了苦海,推荐大家上原厂的GH课程),其实类似功能的插件还有很多,比如IntraLattice,但我个人觉得,还是Dendro出来的效果好一点。

Dendro​www.food4rhino.com
4d63c3bfc24435676c7293fb41f7f91f.png

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第15张图片
在Food4rhino上可以下载

这个插件目前只支持Window系统,Mac上还用不了,安装方法跟其他插件一样,解压文件,然后把所有文件拷贝到GH的Spacial Folders里,具体操作如下:

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第16张图片
解压文件,然后将这个文件夹复制

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第17张图片
在Grasshopper中找到FileSpecial FoldersComponents Folder,点击打开

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第18张图片
将刚才的文件夹整个拷贝到这里

安装完毕后需要退出GH和Rhino,再打开能看到Dendro出现在工具栏上,就算安装成功了,基本上所有GH的插件的安装方法都是这样的。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第19张图片
工具栏上出现Dendro就算安装成功了

需要注意的是,与Tspline不同,Dendro只能生成网格(Mesh),至于网格和曲面的区别,说来话长,这里也不多讲,其影响就是带来了两个问题:第一是生成的模型想要再用Rhino针对曲面的工具进行操作,比如掏个洞之类的,就做不了了,不过这个问题还好,因为Dendro自带了一些功能,比如布尔运算、抽壳之类的,做产品基本够用了;第二就是网格模型不能用减材和等材制造的工艺(CNC、模具注塑之类)加工,但这个更不是问题,造型做成这种鬼样子,这些工艺直接就跪了,只能用增材制造(3D打印),而3D打印就是要用Mesh。

言归正传,来看看怎么用吧,其实Dendro那个文件夹里自带了说明和一些示例,解释得也十分详细,英语够好且有一定GH基础又爱钻研的朋友可以自习了,剩下的看过来:

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第20张图片
Examples里面提供了一些示例,documentation就是一个简单的教程说明

我们先用刚才的一个单元的结构线做个简单的生成。

首先,我们先把刚才画的结构线抓取到GH中来

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第21张图片
在Params里把Curve电池拖动进来,然后在电池上单击右键,选择Set Mutiple Curves,在Rhino中框选所有结构线,单击右键确定,完成抓取

简单讲讲Dendro生成柱状体的原理,就是在线上做出一串球体,然后把这些球揉成一个柱体

Dendro官网上的动图就是它的基本原理

明白了原理,就可以开始了。从工具栏中Dendro选择Curve to Volume这个电池,并拖拽到GH中

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第22张图片

这个电池的功能就是可以将线变成柱体,它的输入端有三个接口,C就是Curve,也就是刚才抓取的线,R就是一串球的半径,也就是柱子的粗细,S就是Dendro的设置。接下来就可以把相应的数据接进去。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第23张图片
将刚拾取的线连接在C接口,再从工具栏Parmas下的Input中拖拽一个Number Slider作为半径

连完之后发现并没有什么卵用,这是因为我们还没有连接设置电池,在Dendro工具栏里拖拽Create Setting到界面中

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第24张图片

这个电池有四个接口,S是voxel size,就是一个立体像素的大小(边长),这里需要输入一个数字,简单理解就是模型的精度或者说分辨率,这个值越小,模型精度就越高,相应的运算时间也就越长,可根据电脑的耐操程度酌情设置,但这个值不能大于上面那个半径值的2/3,不然就会报错,简单理解就是模型粗糙得有点过,程序表示就没有显示的必要了...

连接好设置,模型就生成了,拖动精度的滑块可以看到模型的变化,当大过半径的2/3之后,模型就不显示了,点击电池上的气泡,可以看到提示信息

其他几个设定接口反正我没有看出对模型有什么实质的影响,用默认值就好,感兴趣的可以去看那个说明文档,这里就不多讲了。

至此,这一个单元的柱状结构的模型就生成完了,这时右键点击Curve to Volume那个电池,选择那个摊鸡蛋的图标(Bake)就能把这个模型生成在Rhino里。

不过这个模型显示看起来有点奇怪,熟悉Rhino的朋友应该能看出来,就是网格面的法线方向反了,Dendro生成的模型有时会有这种问题,不过没什么大不了的,反转一下法线方向就搞定了。

这就是Curve to Volume的基本用法,如果把结构线多阵列一些,就能得到一块“方便面”了。在GH中有立体阵列(Box Array)的功能,方法如下:

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第25张图片
找到Transfrom下Array中的 Box Array

Box Array这个电池有五个输入接口:G(Geometry)就是接入要阵列的几何数据;C(Cell)就是一个阵列单元,也就是包裹几何数据的一个立方体;X、Y、Z就是三个方向上阵列的数量。做单元格有个很好用的工具,就是Bounding Box:

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第26张图片
找到Surface下的Bounding Box

这个电池可以给选择的几何数据的外围生成一个紧紧包裹的立方体,其中输入端有两个接口,C(Countent)就是要接入的几何数据,P(Plane)是生成立方体的平面,默认是XY平面,通常情况下不用管;输出端有两个B(Box),上面一个就是围绕几何数据的Box,下面一个会在设定的Plane那儿生成一个Box,正常情况用不到,也不用管。

我们先把结构线接入C,结果出现这个情况:

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第27张图片

可以看到每个线段都被一个立方体包裹起来了,但我们想要的是把所有线段都包裹起来的一个立方体,注意BoundingBox电池下面有一个Per Object,也就是给每人分了一间房,需要把它调整成Union Box,让大家住一块儿:

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第28张图片
在电池上点右键,选择Union Box一个,所有线段就住在一起了

接下来把数据接入Box Array,然后给出阵列数量。

在Number Slider电池上单击右键,选择Edit,将数字调成整数(N),然后输入范围最大值(MAX),这样就能在范围内调整数字大小,给XYZ都输入同样的数字(当然也可以分别给一个Number Slider),连好线,阵列就完成了

然后将阵列好的线连到Curve to Volume上,方便面就生成了

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第29张图片

但摊完鸡蛋(Bake)之后发现,这些柱体并没有连成一个整体,而是一组一组的“火腿肠”

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第30张图片

这里涉及到数据结构的概念,数据结构是GH最最核心的概念没有之一,核心到什么程度?不夸张的说,能控制GH的数据结构,你就能控制整个GH!

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第31张图片
好吧,并没有这样的谚语,但学过GH的应该不会反驳....吧

当然,数据结构的内容博大精深,这里只能借这个案例先抛砖引玉,简单讲讲。首先我们先来看看刚才这些数据有什么区别,这里会用到一个特别常用的电池 Panel

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第32张图片
Panel在Params下的Input中

Panel是一个黄色的显示框,它两端都有接口,可以输入数据也可以输出数据,把它连接到电池的输出端口,就可以看到这些端口到底传输的是什么东西

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第33张图片

我们取之前用到的三个电池,来看看他们输出的分别是什么。Curve里面是抓取的32根线(Line-like Curve);BoundingBox里面是我们生成的包裹这些线段的1个立方体(Box);重点是BoxArray,里面是我们阵列出来的线,但这个Panel里面的线被分成一份一份的装在好多列表里面,这种数据结构就叫做树状结构(Data Tree)。

仔细看这些电池输出的连线长得也不一样。列表中只有一个数据(Bounding Box那个),就是用细实线表示的,有多个数据就是用粗的空心线表示的(Curve那个),而树状结构的数据就会用空心虚线表示。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第34张图片

之所以叫树状结构,是因为这种储存数据的结构很像树的分叉结构,我们用Parma Viewer这个电池可以看得更清楚,Parma Viewer在工具栏Params下的Util里面,图标就是一棵树。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第35张图片

与Panel不同,Param Viewer不显示数据内容,只显示数据结构,左边上面一行写着有32个分叉(Data with 32 branches)就是这些数据被分成了32个列表,N=8就是每个列表中数据的个数,在数据很多的时候,用Panel看结构就不是很方便,用Param Viewer就可以快速看到结构了。

Param Viewer还有另一种显示方式,右键单击电池选择Draw tree,就能看见数据树了,数据都存在树杈的顶端那个橘色的小点里,当然现在数据结构比较简单,看不出啥名堂,先了解一下就好了。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第36张图片

至于数据结构的意义,越往后学就越能体会了。

为什么会分出好多列表呢?这就涉及到GH是怎样工作的,比如在这个例子中,BoxArray是把Curve列表里的每一根线在所有单元格(2*2*2=8个)里阵列一遍,之后程序就自动将阵列出来8根线分到了一个列表里面,然后再阵列下一根线,以此类推,最终就生成了32个列表(因为有32根线),每个列表8根线的树状结构。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第37张图片

而后面Curve to Volume在生成柱体的时候,就根据数据结构进行,将每个列表的线分别生成成了8根火腿肠,也就是之前看到的样子,因此,要想让所有线变成一体,就要让他们都在一个列表里,这时就要用到Flatten tree,直译就是砍树,在工具栏Set下的Tree里,把阵列的树状数据接进去,出来的就是把所有数据都装在一个列表里了。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第38张图片
通过Flatten Tree之后,可以发现线型也发生变化了

把“砍”过的数据再接到Curve to Volume里面,就没问题了。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第39张图片

至此我们就初步完成这个立方体“方便面”的建模工作。

有了这个工具,很多创作就可以开始了,只要把线搞出来就都不是问题(当然把线搞出来也不容易)

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第40张图片
3D打印的灯具设计

以上是Curve To Volume的使用方法,下一篇再讲讲Dendro如何实现柱体半径的变化。

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第41张图片

补充结构线的画法:

先画一个正方体,然后找到每个面的中心点

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第42张图片

连接正方体的一个端点和正方体的中心点,并找出这个线段的中点,并将这个线段打断

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第43张图片

连接中点和相邻三个面上的中心点,然后把中点到正方体中心点这一段剪掉(要想让结构更密一些也可以保留)

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第44张图片

然后将这四根线镜像三次,就完成了

c++生成nurbs曲面文件_产品设计中的Grasshopper应用——网格结构生成插件 Dendro(1)..._第45张图片

你可能感兴趣的:(c++生成nurbs曲面文件,grasshopper,for,rhino,6下载,grasshopper,lunch,box安装,grasshopper插件)