close

  • 首先,我們從起點開始,建立底部、外頂部以及內頂部開口的三個座標系統。

接著"Rectangle.ByWidthLength",利用底部、外頂部以及內頂部開口的三個座標系統建立長方形,利用這種方式控制鳥巢的比例,輸入數值的方式也不一定要像我這樣純粹放數字,也可以用算式或是Slider控制,這樣也比較方便調整量體的樣貌。

  • 用簡單的算式加減修正X、Y、Z座標位置,例如List[0].X,就是將List中的第0個Point的X座標軸篩取出來。
  • 重複為三個不同大小的長方形建立控制點,以接續後面的閉合曲線。

  • NurbsCurve.ByControlPoints就是以前面所找出的控制點生成曲線,並設定是否要閉合,其中要特別注意控制點的順序!

  • 重複NurbsCurve.ByControlPoints的動作之後,可以看到大略的雛型,共有三條NurbsCurve-底部、外頂部、內頂部開口。

  • 將NurbsCurve整理成List,接著再以Surface.ByLoft生成曲面。

  • 有了量體曲面之後,我們要想辦法找出鋼構的基準線,所以用這個方法來切割曲面,旋轉Plane.XZ,"CoordinateSystem.Rotate"之後會產生許多的Plane.XZ,然後將這些平面與前面生成的曲面建立交集,"Geometry.Intersects",建立交集的幾何線條。

  • 交集的幾何線條有非常多,但是我們不需要取用所有的曲線,所以只挑選部分來使用,以"List.TakeEveryNthItem"的方式將清單中N的倍數的線條篩選出來,接著在找出側面的曲線與底部、外頂部、內頂部開口曲線的交點。

  • 為了將每一條斷面曲線篩選出來,我們要把三個曲線(底部、外頂部、內頂部開口)上的點分組,分組之前需要把三組點改成同一筆清單,於是需要"攤平-Flatten",但是直接攤平與"List.Map+Flatten"又有些不同,大家可以"展示標籤"看看!

  • 重點的一個步驟"List.Transpose欄列轉換",原本的三組List分別是A.底部橢圓上的點B.外頂部橢圓的點C.內頂部開口上的點,而欄與列交換之後,每組List會變成[0](A0,B0,C0);[1](A1,B1,C1)…..;[n](An,Bn,Cn),因此每一個曲線斷面就找出來了!

​​​​​​​

  • 回憶一下,鳥巢的鋼構是直直的[0](A0,B0,C0)嗎?似乎有些不同,如果想像一下A0跟B0,C0都往不同方向移動一些位置,例如(A5,B1,C0),這樣子曲線似乎比較不同了吧!! “List.ShiftIndices"的功能,將每個點稍微的移動一下,就能達到這種效果! p.s.有國外大大發現List.ShiftIndices的移動量如果大於原本清單則會出現錯誤,因此外掛"Spring Nodes"有一個"List.ShiftIndices+"可以用!

​​​​​​​

  • 重複"List.ShiftIndices",產生兩組不同方向的曲線,在以"List.anspose"分組出各個曲線的點,將點連接成曲線"NurbsCurve.ByPoints"。
  • 有這些NurbsCurve之後,我們可以再一次隨機挑選出目標的曲線,選取方式是"List.GetItemAtIndex",所以我們只要讓"Index"是隨機的就好了,因此用"Math.RandomList"+"Math.RemapRange"(設定Index最大最小值)。

​​​​​​​

  • 同樣隨機取得兩次Index並且"List.GetItemAtIndex"之後,就可以產生兩組不同方向的NurbsCurves,此時可以看到大概的"雜亂"樣貌了。
  • 雜亂的NurbsCurves之後將作為鋼構掃略混成的路徑,因此我們要找到每一條NurbsCurves的"工作平面",重點的一個步驟就是"Plane.ByOriginNormal",而這邊可以利用"Curve.CoordinateSystemAtParameter"的方式找出每條NurbsCurves的CoordinateSystem,再用CoordinateSystem相關的Node來設定origin以及normal,這是一組蠻值得記起來的用法喔!大家可以試看看~

  • 終於來到最後階段!!"PolySurface.BySweep"掃略成形,這邊的crossSection可以是各種幾何斷面,我這裡是用長方形(Rectangle.ByWidthLength)與橢圓形(Ellipse.ByPlaneRadii)為範例,而rall當然就是連接前面隨機挑選的NurbsCurves,快試試看,就要成功了!
  • 當然別忘了,我們有兩組不同方向的NurbsCurves,重複"PolySurface.BySweep"以完成鋼構雛形!
  • 最後最後,來上個顏色吧!"Display.ByGeometryColor",設定RGB、Color Range…哎呀,很多種方式,總之可以參考這裡
  • 以上就是生鳥巢的步驟囉! 感謝大家的觀看~祝大家新年快樂~^^

​​​​​​​​​​​​​​

arrow
arrow
    全站熱搜

    ChiMing 發表在 痞客邦 留言(0) 人氣()