Dynamo「Vector案例」向量指示器


????向量是抽象的概念,在三維視口不可見【不同的Dynamo版本顯示略有差異】,這使得有關(guān)于向量的觀察調(diào)試非常不方便!
????經(jīng)過前面章節(jié)Vector的學習,現(xiàn)在已經(jīng)可以編寫一個屬于自己的向量指示器了!【部分未學習的節(jié)點會在后面章節(jié)解釋】
????蛙蛙會盡可能使用最簡單的圖形來實現(xiàn)其功能,當然,你也可以使用其他的圖形來替換,使用簡單圖形主要是考慮到未來大范圍的向量計算、調(diào)試的易讀性與流暢性!使用圓柱或者圓錐等實體拼接會消耗相當大的性能!

蛙蛙對向量指示器的功能需求:
1-? 表達正確的起點位置
2-? 表達正確的向量方向
3-? 表達正確的向量相對長度
4-? 可控縮放向量標記,以應(yīng)對不同規(guī)模的項目程序調(diào)試
5-? 小巧精簡,盡可能不分擔運算性能
方法的功能已經(jīng)確定,現(xiàn)在就開始著手實現(xiàn)方法吧!
????????新建3個模擬的輸入節(jié)點變量,分別來接收需要顯示的向量、向量的原點、向量的縮放數(shù)據(jù)。調(diào)試方法時,先使用Z軸向量,原點(0,0,0),縮放值暫時設(shè)為5,并分別連接到對應(yīng)的模擬輸入節(jié)點。

????連接完成以后,開始著手編寫方法內(nèi)部的功能。為了表達向量的方向,蛙蛙在向量的起點處繪制一個圓,圓平面法向就是輸入的向量,圓的半徑可變,作為可控縮放的一部分。將向量的原點按照向量的方向移動向量的長度的距離,連接起來,這樣我們就有了一個圖形來表達向量的方向。

????此時,已經(jīng)實現(xiàn)了查看向量的功能,但是由于標記太小,在實際應(yīng)用中很難看見,蛙蛙想要可以根據(jù)不同項目情況可動態(tài)調(diào)節(jié)整體標記的大小。
????蛙蛙使用一個乘法的節(jié)點,連接到模擬的縮放比例節(jié)點,用這個縮放比例值統(tǒng)一乘以向量的長度,再加一個乘法來控制圓的半徑。
【圓的默認半徑可自行設(shè)置,看起來好看協(xié)調(diào)就行,蛙蛙這里使用0.1】
????這樣蛙蛙就可以使用一個參數(shù),控制整個向量標記的大小。

????現(xiàn)在已經(jīng)實現(xiàn)了一個參數(shù)控制縮放,但是默認情況下顯示是黑色的,而在調(diào)試的時候如果有其他圖形也會是黑色的,蛙蛙想讓向量標記更明顯一點,給他顯示特定的顏色。
????蛙蛙使用GeometryColor.ByGeometryColor?圖形著色節(jié)點,將直線顯示為紅色,圓圈顯示為藍色。【什么顏色無所謂,自己喜歡就好】
????并隱藏前面未著色的直線與圓節(jié)點,以免影響觀察。將已著色的輸出合并到一個列表里,并連接到模擬的輸出節(jié)點。
【這一步做不做不影響顯示,這是為以后封裝自定義節(jié)點包做準備!】

????現(xiàn)在就實現(xiàn)了隨時可以隨時查看向量的方法啦!但是每次需要看的時候復制粘貼這一坨好麻煩呀!
????蛙蛙后面會介紹如何封裝自定義節(jié)點包哦,將方法封裝成自定義節(jié)點,把他放在左邊的節(jié)點庫里,使用就和內(nèi)置節(jié)點一樣方便啦!