分享一篇Dixon的教学《Grasshpper&Kangaroo材料褶皱模拟》
作者:@Dixon
在网站上看到国外朋友模拟的材料褶皱效果,觉得挺有趣,因此也用kangaroo 做一个模拟效果的测试,如上图所示。以下简要叙述思考方法。希望对学习kangaroo的朋友有有一定帮助。
基本思路:我们设置一个基本球体作为收缩形体,收缩后的效果,可以想象一个足球没有打气的时候会是什么样子?
因此我们先在gh中制作一个球形网格物体,注意他的结构是类正三角的。因为布料皱褶的方向是随意的任何角度都可能出现,这种结构的网格相对于矩形结构网格来说,其弯曲的方向比较没有明显的纹理走向的影响,因此效果比较自然,具体制作这个网格的方式在这里就不仔细说了,效果如下图所示。
材料分析:
类似布料这样的材料产生皱褶,可以考虑几个基本的力:
1.材料本身的伸缩力:这是kangaroo力模拟材料最基本的一个力,如果我们要模拟类似布料这种材料,那么模拟过程中它的伸缩性并不明显(表面积变化不大),因此我们将球体网格的边提取出来,接入connection 和接入 rest length。这样可以保持材料在开始模拟后表面积基本保持不变。
2.表面张力 如果没有表面张力,那球体收缩的时候就容易自交和产生不光滑的表面。因此加入张力如下图:
3.膨胀力 足球里面因为有气体产生膨胀力把足球鼓起来,因此我们需要加入膨胀力。需要注意的是新版本的kangaroo加入了一种新的膨胀力,这种膨胀力的大小根据物体体积的大小随之变化,相对于之前的直接设置膨胀力比较(力的大小恒定)它更加合理,因为物体内部的膨胀力跟他的体积是有换算的关系的。这也是我们这个例子中最关键的一个力,起到调整收缩程度的作用,如下图所示。
Volume(体积):这里设置希望物体膨胀后的体积数值,根据这个数值,会输出对应的膨胀力。因为我们只希望物体缩小(产生皱褶),因此先计算出当前球体网格的体积,乘一个(0~1)之间的比例系数,比例值用slider控制。K是气体常数,这个值在这里我们不做细致的解释,从效果上来说, 值为0时没有任何效果,我们建议该范例中设置为0.05.
将这三个主要的力设置好之后输入kangaroo的物理核心,并将mesh输入geometry,如下图所示:
接起来就可以开始kangaroo的力学模拟来看效果了。注意的是,在打开模拟之前,请务必将气体体积比例值滑块设置为1,因为在开始模拟前,必须保持球体体积跟实际是一样的。在开启模拟之后,逐渐的将这个值减小,注意要逐步一点一点的减小。因为真实世界里,球体内部的气体不可能一下子全部漏掉,所以我们力学的模拟也要模拟一个过程,逐步减小体积,否则球体会一下子剧烈收缩,导致模拟不出正常的结果。
另外为了模拟效果更好,我们还额外增加了一些力,例如:为了更好的避免网格自交,加入了SphereCollide 。为了避免球体过快收缩引起模拟失败,加入了AnchorSpring以减缓模拟速度。这些力的使用并不是必须的,可以在模拟调试过程中根据需要添加并测试效果。
具体每个力的大小这位置为多少?这也并不是固定的,需要缝隙不同力的重要程度来做尝试性设置,一般来说并不是一次就能成功,需要根据结果缝隙调整来得到合适的效果。
完整电路图如下所示:
以下为设置不同收缩体积时后得到的不同皱褶效果。在以下模拟中,比较难控制的是:如果皱褶比较多,那么就容易自交(打结),因此需要尝试不同的参数长测试得到细致的褶皱效果。
本篇教学并不是系统教学,因此简要介绍过程中的思路重点部分,在2014年暑期开设的Rhino原厂参数化设计课程中,对kangaroo的使用有较为全面和细致的介绍,对此感兴趣的同学可以留意我们的网站 shaper3d.com ,谢谢!
Gh文件在附件中下载,请注意如果需要正常开启这个文件,您需要安装最新版的kangaroo和Weaverbird,这两个插件都是免费的,可以在 www.food4rhino.com 上下载使用。 |