接上回預(yù)告:
Param Viewer老先生要準(zhǔn)備傳授我們掌控數(shù)據(jù)森林的魔法了嫌套,這時候他呼喚來一個可愛的童子助理 - 小櫻桃(Cheery Picker)雨饺。
小櫻桃說:“修煉數(shù)據(jù)魔法可不是一件簡單的事情,你可得做好心理準(zhǔn)備啊坯沪,我們一共有6個訓(xùn)練場哦,難度是一關(guān)大于一關(guān)的,做好準(zhǔn)備了嗎阱表?”
?- .......等等,難道沒有輕松學(xué)會魔法的方法嗎?比如吃一顆聰明果知識就進腦子了最爬!”
只見小櫻桃默默遞來一碗雞湯:“你機器貓看多了吧涉馁,這個世界上沒有不勞而獲的事兒!掌握好了數(shù)據(jù)魔法烂叔,以后GH的世界才能真正為你打開大門谨胞。還想不想做炫酷的參數(shù)化建筑了?”
“想.......” 于是蒜鸡,喝完雞湯的你充滿斗志地跟著小櫻桃來到修煉場的入口的地圖前面胯努。
1. 初級訓(xùn)練場(EXP+6) - 樹的生長與截斷?
1.1 Graft,1.2 Flatten Tree
2. 初級訓(xùn)練場 (EXP+12) - 樹枝的變換
2.1 Reverse List逢防,2.2 List Length叶沛,2.3 Partition List,2.4 Dispatch忘朝,2.5 Shift List灰署,2.6 Flip Matrix
3. 中級訓(xùn)練場 (EXP+30)? -? ? 特殊魔咒訓(xùn)練?
?{?;x} [ i ]
4. 中級訓(xùn)練場 (EXP+60)- 魔咒的運用
4.1 Simplify Tree,4.2 Shift Path局嘁,4.3 Tree Branch溉箕,4.4 Split Tree,4.5 Explode Tree? 4.6 Tree Statistics
5. 高級訓(xùn)練場 (EXP+120) - 新人勸退者?
Path Mapper
6. 隱秘修煉所(EXP+ 200) - 連線大師?
悦昵?肴茄??
初級訓(xùn)練場1 - 樹枝的生長與截斷?
開局一條曲線但指!再把這根曲線細(xì)分成10份寡痰,再提取曲線上的點,這樣我們就有11個點了棋凳。再給個Point List拦坠,標(biāo)出每個點的List Index,可以看到曲線點是按照從右到左的順序排列的:0剩岳,1贞滨,2,3...9拍棕,10晓铆。
???(Gif.1)
接下來,我們再讓數(shù)據(jù)開始發(fā)個芽看看莫湘?Graft準(zhǔn)備尤蒿!
(Gif.2)
請注意觀察Graft以后數(shù)據(jù)出現(xiàn)的變化,List Indx變成了0幅垮,0腰池,0...0,0。同時示弓,運算器之間的連接線也變成虛線了讳侨。
(對話)
?- “小櫻桃,我有點疑惑奏属,給我們的數(shù)據(jù)樹末端再增加分枝有什么作用呢跨跨?把每個點都單獨成組有什么作用啊囱皿?”
- “哈哈勇婴,待會兒你就知道了!請看下圖嘱腥「剩”
(Gif.3)
首先我們復(fù)制了一份與剛才相同的曲線,同樣細(xì)分為10份齿兔,提取曲線上的11個點橱脸。接下來,我們首先上下直接連線分苇,發(fā)現(xiàn)它們很老實地按照順利直接連接起來了添诉,跟欄桿一樣。然后再和下端剛才發(fā)過芽的點再連接一次...
??!!! 啊医寿,為啥是那樣的凌亂栏赴,發(fā)生了什么?
別慌糟红,我們先把其中一個點提取出來看看艾帐?
沒有Graft之前乌叶,我們的上下連線是非常規(guī)則的盆偿,但是graft以后,我們曲線上端的一個點與下端Graft后的曲線上每一個點都發(fā)生了連接准浴,這是為啥笆屡ぁ?
聰明的你注意一定注意到了乐横,下面那一排點在沒有Graft之前是0求橄,1,2葡公,3...9罐农,10。但是Graft以后變成了0催什,0涵亏,0,...0,0 气筋。這有什么意義呢拆内?這時候需要知道我們GH的運算規(guī)則:當(dāng)我們再執(zhí)行兩點相連的過程中,我們實際上所做的是兩顆數(shù)據(jù)樹彼此之間的List Iindex與List Index之間的相連宠默。
所以麸恍,當(dāng)我們在Graft下端曲線點的以后,我們上端的原始曲線點與下端的每一個點都發(fā)生了相連搀矫。
(對話)
“啊抹沪,我知道了!當(dāng)我需要與圖形里的每一個點都發(fā)生運算的時候瓤球,我就需要Graft一下我的數(shù)據(jù)樹2晒弧!冰垄!”
“嗯嗯...可以這么說蹬癌,看來Graft魔法你已經(jīng)初步懂得了『绮瑁” 小櫻桃?guī)е蓯鄣奈⑿卮鸬馈?/p>
“物有相互作用之力逝薪,學(xué)會了Graft,讓我們再看看它的逆向魔法 - Flatten”
于是小櫻桃給剛才graft以后的數(shù)據(jù)加上了一個Flatten蝴罪。
Flatten這個詞匯來自于Flat董济,指的是扁平化,大神口中常說的數(shù)據(jù)拍平就是它了要门。執(zhí)行起來很簡單虏肾,去掉數(shù)據(jù)樹的枝芽,只剩一個樹干欢搜,就是把所有的數(shù)據(jù)合并到一個大組里的意思封豪。
如圖所示炒瘟,F(xiàn)latten以后吹埠,所有的點都重新組合到了一個大組中,所以我們的連線又可以恢復(fù)之前的模式了疮装。
小練習(xí)(只有自己親自操做才能獲取升級經(jīng)驗值):
請自己在GH里敲一個Square缘琅, 再給個Point List,觀察Graft后與Flatten后的數(shù)據(jù)變化廓推。
做完 可以得到 EXP+5刷袍,同時解鎖成就:護林工!7埂呻纹!
(對話)
- "額鸽心?我怎么知道在啥情況下使用數(shù)據(jù)拍平Flatten呢?居暖?"
-"很簡單的顽频,比如你需要計算一顆數(shù)據(jù)樹的到底有多少個list啊,你可以先flatten一下太闺,再給個List Length就行了糯景。"
- “哦...總量啊...還有呢?”
-“比如把list都和起來省骂,再按你的需求重新分組绑盎础!”
- “嗯钞澳?還有這樣的操作怠惶?”
-“不僅如此,你還可以把樹枝們換來換去呢轧粟!”
-“聽起來真是神奇策治,小櫻桃,快教教我吧兰吟!”
初級訓(xùn)練場2 - 樹枝的轉(zhuǎn)換?
2.1 Reverse List 反轉(zhuǎn)列表
(Gif.4)
非常簡單的一個運算器通惫,用上之后我們List的順序就翻過來了,這個運算器常和List Item一起連用混蔼。
例如下圖:
(Gif.5)
當(dāng)模型比較復(fù)雜履腋,組數(shù)太多的情況下可以使用reverse list + List Item的組合快速定位到最后一組數(shù)據(jù)。
2.2 List Length 列表長度
非常簡單的運算器惭嚣,告訴你一個list有多長晚吞,需要與Flatten連用烹卒,在后面的關(guān)卡中會經(jīng)常遇到它逢勾,現(xiàn)在先在腦子里留個底兒就行。
2.3?Partition List 隔斷分組
(Gif.6)
Partition - 啥意思?在平面系統(tǒng)施工圖中不總有個Partition Plan嗎?Partition就是隔斷的意思,那么Partition List的作用像是在是在一個大組里重新立墻,分為不同的小組。Size就是你想要分組的數(shù)量。
2.4 Dispatch 分離
與Partition List 的功能類似,也可以對List進行分組。
(Gif.7)
那是Dispatch pattern在搞鬼遗座,這里的pattern是布爾值馋记,輸入不同的ture/false對list進行重新分組宽堆。
(Gif.8)
2.5 Shift List 偏移列表
(Gif.9)
Shift的意思是偏移极景,那么shift list就是根據(jù)你的設(shè)置前后偏移List的順序察净。
2.6?Flip Matrix 翻轉(zhuǎn)矩陣
這個名稱聽上去很高級,但其實用法很簡單的盼樟。
請看動圖演示:
(Gif.10)
Flip Matrix主要用于連線的時候,如果發(fā)現(xiàn)自己想連豎線的時候GH里的點卻是橫著連的晨缴,這時候你需要使用它了译秦,別被這個奇怪的名稱嚇倒了,這貨要用的時候自然就會啦击碗!
小練習(xí)(只有自己親自操做才能獲取升級經(jīng)驗值):
請自己在GH里畫一個面筑悴,根據(jù)第二關(guān)的方法進行細(xì)分,然后再依次演練一下以上的運算器稍途,每演練一個可以獲得EXP+2阁吝。
做完6個可以得到 EXP+12,同時解鎖成就:樹的魔法P蹬摹M挥隆!
(畫外音)
?- “羊坷虑,我到底要學(xué)多少樹的操作才可以建模捏形凹撞觥?你這訓(xùn)練場關(guān)卡也太多了吧猖吴?我只想速通GH摔刁。”
- “打鬼武者是不是要練一閃海蔽?打只狼是不是要練彈刀共屈?打黑魂是不是要練盾反?”
- “党窜。拗引。。幌衣。矾削。。豁护。哼凯。〕铮”
- “別問了断部,快去練吧!想速通是不可能的班缎,除非你是計算機圖形學(xué)畢業(yè)的蝴光,了解GH的底層建構(gòu)邏輯,才能快速掌握它的用法达址∶锼睿”
- "好吧,我去賺經(jīng)驗了沉唠。"
(本關(guān)結(jié)束疆虚,下一關(guān)是中級訓(xùn)練場,更多挑戰(zhàn)等著你哦B稹)