標籤:

Grasshopper做萬箭齊發

前兩天在知乎上看到一篇文章

亞賽大人:新款上架!萬箭齊發毫髮無傷背景生成器?

zhuanlan.zhihu.com圖標

第一反應就是如何用Grasshopper做出來

今天咱還真做出來了

先放幾個圖

再上電池圖

介紹一下思路

首先我們需要做一個粒子發射器

核心電池就是populate 2d和move

對於發射器,肯定需要一個時間軸,我們就用number slider充當,取名為time line

如何用這個time line控制populate 2d發射粒子呢?

我們的構想是,當time line增加時,每增加x個數,場上的點數就多一個,用integer division 整除 可以完成這個需求。當一個點存在於場上後,它就開始沿z軸勻速移動。這就造成了第一個點要比第二個點移動更多的距離,第二個點比第三個點移動更多的距離,以此類推。我們容易想到用series 等差數列完成這一步,等差數列的項數就是點的個數,然後再用time line減去這個等差數列得到每個點移動的確切距離,再用一個因數調節整體移動距離,連給z vector即可。

萬箭齊發已做好,但是沒法做到毫髮無傷,我刪去中心的一些點即可

點有了,下一步就是把它轉換成面

寫面的方法很多,我用的是flat box轉surface再轉rectangle,好像直接畫rectangle計算量更少,但是我懶得旋轉基準平面了,就這樣吧無所謂啦。這一步的關鍵是讓每個平面的y軸都對齊視角中心。

然後就是上色了,原文中的著色方式有兩種,一:每根箭都有一個漸變。二:根據箭與發射點的距離賦予顏色漸變。

第一種較為簡單,先把我們畫好的矩形轉化成寬x高1的網格,(寬大於2就行)然後使用gradient 漸變結合mesh colours給網格上色。我還給rgb顏色加了alpha通道。

第二種也差不多,只需要注意remap number映射數字的時候,區間需要人為限定到視圖可見的範圍內

然後就能調整顏色和視角,瘋狂導圖了

還可以在time line上右鍵-animate,調整參數導出幀序列,最後合成視頻

對了,需要點display-preview mesh edges關掉grasshopper里對網格邊框的顯示才能達到最佳效果

鏈接: pan.baidu.com/s/1IMXD0d 密碼: i2cd

我用的是gh1.0.0004,低版本出現任何問題我不負責啊


推薦閱讀:

Rhino6.0八大建築方向強化
如何用 Grasshopper 寫出伊東豐雄的「蛇形畫廊」這種邏輯的形體?
Grasshopper 怎樣入門?
如何用 PS/AI/Rhino 做出這樣的水紋表皮或者紋理?
OSC1.0 Grasshopper 課程紀錄(一)

TAG:Rhino | Grasshopper |