即之前的兩篇Grasshopper分析圖教程之後,今天LAC制圖教室将繼續帶領大家進行GH分析圖的學習。
那麼本次課程我們主要來聊一下前一段時間在網絡上非常火的城市人流分析圖。
STEP 1
圖紙分析
對于任何分析圖,我們在繪制之前首先都要明确圖紙想要表達什麼。上述幾張圖紙其實都選自國外 21 maps that show how people run in different cities 這一套作品。每一張圖中紫色的線其實都表現了大城市中人的日常活動流線。并且紫色線的深淺和粗細表示了每條路徑人流的多與少,因此結合城市底圖,可以讓讀者非常清楚的了解每個城市中人流的特點。這對于後續城市設計以及城市中建築單體設計的選址和場地分析都有極大的指導作用。
比如下面這張圖表示的就是德克薩斯州達拉斯的人流特點。通過圖紙我們可以清楚看到達拉斯市的沿湖區域人流密度極大,并且具有明顯的城市幹道。因此如果我們要進行一個商業體的設計,從人流上看,湖邊區域無疑是最優的選擇範圍。
當然,對于這樣一張圖紙的繪制,真正正确的方法必定是基于大量的真實人流數據的記錄與分析,通過對于每個測試樣本走過路徑的統計,最終才可以得到這樣一張人流分析圖。但對于學生階段的我們,這種需要大量數據記錄與統計的方法肯定是無法使用的。因此這次教程我們将通過grasshopper進行虛拟的人流的模拟,來得到一張近似正确的人流分析圖。在這可以非常明确的告訴大家,這種方法肯定是存在較大誤差的,但和那種直接在PS中繪制城市人流的方法相比,還是相對比較科學并且高效很多的。
STEP 2
GH人流模拟
在進行人流模拟之前,首先我們需要獲取我們将要分析城市的基本路網。這裡借助Elk插件和Openstreetmap。我們可以非常快速的獲取我們需要城市的場地。具體操作大家可以參考LAC往期的文章.
這裡就不再贅述了。已小編所在的香港為例,在openstreetmap上選擇上環-中環-灣仔這段,導出OSM數據。
在grasshopper中,通過file path 打開OSM文件,結合ELk的location和OSMData運算器,我們可以非常快的獲取所需類型的位置點(這裡因為分析人流需要路網,因此選擇highway),通過prune tree清除數據量小于2的數據(構成線至少需要兩個點),通過polyline就可以獲取基本的城市路網了。
完成路網之後,我們就可以進行人流的模拟分析了。首先我們要确定所有人的出發點。因為這片區域北側為維多利亞灣,很明顯人不可能從海裡面出發。所以第一步我們需要在Rhino中确定基本陸地的範圍。通過polyline大緻把陸地的範圍圈出,通過curve抓到GH中。
之後我們可以借助boundary surface生成面,運用populate geometry生成随機點來模拟人的出發點。
雖然這種方法,可以很快的模拟出随機出發點,但是它卻有一個緻命的缺陷,那就是實際情況下,對于任何城市而言,人的分布都不會是均勻的。CBD,大型娛樂場所,購物中心,他們的人群密度會遠遠大于其他區域。以這片區域為例,Central Tower,IFC,灣仔街市等地方的人群密度肯定會遠遠大于南側middle level的居民區。因此我們要考慮對這種方法進行優化:通過人工選擇一些人群較為密集的區域,布置較多的出發點。在這我們運用point選擇幾個點作為人群密集點(在大家自己的場地分析中,這一步的選擇需要通過前期場地的調研得出)
之後為了取得離這些點近人多,離這些點遠人少的效果,我們可以通過在一組同心圓上分布随機點,類似下圖。
以選取點繪制同心圓。
但在這時我們還不能直接生成随機點,因為部分圓會伸入到海洋中,因為我們需要運用region intersection求一下同心圓的我們之前繪制的陸地界線的交集。
之後通過一次path mapper數據結構的調轉
我們就可以可以生成随機點作為我們的人群出發點拉
之後我們運用相同的方法獲取我們的人群目标點,遵循相同的原理,我們隻要改變seed的數值就可以了。
然後我們就要獲取人流路徑,因為大部分人都傾向于到離自己最近的目标點,因此運用close point獲取每個出發點對應最近的目标點
但這個時候如果我們直接連線,也是不符合實際情況的,因為有的時候人們附近的目标點并不一定可以滿足人的需要,在特定情況下人們必須要去城市中離自己比較遠的一些地方(比如小編住在龍華的港大第三村學生宿舍,日常吃飯我肯定會選擇最近堅尼地城,但是購買家具的話我就必須要去銅鑼灣的宜家了,因為堅尼地城并沒有宜家)。因此我們使用jitter,來模拟這種局部情況。
這樣我們就獲得了最終的人流路徑。但是新的問題出來了,目前的人流路徑是從出發點到目标點的直線,實際情況下,人的流線是必須要遵守城市路網的變化,不可能是這樣的直線。所以下一步,我們要運用shortest walk插件,來獲得符合路網的人流線 (下載地址 http://www.food4rhino.com/app/shortest-walk)
但是對于shortest walk有個事情是我們需要注意的,其C端是需要曲線互相打斷的,因此如果我們直接把Elk生成的曲線連到C端效果并不會好。
因此,我們需要把Elk生成的線進行打斷,在這裡我用的方法是bake到rhino中運用TS的split命令打斷,再重新導入到GH中,連接到shortest walk.
到此為止,我們就獲得了符合城市路網的人的運動流線了。
不過目前因為大量的流線還重疊在一起,那種人流越密集線越粗顔色越深的效果還不明顯。我們還需要對我們的GH進行修正。我們知道如果給予每個曲線一個随機的抖動,那麼重疊在一起的線,就會因為數目的不同獲得不同的寬度和深淺。所以我們要想辦法讓曲線抖動起來。
因為曲線是有點構成的,點是由XYZ坐标構成的,通過提取曲線的控制點,拆分為xyz坐标,如果我們随意的給xy加一個随機數,在重新生成點,連接成線。我們不就是可以讓曲線抖動起來了嗎?
提取控制點
拆分xyz,随機加上一個數值,再重新生成點
連接成線
通過控制随機數的區間大小,我們可以改變線的粗細。
當符合要求之後,将其bake到Rhino中,導出為AI文件。
STEP 2
後期處理
後面的操作就非常簡單啦,打開AI文件,給曲線調一個比較風騷的紫色。透明度設為70%。外觀中把樣式設為正片疊底。
再在mapbox裡面下載一個香港地區的地圖,疊到流線下面。嘟嘟嘟,我們的流線圖就搞定啦。
當然由于之前沒有對參數(聚集點,出發點數目,目标點數目,點抖動範圍等等)進行詳細調試,導緻了部分流線和道路無法完全吻合,但是抛磚引玉,這種方法還是能較為科學的,幫助大家在較短時間裡繪制出一張城市人流分析圖。
有話要說...