Grasshopper的曲面單元提取邊線順序一致性

Rhino原廠工程師

-Dixon

我們的 Rhino3D原廠課堂 (QQ群:308638931) 有學員反饋:GH的「Brep Edges 」工具提取曲面的4個邊緣順序不一致。

初步思考懷疑這是一個Bug,所以需要進一步測試找出錯誤點並反饋給GH開發工程師修復,我們做了兩塊最簡單的四邊面單元進行一些測試。1.檢查曲面單元的UV方向是否一致首先這兩個曲面的UV方向必須保持一致是前提,否則邊線是否一致就無從談起了。我們先寫一個簡單的程序檢查兩塊曲面的UV方向。這裡簡敘過程思路,不做具體的GH組件的說明。

在兩塊曲面單元上通過「Evaluate Surface 」組件的UV定位找到曲面上對應的位置點,例如圖中兩塊面的左下角的一個點。

「Evaluate Surface 」可以輸出UV坐標位置的一系列幾何數據,包括我們需要的UV坐標的矢量方向,因此右邊部分把UV兩個方向的矢量顯示出來即可。

結果可以從圖中看到,兩個曲面單元對應點位置的UV方向是完全一致的(如圖中的箭頭)「 剛開始接觸Rhino和GH的用戶並不能準確的理解UV坐標的概念,簡單理解為曲面上的XY坐標即可。所以下圖中「Evaluate Surface 」組件的UV並不是輸入一個「點」而是輸入點在曲面上的定位「坐標」。」2.檢查曲面單元的UV方向是否一致把這兩塊曲面單元輸入「Brep Edges 」提取邊線。如下圖,因為有2塊面因此各提取出4條邊線,輸出結果為2個列表,每個列表裡4條線。

提取出邊線後開始檢查邊線的順序是否一致,思路就是從每條邊線上取出一個點(一般用中點)然後根據列表的順序標出數字1,2,3,4.....這樣就可以看到每塊面提取出的四條邊線在列表裡的順序了,程序如上圖。可以看到雖然兩塊測試的面UV方向一致,但提取的邊線順序並不一致。「 通過測試可以確認「Brep Edges 」組件提取的邊線順序的確不一致。但這就能說明這是一個BUG么?我們最後再分析,首先我們先通過別的辦法解決提取的邊線順序不一致的問題。3.換一個思路解決問題如果用戶對Rhino里曲面的結構概念了解,那麼其實對於這種完整的四邊面,他的四個邊其實就是曲面邊緣的ISO線(等參數線),因此我們可以藉助"Iso Curve "組件獲取曲面邊緣線。

這裡可以通過定位UV坐標為 {0,0} 和{1,1}來提取到邊緣線,可以看下面的gif動畫幫助理解為什麼。

曲線提取出後合併為一個列表即可,這裡需要做一點數據處理,需要用戶了解GH的數據控制的基本法則,作為思路分享的文章這裡就不講太具體了,最終的結果就是兩塊面對應輸出兩個列表,每個列表裡就是對應的四條邊,則個程序的結果通過右邊的順序分析可以看到現在每個單元的4個邊順序就完全一致了。

文章分享到這裡差不多該結束了,但是尷尬的是,我這時候才注意到:其實直接有另外兩個組件就可以做到,如下圖所示這兩個組件可以直接提取單元的邊線而且順序是一致的。其實「Brep Edges 」本來就不是用來以順序提取邊線的工具,它更主要的作用是根據邊緣的幾何屬性做分類提取,所以從程序設計上來說這並不是這個組件的BUG,換句話說如果對提取的線有明確的順序一致性要求那麼根本不該用這個工具來做。所以前面的內容算是白做了嗎?

GH這種參數化理念的設計軟體本身就是為了突破傳統軟體的功能的限制,因此如果GH提供的工具無法直接達到設計想要的效果,換一個思路繞過去即可。所以解決問題的過程中介紹的思路和方法才是對學習者最有價值的部分,你注意到了嗎?

尊重版權 堅持原創

擴展閱讀

Rhino 6 新功能介紹視頻發布...

Rhino原廠視頻教學離線版正式發布...

Robert McNeel & Associates ---

Rhino原廠Rhino教育版的價值...

Rhino3D的不同版本介紹...

更多新聞與教學


推薦閱讀:

獨家教程 | 曲面紋理不好下手?康石石教你Rhino「3步」打造
獨家教程 | 建築中的「瑪麗蓮·夢露」,Rhino中「1個命令」即可輕鬆搞定
Rhino(犀牛)軟體是不是一次購買永久使用?

TAG:参数化设计 | 参数化建模 | Grasshopper | Rhino |