在對引數化的學習中,grasshopper已是最常見的工具。在剛開始接觸時,相信很多人能找到複雜形態的建模思路,但卻在形式語言的資料結構轉化過程中花費許多腦筋。在引數化設計中,樹形結構帶來了極大的自由性與可能性,但隨之而來也增添了一定的學習成本。現在總結一些平時會較為常用的資料處理方式,為資料處理的學習提供一些便利。

Grasshopper中常見的資料結構處理(一)

首先上一個簡單的樹形結構,例如資料長度為9,公差為1的等差數列Graft後得到的一組樹形資料。

可以看到資料結構分為三級,由0,0,1-0,0,9遞增。對資料結構進行分析,P端輸出每個資料對應的資料結構名,L端輸出每一級資料的個數,C端輸出資料結構的級數。

那麼首先對這個樹形結構進行一個基本的處理。

Grasshopper中常見的資料結構處理(一)

我們將資料結構分析的P端輸出到Cull Pattern,在Cull Pattern的P端設定(1;0),即將資料結構的第一級保留,第二級去掉,依次類推。這樣即可對資料的結構進行編輯。從L端的輸出結構可以看到,對應cull pattern中P段的設定,原結構的第2、4、6、8級的資料結構被抹去,生成了一個從0-4的新的資料結構層級。要注意,這裡只是對資料的層級進行了編輯而不是資料資訊本身。然後將這個資料層級的結果輸入Tree Branch中的P端,而將原有的樹形結構輸入T端,我們可以發現,在Cull Pattern中被抹去的層級(第2、第4、第6、第8)所對應的資料(1、3、5、7)也被抹去了,剩下的資料重新排列出新的層級。

Grasshopper中常見的資料結構處理(一)

同理,將Cull Pattern換成Dispatch,同樣的透過對P端進行設定,可以分流出我們所需要的資料結構。現在樹形資料每級只有一個數據,那如果想將相等個數的多個數據分在一組,那又如何處理呢?一個簡單的思路是,先將資料拍平然後透過Partition List,透過在S端設定每組資料的個數來達到。

Grasshopper中常見的資料結構處理(一)

當然,除了用運算器還有更好的辦法,就是利用強大的工具Path Mapper。剛開始接觸這個運算器的時候很容易感到頭大,因為作為空間藝術家的我們{狗頭}畢竟我們不是程式設計師,面對這種呆板的電腦語言開始感到很不適應{狗頭}。

例如,如果想將樹形資料裡的資料按相等的個數重新分組,只需要一個公式就能解決。

Grasshopper中常見的資料結構處理(一)

原來的資料結構分為三級,資料層級依次可以用{A;B;C}來代替,(i)則代替資料層級上資訊的序號。現在對資料末級C級進行int(C/n),n為等分的個數,例如圖中的3,即可達到Partition List相同的效果,對樹形資料進行重新分組,即C級的層級中按3個進行均分並重新分組。

有人看到資料層級上從頭到尾一直顯示{0;0;N},那麼可能會覺得前兩級明顯多餘。一般我們可以直接在運算器上進行Simplify,進行資料結構上的精簡。其實運用Path Mapper也可以做到。

Grasshopper中常見的資料結構處理(一)

直接將{A;B;C}(i)變為{C}就好了,簡單粗暴。還有人覺得每一級只有一個數據太浪費了,不如把這些資料都合到一級來。這裡我們同樣可以利用Path Mapper將每一級上的同樣位置資料單獨拎出來分在一組。例如我們將上述得出的資料每一級的0號資料都分在一組:

Grasshopper中常見的資料結構處理(一)

可以看到原有樹形資料的每一級的第0號資料都被分到了一組,按照原有樹形資料的順序依次往下排。這樣原有的8級現在由於資料單獨拎出來分成了一組就變成了一級,相當於被拍平。然後我們對生成的資料進行相同的操作,我們發現原來的每一級的相同序號的資料同樣都被拎出來分成了一組,恢復到了原有的狀態。這就很有意思。如果不好理解的話,我們可以再進行一個操作。我們對之前兩兩分組的樹形資料進行一次操作。

Grasshopper中常見的資料結構處理(一)

可以看到,每一級資料上,相同序號的資料被單獨拎出來,分成了一組,如0序號上的1,2,4,6,8,1序號上的1,3,5,7,都被單獨拿出來,分成了兩組。然後再進行一次操作,資料結構又復原了。這就是Path Mapper的作用,平時在找形的過程中,許多點位於線條分別屬於不同的層級,有時需要跨越複雜層級來對形態進行調整。上文距離的等差數列只是一個最簡單的樹形結構,平時遇到的樹形結構無疑要比這複雜得多。這時候Path Mapper就使這個過程變得異常方便。無論結構多麼複雜,只要真正理清了,就可以透過資料結構的處理使得空間形態得到更為自由與便捷的編輯。

(未完待續)