2016 年剛剛開始,作為衛武資訊 2016 年技術文章的第一篇,我們想來談談最近很紅的 Dynamo。

新年前,台灣 Autodesk 特地從新加坡請來了 Dynamo 研發團隊的講師來台開了兩天的專屬課程,但是因為開放的名額不多,報名熱烈,名額可以說是瞬間秒殺。然後突然間,Dynamo 就這樣在台灣紅了起來,紛紛有朋友及先進跟我們打聽Dynamo 的相關問題與情報,其中問的問題不外乎是以下兩種分類:

  • Dynamo 可以作什麼?

  • Dynamo 學習容易嗎?好不好上手?

 

既然大家對於 Dynamo 這麼好奇,在此我們把過去應用時發現的一些常見問題以及使用心得及想法作個簡單的回饋,希望能與大家能有一些交流的機會。

第一次接觸 Dynamo,或是對於 Dynamo 想有一些初步的認識的朋友,可以參考「建築極客」裡的Dynamo:遠不止是 GRASSHOPPER 簡化版這篇文章,原文說明解釋清楚,翻譯也貼近語意,對於想認識 Dynamo 的初學者來說是一篇極具參考價值的文章,惟內容稍微針對 Dynamo 與 Grasshopper 來進行比較說明,對於已經對 Grasshopper 有初步認識與理解的使用者來說,相信能夠藉此更容易的學習與了解 Dynamo 的運作或使用,但若是對於 Grasshopper 沒有概念的使用者,則更容易因此造成混淆,進而對於 Dynamo 的理解將會更加地模糊。

在 Google 搜尋引擎打上「Dynamo」與「Revit」的話,我們可以找到成千上萬張這樣的圖片:


一個 Revit 的畫面裡有著複雜曲線的外觀模型,另一邊伴隨著一個軟體畫面,裡面有著密密麻麻的小方塊和線段,這些小方塊,我們姑且稱呼他們為「電池」好了。像這一類使用電池相互串聯來取代程式碼撰寫的作法在許多的軟體都能見到,主要的目的就是降低程式撰寫的門檻,讓使用者不需具備高深的程式語言撰寫能力也能夠對於程式撰寫輕鬆上手。

在真正開始說明 Dynamo 之前,先請大家花一分半鐘的時間看看以下的介紹影片。


在這則官方釋出的影片中展示了 Dynamo 幾何參數設計及資料連動兩大運用範疇,這兩個也是最常拿來跟 Grasshopper 比較的部分。

有在嘗試自行建立 Revit 元件的朋友大概都知道 Revit 的點、線、面、體都是圍繞著一個參考面或是參考點來進行各種變化,所以很多時候調整參數的位置與角度可以使物件產生變化,或是藉由約束尺寸並調整參數來驅動物件的各種變化。


雖然 Revit 本質上是模型建立軟體,而非塑型軟體,其強項在於建築資訊的截取與管理,但是由於相較於 3ds Max 或是 Rhino 而言,Revit 提供的建模方式稍微過分嚴謹且提供的方法手段太少,所以過去要在 Revit 處理複雜曲面的造型問題,不是花費大量時間並透過繁複的程序逐步雕塑,就是藉由匯入其他軟體的實體模型做為參考的方式來達到在 Revit 中建立複雜曲面模型的目的。

過去在遭遇上述這樣的情況下常讓我們思考,如果能有一套軟體或是外掛程式能夠讓我們利用透過內部參數調整的方式來控制曲面的形成或者是進行一些反覆的機械性動作,必然能夠提升作業效率及生產力,同時也能激發更多的創意,這時候 Dynamo 的出現,確實實現了我們的期望。
 
話題再回到 Dynamo,究竟這軟體是如何構成的呢?我們利用原廠提供的基礎範例 2 來做個簡單的說明!


這是一個簡單的 Dynamo 說明範例,整個執行過程的核心是 Point By xxxx x或是 Line By xxxxx 這三個電池,前端的部分有 Number 與 Number Slider 做為控制參數輸入的控制項,利用參數的控制,將起始點的生成控制在 XYZ=(2,0,4.2) 的空間位置,而因為終點的控制項並沒有設定任何來源參數,故終點的空間位置始終保持在預設值 XYZ=(0,0,0) 的位置(原點)。

這樣的模型空間位置定義方是,對 Revit 來說並不是一個正確的物件描述方式。在 Revit 下,通常我們需要給定一個參考平面,例如 Z=4.2,然後再將點放置到 Z=4.2 參考平面上的 XY=(2,0) 的位置才能設定上述的起始點。

也因此我們能理解在 Dynamo 的一些電池,並不是 100% 對應 Revit 環境,這個特性就與 Grasshopper 的發展理念有所不同,對於 Grasshopper 來說,只要有 Rhino 指令,必定會有對應的 Grasshopper 指令,且 Grasshopper 電池串接的成果是能夠在 Rhino 環境下觀察到變化的。

在上篇這邊,我們總結兩個 Dynamo 的限制,一個是剛剛提到的提供的 3D 模型塑型方式太少;另一個限制是在 Dynamo 建立的物件不全然能夠直接作用至 Revit 中,因為在 Revit 中的物件有著嚴謹的族群定義,這是物件導向而非圖層導向軟體必須要遵守的原則,所以在 Dynamo 環境下建立出來的模型,雖然外型是符合使用者的設計概念或是需求,但是仍然需要使用者定義族群類型,告訴軟體所建立的模型究竟是帷幕、屋頂、柱或只是複雜的幾何曲線等,就好比若是我們嘗試在 Revit 中利用帷幕天窗的框料元件來製作格柵氣口天花時,雖然外觀是符合我們的需求,也確實仿造現實環境的天花外型,需要進行面積等計算時也不是問題,但該元件終歸是帷幕的族群而不是天花板族群,在分類及參數資訊的使用上就是不一樣。

那麼上篇先說到這邊,接下來我們會說明物件導向與參數的輸入、輸出之應用,最後再來說明到底為什麼 Revit 的使用者,我們都建議應該學習使用 Dynamo 的理由。

 
 

首圖來源 | DynamoBIM 官方網站
編輯整理 | 羅嘉祥(Layton Luo)、李宜謙(Jimmy Lee)