[GH基础教学]交错的椭圆开孔

  [复制链接]
跳转到指定楼层
1375980 深蓝Ansen 发表于 2014-6-14 19:42:48 楼主
本帖最后由 深蓝 于 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中完成,做出一些更加复杂的形态出来。



谢谢!

评分

参与人数 1技术 +5 坛币 +10 收起 理由
simonchen + 5 + 10 深大~~你是我的榜样~敬上分与刀

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享分享
关于大陆地区Rhino原厂培训中心
simonchen 发表于 2014-6-14 21:03:22
2
啧~啧~啧!我本人是很欣赏深大大思路的原来这形态可以这样构想滴~~~~~~~
半醉earth 发表于 2014-6-14 22:02:21
3
太给力了,学习一下
unclex 发表于 2014-6-15 01:45:48
4
Push Up~~~~~~~
humerk 发表于 2014-6-15 10:37:59
5
zhichi !!!!!!
maojiaoliang 发表于 2014-6-15 11:43:53 来自手机
6
丝路很重要
rafales 发表于 2014-6-15 12:58:59
7
真棒!启发很大
470942035 发表于 2014-6-15 13:29:50
8
学习学习
haohexie 发表于 2014-6-15 15:55:10
9
赞~~~~
ncmooc 发表于 2014-6-15 21:51:36
10

赞~~~~
您需要登录后才可以回帖 登录 | 注册成为会员

本版积分规则