Grasshopper&Kangaroo钢丝材料模拟教学

分享一个由@Dixon 制作的《Kangaroo模拟钢丝弯曲教学》

前言:
Kangroo能做什么
Kangroo力学模拟插件是grasshopper参数化设计软件里一个备受关注的插件,一个重要的原因就是现在建筑学当中很多用传统方法比较难处理的部分,例如, 能够贴合曲面形状的规格化零件,所谓规格化即是让每一块零件的形状是相同的,例如相同几何形状的铝板或者玻璃,或者相同长度的钢结构。规格化问题对于实际建造有非常重要的作用,一方面规格化的几何形体可以美化造型,另外一方面规格化的几何形体也利于工厂的批量化加工生产,显著降低建造成本,以及施工环节的管理复杂度,使得一些前卫却难以建造的建筑设计方案得以实施。
对于规格化的优化工作,kangroo是一个很重要的解决工具,他通过设计力学平衡的方法来达到几何形体的规格化优化,能快速和有效的解决其他方法难以处理的这一类问题。
  对于kangroo的学习,我们认为刚开始用户可以多分析一些常用材料的力学特性,模拟一些常见材料的特性,建立熟悉力学的分析方法和规则,并再过程中熟悉软件的使用。而后可以尝试吧这种力学平衡观念用于实际建筑学的几何优化当中。
以下这篇小教学就是针对钢丝材料的一个分析和模拟过程,适合对kangroo有一点使用经验的用户,要求用户知道kangroo软件的用法和基本规则。但即使你是初学者,也可以通过这个小教学了解软件使用过程中的思维分析过程,毕竟参数化设计过程中最重要的还是思路。
钢丝材料的模拟
最近我们的学员群里有同学在研究如何使用grasshopper的kangroo力学学插件模拟图片上这种类似钢丝材料的弯曲效果。我们也花了点时间做了一下,程序挺简单,效果挺有趣。因此我们把这个小程序的制作过程做简要介绍,希望对正在学习kangroo物理学插件的朋友有一点帮助。感兴趣的朋友也可以关注Rhino原厂暑期开设的grasshopper参数化设计课程

图片1.png


教学

材料特性分析:对于钢丝材料,它有一个明显的特性就是容易弯曲,并且弯曲过后可以回弹(回复原始形状)。因此我们主要从弯曲的角度来模拟材料的力学特性。需要用到kangroo里面的bend 工具。但bend工具的使用方法较为繁琐,在实体课程中会有较为详细的介绍。在本篇教学中我们直接使用基于bend工具打包好的PolyLineBend工具,PolyLineBend工具用于模拟常见的线形材料的弯曲特性,使用方法较为简单。

001.jpg

首先我们需要生成一根直线(line),将这根直线作为一跟初始的钢丝进行模拟,在line中点右键,点击跳出菜单中的 set one line ,然后在rhino的front视图中画一根水平线,如图所示。

002.jpg

003.jpg

然后我们需要将这根直线处理为内部很多点连接成的多重直线,为什么呢?因为在力学模拟计算中,为了模拟材料受力之后的形状,需要深入到“微观”来处理:需要在原始材料的几何形状上设置很多点,并计算这些点受力之后的新的位置,最后把这些点按照原来的连接方式重新还原成生成几何形体,从而得到整个材料受力之后的形状。
  对于这根钢丝也是一样,需要在形体上找到很多点,并连接成多重直线(多重直线反映了这些点的连接顺序)。所以在这里我们首先把曲线等分为30段,然后把生成的点重新连接成多充直线,如下图所示。

004.jpg

接下来把多重直线接入 PolyLineBend 的PolyLine端口, BendStrength是定义材料的回弹力度,对于钢丝来说,他的回弹力度还是比较大的,所以我们设置为1000(默认值为100),
AngleFactor是设置材料的原始弯曲角度,他是一个比例值,0表示笔直,也即是说这跟材料在不受外力的情况下会恢复为笔直的形状。如下图所示。这样材料弯曲力就定义好了。

005.jpg

接下来将设置好的弯曲力接入kangroo的力学计算核心模块,如图所示

006.jpg

007.jpg

在材料弯曲特力设置好之后,我们需要在给材料定义一个更加基本的力:Springs(弹性力)。需要强调的是,弹性力是任何材料的一个最基本的特性,任何材料都有弹性力,因此对于模拟材料来说,弹性力是必须定义的,如果不定义弹性力,kangroo是不能正确计算出结果的,甚至计算中会出错。

008.jpg

弹性力大小的理解是很重要的,在本篇教学中因为不是主要介绍的部分,所以简要介绍一下,详细的介绍在我们试题课程和后续额的教学中会有。
   不同材料的弹性力差异很大,并且可能跟大部分人的认知有差异,例如,您认为一根绳子和一根皮筋,哪一种材料的弹性力大呢?可能很多朋友会认为是皮筋的弹性力大,但恰恰相反,绳子的弹性力远远大于皮筋。我们可以这样理解:例如相同粗细和长度的绳子和皮筋一端都挂了一个重量相同的球体,在静止的情况下,我们很容易根据经验想象到皮筋会被拉得比较长,绳子被拉长比较少甚至微乎其微,以至于您认为绳子长度没有发生变化。那么分析一下,球体的重量是一样的,因此对于绳子和皮筋来说他们受到的拉力大小是相同的,在相同拉力的情况下,皮筋被拉长很多,而绳子只是拉长了一点点。说明皮筋弹力小(容易产生伸缩,就像一根很细的弹簧,弹力小,受力容易变形),绳子弹力大(不容易伸缩,就像一根很粗的弹簧,受力变形小)。
简而言之,如果我们希望模拟的材料的长度不发生明显的变化(例如绳子和布料),那么我们需要给材料定义比较大的弹性力。反之如果希望材料有明显的长度变形特性(例如皮筋和气球),那么需要定义相对小的弹性力。
在本例中,根据我们的经验,钢丝是容易弯曲但是不容易被拉长(几乎观察不到明显的伸缩),因此我们要给予材料的伸缩力比较大,将stiffness改为2000.(本例中默认值1000效果也不错)
另外我们还需要设置两个必须的端口:connection 和 rest length
connection这里必须输入直线(line),line在这里被定义为一个伸缩力。两个点之间如果有伸缩力存在,那么这两个点之间必须连接为line并输入到connection端口。因此对于这根线性材料,相邻的点之间存在伸缩力(想想一下链条,一个挂住一个,一个拉一个),因此我们需要把前面做好的多重直线炸开变成很多段line,一起输入到connection中。
rest length代表这些有伸缩力的点之间的初始长度(放松的长度),也即是他们不受到任何外力时候静止的长度(类似弹簧本来的长度),在这里我们直接把每一根line的长度测出来直接输入进去,表示当前我们看到的这个线性材料的长度就是初始长度。(我们不希望看到模拟后这根材料的长度发生明显变化,因此设置当前长度为放松的长度)。
最后把设置好的弹性力也输入到kangroo的 force objects中(所有的力都汇入force objects中进行力的综合计算),注意把force objects端口点右键,设置为flatten,确保所有力会混合在一起计算力的平衡。
连接如下:

009.jpg

到目前为止,这根钢丝的伸缩力和弯曲力特性都设置好了,但是因为目前这根钢丝没有受到外力,而且初始形状就是笔直的,所以如果现在让测序开始模拟计算是看不到任何变化的。所以我们需要给他施加一个外力,或者让它的初始形状不是直线,那么他才会模拟出对应的受力形状。
我们可以考虑现实情况,如果我么你要把一根钢丝弯曲要怎么做?是不是捏住钢丝的两头,并且用力弯曲钢丝头部的防线,这样钢丝就开始弯曲。那么如何在程序中模拟达到我们要的效果呢?
  我们可以修改程序中钢丝两端的点的位置,以达到改变钢丝初始两端的方向的效果,这样钢丝在模拟时候就会发生变形。如下图所示

010.jpg

因此,我们需要将钢丝两端,每一端的前两个点,一共4个点找出来,做一些角度调整,来控制曲线的弯曲。使用如下图的方式取出这几个点:

011.jpg

012.jpg

为了简化控制,在这里我仅对左边一端做角度控制,控制的方法是,让左端端的靠内部的点围绕外部的点旋转,转到其他角度即可。如下图所示。

013.jpg

接下来,我们把左端的两个点加入一个往右移动的功能,为什么要这样做呢?因为如果我们保持端点不动,那么如果调整了左边点的角度,钢丝从直线变成曲线,长度就会变长,但是因为钢丝的伸缩力很大,现实情况下是看不到这么明显的拉长的,因此如果哦我们不适当的让钢丝两端缩小距离,那么后面我们在做弯曲的时候,就看不到正常的钢丝弯曲的效果。
如下图示加入了往右移动的程序部分:

014.jpg

到目前为止我们得到了两端的4个点,并且可以控制左端的两个点的位置和角度,接下来哦我们需要把这4个点“钉住”,也就是固定住,让这4个点在模拟计算的时候不论受到多大的力始终不会动,就好像现实中我们用手捏住钢丝两端的点,保持位置和角度不动,这样钢丝可以弯曲成固定的形状。
那么如何定义者4个点的位置不动呢,我么你可以吧这4个点输入到 AnchorPoints端口中,作为锚点,锚点在物理计算中作为一个固定点来使用,不论多大的力都不会动。但我们可以再程序外部通过刚才写的旋转和移动的方法控制它的位置,以此来调整初始时候的钢丝两端的角度和位置。连接如下图图所示:

015.jpg

这样基本上材料的特性力和外部弯曲初始控制都设置好了,最后还一点就是要设置输出的几何体。是什么意思呢?前面说过,kangroo计算的只是材料内部的点,那么我们要用这些点吧原来的材料形状还原。因此呢,这里我们需要把那些line输入到kangroo的核心中,kangroo会根据计算的点和line的关系,自动还原更新形状后的几何体,如下连接方式如下:

016.jpg

这样整个程序就写好了,最后把不需要看到预览的电池的显示预览关闭,仅仅保留你想要看到效果的几个电池的预览。最后完整的程序如下图所示:

017.jpg

整个程序并不复杂,但是这当中涉及到的思路的解释,和kangroo定义规则的说明是很多的。即便是这样的解释仍然是不够系统的,对于初学者来说仍然会有理解上的难度。
最后做一点处理,将两个slider集合到一个移动控制面板中,方便后面的效果调整,在两个slider上点右键,选择push to remote panel ,然后再菜单的view中选择 remote conrtol panel,打开浮动控制面板,如下图所示

018.jpg

019.jpg

020.jpg

接下来,就可以进行模拟了,双击抗日哦哦的核心,会跳出模拟控制面板,如下图所示

021.jpg

把两个面板都拖到rhino界面中,再开始模拟前,或者需要重新模拟前,请务必确认两个slider都处在0的位置(原始位置),然后点击三角形箭头开始模拟,滑动滑块,即可以看到对应的弯曲模拟效果。

022.jpg

如下图为几个不同的弯曲成环的效果。

演示1
025.jpg
演示2
026.jpg
演示3
027.jpg
演示4
028.jpg
演示5
029.jpg
演示6
030.jpg

也可以点击下面观看演示视频:
0
顶一下