Kangaroo鋼絲材料模擬教學(xué)(By Dixon)

作者:Dixon
McNeel Asia 技術(shù)支持
Rhino 中國技術(shù)支持與推廣中心負責(zé)人
Shaper3d(西普設(shè)計咨詢)聯(lián)合創(chuàng)始人
Rhino原廠GH課程與開發(fā)負責(zé)人

前言
Kangaroo能做什么
Kangaroo力學(xué)模擬插件是Grasshopper參數(shù)化設(shè)計軟件里一個備受關(guān)注的插件,一個重要的原因就是現(xiàn)在建筑學(xué)當(dāng)中很多用傳統(tǒng)方法比較難處理的部分,例如, 能夠貼合曲面形狀的規(guī)格化零件,所謂規(guī)格化即是讓每一塊零件的形狀是相同的,例如相同幾何形狀的鋁板或者玻璃,或者相同長度的鋼結(jié)構(gòu)。規(guī)格化問題對于實際建造有非常重要的作用,一方面規(guī)格化的幾何形體可以美化造型,另外一方面規(guī)格化的幾何形體也利于工廠的批量化加工生產(chǎn),顯著降低建造成本,以及施工環(huán)節(jié)的管理復(fù)雜度,使得一些前衛(wèi)卻難以建造的建筑設(shè)計方案得以實施。
對于規(guī)格化的優(yōu)化工作,Kangaroo是一個很重要的解決工具,他通過設(shè)計力學(xué)平衡的方法來達到幾何形體的規(guī)格化優(yōu)化,能快速和有效的解決其他方法難以處理的這一類問題。
對于Kangaroo的學(xué)習(xí),我們認為剛開始用戶可以多分析一些常用材料的力學(xué)特性,模擬一些常見材料的特性,建立熟悉力學(xué)的分析方法和規(guī)則,并再過程中熟悉軟件的使用。而后可以嘗試把這種力學(xué)平衡觀念用于實際建筑學(xué)的幾何優(yōu)化當(dāng)中。
以下這篇小教學(xué)就是針對鋼絲材料的一個分析和模擬過程,適合對Kangaroo有一點使用經(jīng)驗的用戶,要求用戶知道Kangaroo軟件的用法和基本規(guī)則。但即使你是初學(xué)者,也可以通過這個小教學(xué)了解軟件使用過程中的思維分析過程,畢竟參數(shù)化設(shè)計過程中最重要的還是思路。
鋼絲材料的模擬
最近我們的學(xué)員群里有同學(xué)在研究如何使用Grasshopper的Kangaroo力學(xué)插件模擬圖片上這種類似鋼絲材料的彎曲效果。我們也花了點時間做了一下,程序挺簡單,效果挺有趣。因此我們把這個小程序的制作過程做簡要介紹,希望對正在學(xué)習(xí)Kangaroo物理學(xué)插件的朋友有一點幫助。感興趣的朋友也可以關(guān)注Rhino原廠開設(shè)的Grasshopper參數(shù)化設(shè)計課程。

教學(xué)
材料特性分析:對于鋼絲材料,它有一個明顯的特性就是容易彎曲,并且彎曲過后可以回彈(回復(fù)原始形狀)。因此我們主要從彎曲的角度來模擬材料的力學(xué)特性。需要用到Kangaroo里面的bend 工具。但bend工具的使用方法較為繁瑣,在實體課程中會有較為詳細的介紹。在本篇教學(xué)中我們直接使用基于bend工具打包好的PolyLineBend工具,PolyLineBend工具用于模擬常見的線形材料的彎曲特性,使用方法較為簡單。

首先我們需要生成一根直線(line),將這根直線作為一跟初始的鋼絲進行模擬,在line中點右鍵,點擊跳出菜單中的 set one line ,然后在Rhino的Front視圖中畫一根水平線,如圖所示。


然后我們需要將這根直線處理為內(nèi)部很多點連接成的多重直線,為什么呢?因為在力學(xué)模擬計算中,為了模擬材料受力之后的形狀,需要深入到“微觀”來處理:需要在原始材料的幾何形狀上設(shè)置很多點,并計算這些點受力之后的新的位置,最后把這些點按照原來的連接方式重新還原成生成幾何形體,從而得到整個材料受力之后的形狀。
??對于這根鋼絲也是一樣,需要在形體上找到很多點,并連接成多重直線(多重直線反映了這些點的連接順序)。所以在這里我們首先把曲線等分為30段,然后把生成的點重新連接成多充直線,如下圖所示。

接下來把多重直線接入 PolyLineBend 的PolyLine端口, BendStrength是定義材料的回彈力度,對于鋼絲來說,他的回彈力度還是比較大的,所以我們設(shè)置為1000(默認值為100),
AngleFactor是設(shè)置材料的原始彎曲角度,他是一個比例值,0表示筆直,也即是說這跟材料在不受外力的情況下會恢復(fù)為筆直的形狀。如下圖所示。這樣材料彎曲力就定義好了。

接下來將設(shè)置好的彎曲力接入Kangaroo的力學(xué)計算核心模塊,如圖所示:


在材料彎曲特力設(shè)置好之后,我們需要在給材料定義一個更加基本的力:Springs(彈性力)。需要強調(diào)的是,彈性力是任何材料的一個最基本的特性,任何材料都有彈性力,因此對于模擬材料來說,彈性力是必須定義的,如果不定義彈性力,Kangaroo是不能正確計算出結(jié)果的,甚至計算中會出錯。

彈性力大小的理解是很重要的,在本篇教學(xué)中因為不是主要介紹的部分,所以簡要介紹一下,詳細的介紹在我們試題課程和后續(xù)的教學(xué)中會有。
??不同材料的彈性力差異很大,并且可能跟大部分人的認知有差異,例如,您認為一根繩子和一根皮筋,哪一種材料的彈性力大呢?可能很多朋友會認為是皮筋的彈性力大,但恰恰相反,繩子的彈性力遠遠大于皮筋。我們可以這樣理解:例如相同粗細和長度的繩子和皮筋一端都掛了一個重量相同的球體,在靜止的情況下,我們很容易根據(jù)經(jīng)驗想象到皮筋會被拉得比較長,繩子被拉長比較少甚至微乎其微,以至于您認為繩子長度沒有發(fā)生變化。那么分析一下,球體的重量是一樣的,因此對于繩子和皮筋來說他們受到的拉力大小是相同的,在相同拉力的情況下,皮筋被拉長很多,而繩子只是拉長了一點點。說明皮筋彈力小(容易產(chǎn)生伸縮,就像一根很細的彈簧,彈力小,受力容易變形),繩子彈力大(不容易伸縮,就像一根很粗的彈簧,受力變形?。?/p>
簡而言之,如果我們希望模擬的材料的長度不發(fā)生明顯的變化(例如繩子和布料),那么我們需要給材料定義比較大的彈性力。反之如果希望材料有明顯的長度變形特性(例如皮筋和氣球),那么需要定義相對小的彈性力。
在本例中,根據(jù)我們的經(jīng)驗,鋼絲是容易彎曲但是不容易被拉長(幾乎觀察不到明顯的伸縮),因此我們要給予材料的伸縮力比較大,將stiffness改為2000.(本例中默認值1000效果也不錯)
另外我們還需要設(shè)置兩個必須的端口:connection 和 rest length
connection這里必須輸入直線(line),line在這里被定義為一個伸縮力。兩個點之間如果有伸縮力存在,那么這兩個點之間必須連接為line并輸入到connection端口。因此對于這根線性材料,相鄰的點之間存在伸縮力(想想一下鏈條,一個掛住一個,一個拉一個),因此我們需要把前面做好的多重直線炸開變成很多段line,一起輸入到connection中。
rest length代表這些有伸縮力的點之間的初始長度(放松的長度),也即是他們不受到任何外力時候靜止的長度(類似彈簧本來的長度),在這里我們直接把每一根line的長度測出來直接輸入進去,表示當(dāng)前我們看到的這個線性材料的長度就是初始長度。(我們不希望看到模擬后這根材料的長度發(fā)生明顯變化,因此設(shè)置當(dāng)前長度為放松的長度)。
最后把設(shè)置好的彈性力也輸入到Kangaroo的 force objects中(所有的力都匯入force objects中進行力的綜合計算),注意把force objects端口點右鍵,設(shè)置為flatten,確保所有力會混合在一起計算力的平衡。
連接如下:

到目前為止,這根鋼絲的伸縮力和彎曲力特性都設(shè)置好了,但是因為目前這根鋼絲沒有受到外力,而且初始形狀就是筆直的,所以如果現(xiàn)在讓測序開始模擬計算是看不到任何變化的。所以我們需要給他施加一個外力,或者讓它的初始形狀不是直線,那么他才會模擬出對應(yīng)的受力形狀。
我們可以考慮現(xiàn)實情況,如果我么你要把一根鋼絲彎曲要怎么做?是不是捏住鋼絲的兩頭,并且用力彎曲鋼絲頭部的方向,這樣鋼絲就開始彎曲。那么如何在程序中模擬達到我們要的效果呢?
我們可以修改程序中鋼絲兩端的點的位置,以達到改變鋼絲初始兩端的方向的效果,這樣鋼絲在模擬時候就會發(fā)生變形。如下圖所示:

因此,我們需要將鋼絲兩端,每一端的前兩個點,一共4個點找出來,做一些角度調(diào)整,來控制曲線的彎曲。使用如下圖的方式取出這幾個點:


為了簡化控制,在這里我僅對左邊一端做角度控制,控制的方法是,讓左端端的靠內(nèi)部的點圍繞外部的點旋轉(zhuǎn),轉(zhuǎn)到其他角度即可。如下圖所示:

接下來,我們把左端的兩個點加入一個往右移動的功能,為什么要這樣做呢?因為如果我們保持端點不動,那么如果調(diào)整了左邊點的角度,鋼絲從直線變成曲線,長度就會變長,但是因為鋼絲的伸縮力很大,現(xiàn)實情況下是看不到這么明顯的拉長的,因此如果哦我們不適當(dāng)?shù)淖屼摻z兩端縮小距離,那么后面我們在做彎曲的時候,就看不到正常的鋼絲彎曲的效果。
如下圖示加入了往右移動的程序部分:

到目前為止我們得到了兩端的4個點,并且可以控制左端的兩個點的位置和角度,接下來我們需要把這4個點“釘住”,也就是固定住,讓這4個點在模擬計算的時候不論受到多大的力始終不會動,就好像現(xiàn)實中我們用手捏住鋼絲兩端的點,保持位置和角度不動,這樣鋼絲可以彎曲成固定的形狀。
那么如何定義者4個點的位置不動呢,我么你可以吧這4個點輸入到 AnchorPoints端口中,作為錨點,錨點在物理計算中作為一個固定點來使用,不論多大的力都不會動。但我們可以再程序外部通過剛才寫的旋轉(zhuǎn)和移動的方法控制它的位置,以此來調(diào)整初始時候的鋼絲兩端的角度和位置。連接如下圖圖所示:

這樣基本上材料的特性力和外部彎曲初始控制都設(shè)置好了,最后還一點就是要設(shè)置輸出的幾何體。是什么意思呢?前面說過,Kangaroo計算的只是材料內(nèi)部的點,那么我們要用這些點吧原來的材料形狀還原。因此呢,這里我們需要把那些line輸入到Kangaroo的核心中,Kangaroo會根據(jù)計算的點和line的關(guān)系,自動還原更新形狀后的幾何體,如下連接方式如下:

這樣整個程序就寫好了,最后把不需要看到預(yù)覽的電池的顯示預(yù)覽關(guān)閉,僅僅保留你想要看到效果的幾個電池的預(yù)覽。最后完整的程序如下圖所示:

整個程序并不復(fù)雜,但是這當(dāng)中涉及到的思路的解釋,和Kangaroo定義規(guī)則的說明是很多的。即便是這樣的解釋仍然是不夠系統(tǒng)的,對于初學(xué)者來說仍然會有理解上的難度。
最后做一點處理,將兩個slider集合到一個移動控制面板中,方便后面的效果調(diào)整,在兩個slider上點右鍵,選擇push to remote panel ,然后再菜單的view中選擇 remote conrtol panel,打開浮動控制面板,如下圖所示:



接下來,就可以進行模擬了,雙擊Kangaroo的核心,會跳出模擬控制面板,如下圖所示:

把兩個面板都拖到Rhino界面中,再開始模擬前,或者需要重新模擬前,請務(wù)必確認兩個slider都處在0的位置(原始位置),然后點擊三角形箭頭開始模擬,滑動滑塊,即可以看到對應(yīng)的彎曲模擬效果。

如下圖為幾個不同的彎曲成環(huán)的效果。
演示1

演示2

演示3

演示4

演示5

演示6

關(guān)注Rhino原廠微信公眾號,獲取更多資訊
