Rhino(犀牛)中国技术支持与推广中心

标题: [GH基础教学]交错的椭圆开孔 [打印本页]

作者: 深蓝Ansen    时间: 2014-6-14 19:42
标题: [GH基础教学]交错的椭圆开孔
本帖最后由 深蓝 于 2014-6-15 08:18 编辑

本次教学跟大家分享下图中这种造型的制作方法,比较适合Grasshopper初学者参考学习

本教学的重点在于如何使用Grasshopper(下文简称GH)工具,通过几何的方式解决原本在Rhino中很难处理的问题



这个造型有点类似于莫比乌斯环,一开始分析这个造型的时候,忽略其表面的开孔与厚度,看起来像是一张曲面发生自相交,简化后的模型如下图所示:



既然与莫比乌斯环类似,那么我们不妨从莫比乌斯环的做法入手,做点尝试。
考虑到一些朋友是第一次绘制这样的造型,因此你可以跟随下面的步骤绘制一个莫比乌斯环。

1.在Rhino场景中绘制好一条直线与一个正圆曲线,并以直线为轴线绘制一个截面形状为正方形的方管。如下图所示:



2.使用Rhino的扭转工具(指令:Twist将方管绕着红色的轴线扭转180度,如下图所示:



3.使用Rhino的沿着曲线流动工具(指令:Flow将扭过的方管由直线对变到正圆曲线上



要注意这个工具中的延展选项要设置为 如果不太清楚这几个选项的用法可以查看Rhino 5帮助文档,里面有较详细的解释。结果如下图所示:



4.在第三步中得到的造型有可能比例不合适,你可以借助Rhino 5的 记录建构历史功能 通过缩放圆的大小来调整造型的比例,得到一个满意的效果即可,如下图所示:



下面我们来做点尝试,假设在刚刚的步骤1中我们绘制的不是方管,而是其内部的两条相互交叉且垂直的平面,结果又会是怎样呢?

方法和之前的完全一样,这里不再赘述,大家一试便知。





结果与我们最早分析的那个造型接近了,细心的你一定会发现得到的结果其实是两个单独的曲面“摆放”在一起了,而我们需要的是“一张”曲面的造型。



其实,我们在扭转的时候让它们扭转90度,再做流动得到的结果就是正确的,(为什么要扭转90度,不扭转45度,30度... ...想想看咯) 过程如下图所示:



得到的结果是由两张面拼起来的。



大型出来了,接下来就是如何在曲面上开孔。






既然是两张曲面,我们就可以把这些椭圆曲线做分组,又考虑到椭圆图形的对称性,可以将其中一个椭圆位置放在两张曲面拼接处,这样就可以拆开来做了,如下图所示:



我以其中的一部分为例做讲解



在Rhino中直接在曲面上绘制图形很困难,因此我们可以先将图案在平面上绘制好,然后再对变到曲面上

我以上图中椭圆数目为例,13个完整椭圆+半个椭圆 ,效果如下图所示:



1.首先要对椭圆的位置做精确的定位


TOP视图中绘制一个平面,使用Rhino中的等分曲线工具(指令:Divide)确定一组定位点,分段的数量设置为27(为什么是27?设想下,最终要将两个曲面拼接起来,而相邻的椭圆之间间距是相同的,那么可以以半个椭圆为单位,总共就应该是13.5*2个),你可以和我设置的不同,但这个数字一定为奇数





2.绘制椭圆,中心捕捉放置在曲面边缘中点处,短轴端点与竖直直线有一定距离即可



3.直线阵列14份,最后将多出去的半个椭圆修剪掉



4.使用沿着曲面流动工具(指令:FlowAlongSrf)将这组椭圆曲线由平面对变到曲面上





很明显,椭圆发生了形变,靠近外圈的部分被拉伸,靠近内圈的部分被挤压,这个结果好比是一张长条状铁皮上开了这样的孔,然后做扭转和弯曲变形,孔的轮廓形状一定也会变形



即使在流动时将硬性(不变形)设置为 ,也会有问题,如下图所示:





如何保证曲面上的曲线形状为椭圆且位置正确,我想在Rhino中需要花费一些时间来解决。
本篇教学的重点来了,就是将GH应用在这种使用Rhino做很困难的造型中。

通过以上的分析过程,我们已经有了制作思路,下面就是将这些思路套用在GH中。



1.将蓝色的正圆曲线拾取到GH中,使用Divide Curve运算器,将曲线等分为27份



后面你可以改变这个数值,所以严谨点,把数值类型设置为
奇数



箭头所指的点即为圆的闭合点,也是这组等分点中的第一个点(序号为0)



2.获取定位点

下图中的黄色虚线是假想出来的椭圆,因此红色的点是我们需要的定位点。



挑选这些点的方法很多,下面我将使用Dispatch运算器将这些点间隔的分为两组,具体做法如下:

先解释下Dispatch运算器

P输入端 默认情况下的判断方式是True False,会把一组列表中的值按照重复 真 假 真 假 真 假...的判断方法做分类,判断结果为真的值从A端输出,判断结果为假的值从B端输出。

将其他运算器的计算结果做隐藏,只显示A端输出的点


得到的结果正好和椭圆错开,这是因为正圆的方向反了,只要做反转方向操作即可

如果你的结果本身没有错误,那么恭喜你,无视接下来的操作,直接往第3步看>>>>

不建议直接反转Rhino场景中的曲线方向,可以在GH中接入Flip Curve运算器



这一部分的完整程序图:



这样,定位点就得到了,如下图所示:



3.创建工作平面

通过简单的分析,需要以每个定位点为坐标原点,创建一组垂直于曲面法线方向的工作平面



我们可以先将曲面拾取到GH中,接着搭配使用Surface Closest Point Evaluate Surface运算器来创建工作平面。



得到的结果有个明显的错误,由于第一个点的位置正好处在曲面的两个边缘的交点处,因此在这种临界位置,程序在放置第一个工作平面的时候可能会判断失误


如果你的结果是正确的,那么继续无视,请往第5步看>>>>



4.修改有问题的工作平面

接入List Item 运算器,将第一个工作平面(序号为0)挑出来. i 输入端默认就是 0,不用更改,将其他运算器的计算结果隐藏起来,如下图所示:



我们只需要将第一个工作平面绕着它的Y坐标轴(绿色)旋转 90度 即可(为什么为90度,不用解释了吧)

先用Deconstruct Plane运算器 获取工作平面的坐标原点Y轴向量,再用Rotate 3D运算器将工作平面绕着Y轴向量转90度,输入端A默认以弧度制计算。





最后使用Replace Items 运算器用新得到的工作平面替换之前的工作平面,这个运算器的输入输出端的解释请看其Help





这部分的完整程序图:



5.创建椭圆

直接贴图,不解释了





6.挤出曲面

因为得到的椭圆并不在曲面上,直接裁剪得到的结果并不是很好,需要将它们沿着Cplane的Z方向做挤出曲面

先用Deconstruct Plane运算器获取工作平面的Z轴向量,将单位向量与数字相乘得到挤出向量,如下图所示:



如果希望其在Z轴方向往两侧挤出,可以先将椭圆沿着Z轴移动一定的距离



再将新得到的椭圆反向挤出一定距离,可以在D输入端通过一个表达式 -2*X 来实现类似Rhino中的朝两侧挤出曲线的功能



这一步完成了切孔用的曲面的制作,完整的程序图如下:


你可以把挤出的曲面Bake在Rhino中完成剩下的事情,也可以继续在GH中做>>>>

过程不做细致解释,大概思路是:先计算相交线,再做分割,最后挑出面积最大的那块曲面,如下图所示:

[/hide]

同样的方法处理好另一块曲面的开孔,制作厚度,孔洞边缘倒圆角的过程略。


你还可以将整个制作过程在GH中完成,做出一些更加复杂的形态出来。



谢谢!


作者: simonchen    时间: 2014-6-14 21:03
啧~啧~啧!我本人是很欣赏深大大思路的原来这形态可以这样构想滴~~~~~~~

作者: 半醉earth    时间: 2014-6-14 22:02
太给力了,学习一下
作者: unclex    时间: 2014-6-15 01:45
Push Up~~~~~~~
作者: humerk    时间: 2014-6-15 10:37
zhichi !!!!!!
作者: maojiaoliang    时间: 2014-6-15 11:43
丝路很重要

作者: rafales    时间: 2014-6-15 12:58
真棒!启发很大
作者: 470942035    时间: 2014-6-15 13:29
学习学习
作者: haohexie    时间: 2014-6-15 15:55
赞~~~~
作者: ncmooc    时间: 2014-6-15 21:51

赞~~~~
作者: zzkusturica    时间: 2014-6-16 13:08
好东西 受教了!
作者: paul    时间: 2014-6-16 14:08
必须支持
作者: LoveQ.ACK    时间: 2014-6-16 14:14
给力                                      
作者: lzjjjs    时间: 2014-6-16 14:59
来学习了~!!
作者: zdjdevil    时间: 2014-6-16 23:27
感谢分享!学习!
作者: 唯爱是魔123    时间: 2014-6-17 06:38
深大又来营养帖了!
作者: 1986    时间: 2014-6-17 14:57

作者: 深蓝Ansen    时间: 2014-6-17 16:33
唯爱是魔123 发表于 2014-6-17 06:38
深大又来营养帖了!

算是给初学者一些启发吧
作者: wuhawuhababy    时间: 2014-6-23 08:49
学习学习
作者: xh007    时间: 2014-6-25 16:02
太给力了,学习一下
作者: G.Y.    时间: 2014-6-29 10:21
曲面开洞也不能Project哈。loft也没有这么准
作者: nnnaaarrr    时间: 2014-7-2 14:58
你好,厚度是怎么处理的呢?
作者: nnnaaarrr    时间: 2014-7-2 16:23
nnnaaarrr 发表于 2014-7-2 14:58
你好,厚度是怎么处理的呢?

了解了。
有问题的工作平面可以添加一个 sort along curve 来解决。


作者: 深蓝Ansen    时间: 2014-7-2 16:38
nnnaaarrr 发表于 2014-7-2 16:23
了解了。
有问题的工作平面可以添加一个 sort along curve 来解决。

做的不错,你提到的方法也不错!
作者: nnnaaarrr    时间: 2014-7-2 17:47
深蓝 发表于 2014-7-2 16:38
做的不错,你提到的方法也不错!


整个在grasshoper内完成。

优化了厚度生成与挖孔的过程。

教程适合我这种入门的,哈哈。


作者: iqyuan    时间: 2014-7-24 16:12
一直不会捉这样的东西

作者: iknowhy    时间: 2014-7-28 00:03
感谢 分享
作者: iknowhy    时间: 2014-7-28 00:21
逻辑不能再清晰,大赞
作者: 精锐-JI-DIAO    时间: 2014-7-28 21:08
谢谢学习了

作者: maniux    时间: 2014-8-2 10:33
謝謝分享。
作者: kkkpig3    时间: 2014-8-15 13:06
看看什么样的
作者: kkkpig3    时间: 2014-8-15 13:17
看看什么样的
作者: pangl6    时间: 2014-8-19 10:04
来学习一下

作者: kirayamato    时间: 2014-8-21 13:34
好吊的造型
作者: lj09090099    时间: 2014-8-23 21:04
ansen的文章,必须看看
作者: boshu0    时间: 2014-8-25 13:17
学习,楼主强大……
作者: fm0216    时间: 2014-8-26 17:57
学习一下
作者: Caoxuwei    时间: 2014-8-29 00:06
前来学习
作者: 潜龙    时间: 2014-8-30 11:49
看看大神的思路~~~~
作者: 潜龙    时间: 2014-8-30 11:53
精品中的精品

作者: tonglanbing    时间: 2014-9-2 11:32
支持·············
作者: alexlzy1987    时间: 2014-9-22 17:26

作者: A-benji    时间: 2014-10-14 15:54
回复学习回复学习
作者: sisi110    时间: 2014-10-19 17:49
不明觉厉
作者: ec2500    时间: 2014-10-25 22:15
谢谢楼主了
作者: Guanci    时间: 2014-11-12 18:55
很棒的思路 学习了

作者: 民工    时间: 2014-11-19 14:46
太给力了,学习一下
作者: 老李学犀牛    时间: 2014-11-27 16:29
哇,看看看看
作者: Aether_Max    时间: 2015-1-29 17:55
来看看…
作者: toplay    时间: 2015-3-8 22:22
楼主辛苦,回复看看
作者: 992300520    时间: 2015-3-15 23:14
学习来的
作者: lengmuhuohun    时间: 2015-6-16 15:04
好教程,学习了
作者: wayne555    时间: 2015-6-29 17:02
太厉害了!!!!
作者: wayne555    时间: 2015-6-30 18:32
非常赞!!!不过有一个问题想问一下楼主,那个扭转和流动的命令可以也在gh中做吗?有个twist电池我不会用啊。。。还有flow的命令gh中没有啊
作者: 深蓝Ansen    时间: 2015-6-30 18:51
wayne555 发表于 2015-6-30 18:32
非常赞!!!不过有一个问题想问一下楼主,那个扭转和流动的命令可以也在gh中做吗?有个twist电池我不会用啊 ...

有的,不过要以插件的方式载入

http://bbs.rhino3d.asia/thread-24522-1-1.html


作者: 明茎遥香    时间: 2015-7-22 19:34
学学怎么做的

作者: fish0410    时间: 2015-7-23 10:31
学习学习~~~~~~~~
作者: zrg031882    时间: 2015-7-28 21:37
很精彩的教材,谢谢分享。
作者: taryyin    时间: 2015-7-30 12:25
学习学习

作者: yihuiyang    时间: 2015-8-14 17:09
好好学gh
作者: Suka    时间: 2015-8-15 09:17
顶起
作者: lmjs    时间: 2015-8-27 17:24
学习学习!!!!
作者: chrischan    时间: 2015-9-2 14:50
太強了!學習中
作者: zrg031882    时间: 2015-11-23 21:26
很好的教材,谢谢老师的详细讲述。
作者: zrg031882    时间: 2015-11-23 21:27
跟着学习了一下。对于在gh中加厚度还是不理解。老师能不能再讲一下。
作者: 夏始春余    时间: 2016-1-21 22:09
啊虽然是老帖子,还是很棒的。
作者: 无聊小子    时间: 2016-4-4 16:22
来学习咯

作者: 无聊小子    时间: 2016-4-4 16:26
深蓝 发表于 2014-6-17 16:33
算是给初学者一些启发吧

深蓝大大.最后那张绿色的效果是用什么工具做出来的能透露一下吗?
作者: 明日今朝    时间: 2016-4-22 22:33
这个已经是很复杂了~~
作者: clamxuexue    时间: 2016-5-12 18:38
学习了。。。
作者: FOREVER.M    时间: 2016-6-6 18:28
围观学习,搞起搞起
作者: chuqi26    时间: 2016-6-9 10:18
谢谢,学习
作者: qq1232005    时间: 2016-6-29 13:49
真厉害。
作者: Cecilia512    时间: 2016-8-23 23:52
好厉害!顶
作者: 欧阳天武    时间: 2016-9-8 13:32
赞一个,希望Ansen大大继续努力,多发这样的良心教程
作者: LD龙龙    时间: 2016-9-10 10:17
很不错                                 
作者: lxl217114    时间: 2016-11-13 14:47
膜拜,感觉挺难理解的。
作者: 刘孪娈    时间: 2016-11-13 14:47
学习学习!!!

作者: xysong56    时间: 2016-11-13 21:32
厉害了啦啦啦啦了
作者: xysong56    时间: 2016-11-13 21:33
看看厉害了乐乐乐乐乐乐乐
作者: panaone    时间: 2016-11-22 14:12





欢迎光临 Rhino(犀牛)中国技术支持与推广中心 (http://bbs.rhino3d.asia/) Powered by Discuz! X3.2