很難找到的犀牛gh詳細教程_第1頁
很難找到的犀牛gh詳細教程_第2頁
很難找到的犀牛gh詳細教程_第3頁
很難找到的犀牛gh詳細教程_第4頁
很難找到的犀牛gh詳細教程_第5頁
已閱讀5頁,還剩176頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、.犀牛Grasshopper詳細作坊: 淘寶TAO設(shè)計工c.w137644-11936346401.38.M5IFz2&id=521346428618I使用 GRASSHOPPER 算法建模譯序08 年底,ID 名為 Foral 的一個海外留學(xué)生在 ABBS 上開貼Parametric Design,這是國內(nèi)大多數(shù)人認識“參數(shù)化”的開始,自此之后,“算法”、“代碼”等曾經(jīng)與我們毫不相干的名詞開始被頻頻用于我們的言辭當中。面對新事物,大多數(shù)人選擇的是去嘗試和,我們開始學(xué)習(xí)使用Grasshopper、Rhinoscript、ParaCloud、Catia、Digital Project 等

2、輔助設(shè)計。在這些參數(shù)化當中,基于犀牛平臺的Grasshopper 是一個較為直觀、代碼呈現(xiàn)較少的參數(shù)平臺,因此目前被使用得非常廣泛。在國外尚且是新事物,參數(shù)化設(shè)計中文的學(xué)習(xí)更是有限。等人在早先也給我們帶來了Grasshopper_Primer 第一版和第二版的漢化翻譯,NCF、Shaper3d 等也給我們提供了交流平臺,目前上已經(jīng)積累了大量的中文學(xué)習(xí)??偸窃诓粩嘌葑兒透拢谖覀兎g AlgorithmicM的版本從 0.5.0099 更新到了 0.6.0059。但 AlgorithmicMling 這本書的過程中,Grasshopperling 這本書對算法思維的關(guān)注更甚于對技巧本身的使用,

3、正如作者所說:本書的章節(jié)設(shè)計是以“如何結(jié)合幾何對象和算法邏輯”以及“使用算法思維來處理某些設(shè)計”為出發(fā)點,因此本書更能幫助你解決如何使用“參數(shù)化”“算法”來輔助設(shè)計的迷茫。當然,本書中作者列舉出的實例涵蓋到了設(shè)計的很多方面,是一本絕佳Grasshopper 實例。感謝以下志愿者對本書的翻譯工作作出了努力:(排名不分先后)犀牛Grasshopper詳細計工作坊: 淘寶TAO設(shè)關(guān)于本書中文版的任何建議和意見請致信 ic.w137644-11936346401.38.M5IFz2&id=521346428618校對、編訂:Op-tin、王大川翻譯:王大川重慶大學(xué)東來-西往上海交通大學(xué)西安科技

4、大學(xué)大連理工大學(xué)沈陽大學(xué)II使用GRASSHOPPER算法建模簡介你嘗試過LEGO公司的Mindstorms NXT人套裝程序嗎?聯(lián)想一下我們建模也以那種行。目前所有行業(yè)似乎都在傾向于使用算法和參數(shù)化進行處理,為何設(shè)計不那樣做呢?我在AA學(xué)院攻讀新興技術(shù)與設(shè)計課程(Emergent Technologies and Design)的過程中,我發(fā)現(xiàn)在算法設(shè)計和相關(guān)方式建模的領(lǐng)域里,Grasshopper是以這種方式來完成項目的一個強大平臺,我遂決定將我獲得的諸多經(jīng)驗在這本書里給大家。我這樣做也是因為我發(fā)現(xiàn)在這非常有趣)。這是本書的初稿,我希望以個領(lǐng)域的著作、相關(guān)非常有限(盡管有很多后能逐漸改進之

5、,同時我也希望它能對你有所幫助。mad Khabazi犀牛Grasshopper詳細 淘寶店鋪TAO設(shè)計工作坊:© 2009mad Khabazi本書以電子文檔的形式制作和用于評論中的文字除外。作者,本書的不得進行的再利用,m.khabaziIII目錄第一章_算法建模1第二章_入門52_1_入手. 62_2_ Grasshopper的基本要素72_2_1_界面、工作區(qū)72_2_2_運算器82_2_3_數(shù)據(jù)匹配142_2_4_運算器幫助(彈出菜單)162_2_5_命令行式運算器尋找172_2_6_幾何體預(yù)覽. 172_3_其他. . 18

6、第三章_數(shù)據(jù)設(shè)定與數(shù)學(xué). 193_1_數(shù)據(jù)設(shè)定203_2_點和點陣223_3_其他數(shù)據(jù)設(shè)定233_4_函數(shù)253_5_數(shù)值和類型283_6_挑選數(shù)據(jù)303_7_2D幾何圖案35第四章_變動464_1_和工作平面484_2_對于二維直線和曲線494_3_結(jié)合實驗:再保險塔574_4_關(guān)于吸. 68IV第五章_參數(shù)化空間805_1_一維(1D)參數(shù)化空間815_2_二維(2D)參數(shù)化空間835_3_空間之間的轉(zhuǎn)換845_4_參數(shù)化運算器基礎(chǔ)855_4_1_曲線上取值855_4_2_曲面上取值865_5_參數(shù)空間對象增殖88第六章_ 變形和形態(tài)生成966_1_變形和形態(tài)生成976_2_面化996_3

7、_微調(diào)1026_4_回應(yīng)性調(diào)整106第七章_NURBS曲面和網(wǎng)格1127_1_參數(shù)化NURBS 曲面1137_2_與NURBS1247_2_1_幾何學(xué)與拓撲學(xué)1247_3_粒子系統(tǒng)1267_4_色彩分析1357_5_操控,作為一種設(shè)計. 139第八章_. 1418_1_數(shù)據(jù)表1438_2_激光切割和切割體組裝155第九章_設(shè)計策略170參考文獻174第一章_關(guān)于算法建模2關(guān)聯(lián)式建模第一章_關(guān)于算法建模如果我們視些幾何學(xué)和數(shù)學(xué)設(shè)計是一門以表現(xiàn)表達空間的為目的學(xué)科,在這個過程中我們通常需要處理一。在學(xué)的歷史中,不同類型的風格呈現(xiàn)給了我們多種多樣的幾何形式及與之相關(guān)聯(lián)的邏輯性,而且每個時期處理這些幾

8、何學(xué)的。自從計算機開始輔助設(shè)計以來,對于模擬空間和相關(guān)幾何,它便成了整個設(shè)計過程中不可或缺的一個組成部分。計算生成的幾何形式成為一個有趣的研究課題,編程算法與幾何學(xué)算法相結(jié)合的學(xué)科被稱作生成算法(Generative Algorithm),盡管許多3D才正在為設(shè)計行業(yè)提供可能性,就像可以幫助模擬幾乎所有的空間形象,但是生成算法的觀念設(shè)計領(lǐng)域中的“參數(shù)化設(shè)計(parametric design)”。師現(xiàn)在開始使用形式曲線和曲面來創(chuàng)造和研究空間,以傳統(tǒng)約定俗成的被稱作“ 歐幾里得空間” 的幾何空間形式。正是學(xué)與數(shù)字技術(shù)的結(jié)合產(chǎn)生了著名的“ 泡狀物(Blobs)”,并且推動對它的研究。計算機技術(shù)的發(fā)

9、展極其迅速,展的腳步。學(xué)也正在設(shè)法跟上數(shù)字技術(shù)發(fā)當代學(xué)在經(jīng)歷了“泡狀物”之后顯得更為復(fù)雜。設(shè)計已經(jīng)受到來自多層關(guān)聯(lián)和高度復(fù)雜的算法幾何潛移默化的影響。使用傳統(tǒng)來設(shè)計具有多部分和復(fù)合模式而又在外觀上為自由曲面、曲線形式的絕非易事。目前來說,算法和代碼正是解決這些難題的。顯而易見,當我們需要琢磨某種復(fù)雜形式的幾何形態(tài),我們需要借助恰當?shù)墓ぞ?,特別是能夠模擬這些幾何形式以及其屬性的計算機。因此,師們開始對群智算法( Swarms)、細胞自(Cellular Automata)或是遺傳算法感,并藉此尋找適合設(shè)計的算法系統(tǒng)以現(xiàn)有的平臺體系。這將是一個復(fù)雜性和多樣性相結(jié)合并且充滿創(chuàng)造力和美好前景的課題。第

10、一章3關(guān)聯(lián)式建模圖例1.1 進化計算和遺傳算法的參數(shù)化模型,2008下學(xué)年度。mad khabazi,AA學(xué)院新興技術(shù)研習(xí)班,導(dǎo)師Michael Weinstock,更進一步來看,在材料系統(tǒng)的內(nèi)在屬性中置入算法法則在目前的參數(shù)化概念中似乎更為可行。分析一下材料特性和它們在設(shè)計階段對整體環(huán)境的影響,那么這些組件和系統(tǒng)內(nèi)在屬性的就可以置入這個設(shè)計的參數(shù)化模型之中。因此這些遺傳算法不僅僅是與形式上的遺傳有關(guān),而且可以將其置入材料系統(tǒng)的內(nèi)在邏輯之中。“參數(shù)化設(shè)計的內(nèi)在邏輯在此可以幫助我們作為另一種設(shè)計的出發(fā)點,其中之一就是參數(shù)化模型的幾何學(xué)嚴謹性最初可以在單個部件范圍內(nèi)下整合業(yè)上的限制、裝配邏輯和材料

11、特性,進而增殖這些單個部件以形成更為復(fù)雜龐大的系統(tǒng)和集合。這種用對參數(shù)化的可變性的探索來理解這外在的內(nèi)在行為并且利用這種理解來制定相應(yīng)的策略以使系統(tǒng)能夠良好反饋整個環(huán)境狀”(Hensel, Menges, 2008)。為了處理這些復(fù)雜的對象,一個設(shè)計過程通常開始于一個非常簡單初級的階段,然后再逐漸添枝加葉。復(fù)雜形式是由不同層級組成的,每個層級與其相邏輯和細節(jié),這些層級也是互相和互相影響的。在理論上這種通常稱作“關(guān)聯(lián)(Associative ”。一般而言,關(guān)聯(lián)模型涉及到這樣法,設(shè)計元素在多層級和每個單層級下被逐步建立,這些元素的某些參數(shù)也成為在另一個層級其他元素的發(fā)生器,藉此延伸,逐步形成整個幾

12、何體系。例如,某條曲線的終點可以是另一個圓形的中點,這條曲線發(fā)生任何改變都會使該圓形發(fā)生相應(yīng)的改變。從根本上講,這種設(shè)計需要處理大量數(shù)據(jù)和計算過程,并且通過計算機算法邏輯來實現(xiàn)。不同于繪圖,算法生成建模通常以數(shù)字、數(shù)學(xué)法則和計算式開始作為初始數(shù)據(jù)來生成對象。就算是從對象開始,也會從該對象中提取參數(shù)數(shù)據(jù)來進行。設(shè)計中的任何對象很多內(nèi)在屬性,這些內(nèi)在屬性可以用來作為基本數(shù)據(jù)供以使用以及提供可能性讓設(shè)計得以成長。這個過程之所以稱作“算法”,是因為在這個可能性的過程中,每個對象在運算法則中的生成都是通過先前準備的的數(shù)據(jù)作為輸入條件,對象本身也能輸出數(shù)據(jù)供以這個運算法則中的其他步驟。關(guān)鍵之處在于一旦程序

13、完成,所有的幾何形態(tài)都很容易實現(xiàn)調(diào)整。在一個設(shè)計中設(shè)計者通常親歷了從起始點至具體細節(jié)的設(shè)計成品中的每個元素。事實上,既然設(shè)計成品是一套運算法則的產(chǎn)物,一旦運算法則的初始條件發(fā)生改變那么結(jié)果也可相應(yīng)得到更新。在傳統(tǒng)設(shè)計中我們經(jīng)常在紙上修改確定設(shè)計然后再到計算機上建立最終模型,以避免耗費時間的模型修改。一旦設(shè)計中的變化影響到其他幾何元素,修改這些因為與變化對象相關(guān)聯(lián)而發(fā)生變化的對象是一件非常麻煩的事,所有的這些幾何體都將重新調(diào)整、重新設(shè)置大小、重新確定朝向甚至是重新繪制一遍。現(xiàn)在我們可以在設(shè)計項目中建立數(shù)字化的草圖模型來推敲,生成大量有變化的形式以及調(diào)整只通過一些關(guān)鍵幾何參數(shù)來它們?,F(xiàn)在我們可以將

14、材料屬性、過程和裝配邏輯置入模型參數(shù)中。第一章4關(guān)聯(lián)式建?,F(xiàn)在我們甚至可以對環(huán)境做出反饋以及關(guān)聯(lián)到更廣義的情景當中 “參數(shù)化設(shè)計讓我們認識幾何行為模式以及認識與之相關(guān)聯(lián)的系統(tǒng)性能和趨向。進一步接收外界環(huán)境的反饋,這些動作趨向又能通過其參數(shù)的差異性(內(nèi)在屬性)影響特中的發(fā)展 ” (Hensel, Menges, 2008)例1.2 A:形式-尋找膜結(jié)構(gòu)中的極小曲面,物理模型;B:使用Grasshopper研究“膜”的運動。mad Khabazi,新興技術(shù)與設(shè)計設(shè)計小組,導(dǎo)師Michael Hensel 、 Achim Menges,2008下學(xué)年度。Grasshopper 是犀牛上的處理生成算法

15、和關(guān)聯(lián)模型的一個平臺。以下章節(jié)的設(shè)計是以“如何結(jié)合幾何對象和算法邏輯”以及“使用算法思維來處理某些設(shè)計”做為出發(fā)點。犀牛Grasshopper詳細 淘寶TAO設(shè)計工作坊:c.w137644-11936346401.38.M5IFz2&id=52134642 8618第二章_入門6入門第二章_入門2_1_入手當你完Grasshopper時,你應(yīng)該通過瀏覽Grasshoppe的主頁來了解一下它是如何操作的,上面也會有一些入門去指導(dǎo)你如何進行操作,如果你看過”Grasshopper Primer”在(AndyPayne of Lift Arch

16、itects),那么你應(yīng)該已經(jīng)對Grasshopper的運算器基本原理掌握的差不多了,如,多種類型的曲線,曲面等等。我反復(fù)強調(diào)這些信息,我希望你可以去理解,所以在接下來的章節(jié)中,我 把重點放設(shè)計上的強大功能。在接下來的學(xué)習(xí)中,假設(shè)在用不同角度的思維方式來發(fā)揮Grasshopper在你已經(jīng)有一定的基礎(chǔ),所以我就不再在“曲線的階數(shù)”這種上浪費筆墨。為了更好的學(xué)習(xí)和掌握Grasshopper,我建議大家最好登Grasshopper的網(wǎng)頁,在這里你會學(xué)到一些入門的基本知識,你也可在中參與討論以獲得新的信息,在此章節(jié)中,我要對工作界面和我們在學(xué)習(xí)前應(yīng)掌握的基本知識作下簡單總結(jié)。第二章7入門2_2_ Gr

17、asshopper的基本要素2_2_1_界面, 工作區(qū)和WINDOWS界面同出一轍,Grasshopper共由兩大部分組成,即運算器面板和工作區(qū),運算器面板中提供了設(shè)計用到的所有區(qū),Grasshopper界面的其他,工作區(qū)可以用來編輯運算器,你也可以將運算器直接拖至工作也很容易操作,我們會在接下來的學(xué)習(xí)中逐步了解。(如果你想了解取, 請細節(jié))。explained_26.html獲圖例.2.1. Grasshopper計算器按鈕和工作區(qū)。第二章8入門2_2_2_運算器在Grasshopper的面板下有不同種類的工具欄,你可以在 9種工具欄下找到你需要定義的數(shù)據(jù)類型,如Params, Logic,

18、 Scalar, Vector, Curve, Surface,Mesh, Intersect 以及 XForm。參數(shù)(Parameters)是指數(shù)據(jù)類對象,例如“點”或“線”對象,我們也可以直接從Rhino中手動選擇這些對象。運算器是指對參數(shù)對象進行變動的一類工具,例如“移動”、“定位”或“解組”。通常情況下我們需要輸入相關(guān)參量才能讓它們工作。但在本手冊中,為圖方便,我使用“運 算器(component)”這個詞來指代工作面板上的任何對象!在文本中我會對運算器單詞使用<>符號標示出來,例如<Point>。<Point> 運算器如果你右鍵點擊某個運算器按鈕,

19、會彈出一個包含該運算器相關(guān)功能屬性的菜單,這個菜單我們稱作“彈出菜單(context popup)”。<Pt> 運算器的彈出菜單第二章9入門定義附加幾何體通常在開始設(shè)計的時候我們需要花費一些時間在Rhino工作區(qū)中先建立一些幾何體,如 點, 線 , 面, 互相疊加形成復(fù)雜的形體, 因為任何對象都需要用一個運算器與其對應(yīng), 使其在Grasshopper中變得有效,所以我們可以通過Grasshopper面板中的PARAM工具欄中的運算器來給Rhino中的幾何體加以定義。把適合的幾何體運算器拖至工作區(qū)后, 通過右擊運算器, 選擇“set one . / set multiple ”可以把

20、Rhino中的幾何對象指定給運算器。通過指定單個或多個幾何對象給運算器, 該對象就變成了Grasshopper中可以調(diào)用的一個對象。這意味著我們可以通過手動創(chuàng)建物體和編寫程序語言兩種方式在Grasshopper中創(chuàng)建物體。圖例2.2. Params > Geometry菜單下的不同類型幾何對象下面舉一個簡單的例子。比如我們在Rhino視圖中定義三個點,想使3點連線形成三角形,那么首先我們需要將點導(dǎo)入Grasshopper中,在Params >Geometry > Point找到<Point>運算器。單擊并將其拖至工作區(qū)右擊鼠標并選擇set one point 選擇

21、其中一個點,其余兩點依次進行相同操作(圖例2.3)。第二章10入門圖例2.3. Grasshopper運算器從Rhino中選擇點。圖例2.4. Grasshopper工作區(qū)以及被定義的三個點在Rhino工作區(qū)變成(x)狀態(tài)。我把點運算器重新命名為A/B/C對應(yīng)Rhino上相應(yīng)的選點以便在Grasshopper工作區(qū)更好的識別運算器。第二章11入門運算器和運算器的關(guān)聯(lián)我們可以應(yīng)用這些運算器去達到多種不同目的,通常一個運算器可以從多個數(shù)據(jù)源中獲取數(shù)據(jù)(如參數(shù))并輸出結(jié)果。我們需要做的是將這些含有輸入數(shù)據(jù)的運算器與編程運算器的結(jié)果與需要這些輸出數(shù)據(jù)的運算器相連。,把輸出回到剛才的例子, 在Curve

22、工具面板工具欄中,在Primitive區(qū)域可以找到<line>運算器。將其拖至工作區(qū),然后將<point A> 拉至<line>的A把手,將<point B>拉至B把手(鼠標左鍵按住運算器一端的“半圓”然后將其拖至目標運算器上的另一個“半圓”,你可以看見在Rhino中,兩點之間繪制了一條直線)。圖例2.5. 拖拽<point B>的輸出端至<line>的輸入端將<point>運算器和<line>運算器連接起來?,F(xiàn)在將一個LINE運算器拖至區(qū)將pointA,pointB至其輸入端,使BC兩點連線,拖至

23、第二個LINE運算器至工作區(qū)按照相同操作我們可以得到一個三角形。圖例2.6. <line> 運算器可以在連續(xù)的兩個點運算,可見任何運算器作為數(shù)據(jù)源可以多次被使用。第二章12入門圖例2.7. 如果你在Rhino視圖中改變點的位置,這個點在Grasshopper中的坐標(X點)和三角形的形狀將隨之改變,而不需要重新進行操作。正如在第一個實例中所見,關(guān)聯(lián)建模技術(shù)可以使手動饋給我們,而不需要重新進行繁瑣的操作。點的位移而及時的把變化后的結(jié)果反輸入/ 輸出如前面所言Grasshopper中每個運算器中的輸入項與輸出項意味著它可以處理輸入數(shù)據(jù)以及將處理后的數(shù)據(jù)輸出。運算器左邊為輸入部分,右面為

24、輸出部分,任何數(shù)據(jù)來源都可以與運算器輸入項,輸出的為經(jīng)過運算后的結(jié)果。你需要知道在函數(shù)輸入何種類型的參量和之后要得出何種結(jié)果,接下來讓我們來了解下不同運算器所需要的數(shù)據(jù)類型,將鼠標箭頭在運算器輸入輸出部分停留,你就可以在工具提示上看到此位置所需要數(shù)據(jù)類型。圖例2.8. 彈出工具提示第二章13入門運算器多重連接有時一個運算器可以連接多個數(shù)據(jù)來源,想象一下上面的例子,如果你要用2條線連接A topoint B and C.你可以用兩個不同的LINE運算器或只用1個LINE運算而把B C 點同時連接在LINE的B項,如果想增加一條源,你只要按住SHIFT拖拽連接線至輸入端即可,否則Grasshopp

25、er會將原有的數(shù)據(jù)源替換掉(圖例2.12)。當按住shift鍵時,連接線的端頭的箭頭周圍會出現(xiàn)綠色的數(shù)學(xué)大括號并且出現(xiàn)一個正常情況下為灰色的 (+)小圖標。你也可以使用Ctrl鍵來取消運算器之間的連接(或者使用菜單)。此時,箭頭周圍的大括號會呈現(xiàn)紅色,并帶有一個(-)小圖標。圖例2.9. 通過按住shift鍵來建立運算器的多重連接。顏色編碼Grasshopper中自帶的顏色編碼可以顯示運算器的工作狀態(tài)。圖例2.10. 顏色編碼運算器若顯示為灰色則表示該運算器的數(shù)據(jù)流沒有,可以正常工作;如果運算器呈橘紅色表示它至少有1個待解決的,但這并不影響其;而如果運算器呈紅色表示數(shù)據(jù)源(如數(shù)據(jù)類型不匹配)出

26、錯而無法正常運行,為了使其正常算器的右鍵彈出菜單中尋求最初幫助(context,你必須設(shè)法找出錯誤的源。你可以在運> Runtime warning/error),然后檢查輸入數(shù)據(jù)找到錯誤。運算器顯示為綠色表示該運算器被選中。在Rhino建模區(qū)中與該運算器相幾何體同樣會呈現(xiàn)綠色(除此之外的其它Grasshopper會呈現(xiàn)紅色)。預(yù)覽在Rhino中創(chuàng)建幾何體的運算器的彈出菜單中有“Preview”選項。我們可以利用這個選項在Rhino場景中隱藏或是顯示該幾何體。運算器一旦被取消預(yù)覽它會呈現(xiàn)較深的顏色。我們經(jīng)常利用第二章14入門Preview選項來隱藏多余的對象 如線,面,以免在復(fù)雜模型中型

27、中發(fā)生。2_2_3_數(shù)據(jù)匹配對于多數(shù)Grasshopper運算器來說我們經(jīng)常為其輸入一組數(shù)據(jù)而不是單個數(shù)據(jù),你可以通過提供一組點給<line> 運算器來更 而不是反反是一條,我們可以用一個運算器來達到成百上千個對象。來看這個例子:如圖我這里有兩組各有7個不同位置的點,我們拖拽2個<point>運算器然后點右鍵單擊選擇setmultiple points來將這些點導(dǎo)入Grasshopper中。會形成七條線。可以看到我們也可以應(yīng)用一個運算器來生,將2個運算器與LINE運算器相連就個對象。(圖例2.11)圖例2.11. 多重點集以及在它們之間產(chǎn)生直線。第二章15入門但是如果兩

28、個POINT運算器中數(shù)據(jù)列表中的元素數(shù)目不同會出現(xiàn)什么情況?在此例子,第一行有7個點,第二行有10點在這里我們在LINE中加入一個新概念,稱為“數(shù)據(jù)中看到三個選項:匹配”右鍵單擊運算器標題在contextShortest list(短排法)Longest list(長排法)Cross reference(錯排法)在圖例 2.12中來看它們的不同之處:圖例2.12. 數(shù)據(jù)匹配 A: 短排法(shortest list), reference)。B:長排ongest list)和C: 錯排法(cross第二章16入門很明顯,短排法采用最少的一條數(shù)據(jù)來建立直線,而長排法采用最長的一條數(shù)據(jù)來建立直線,

29、同時短數(shù)據(jù)列的某個數(shù)據(jù)被多次使用。錯排法兩個數(shù)據(jù)集合中的任何兩個數(shù)據(jù)的聯(lián)系。錯排法需要處理大量數(shù)據(jù),因此很多時候在這種去情況下更新場景時會花較長的時間。既 然 圖 像 闡 釋 得 很 清 晰 , 因 此 我 不 再 贅 述 , 請:ofdatastreammatching.html 獲取信息。2_2_4_運算器幫助(彈出菜單)我不再把所有運算器一一作,而在接下來的學(xué)習(xí)中逐漸了解,我建議你在面板中隨便選出2個運算器,在context所需要的參量。(右鍵彈出菜單中)中點擊HELP來熟悉此運算器的功能及其數(shù)據(jù)類型和圖例2.13. 運算器彈出菜單和幫助頁面。第二章17入門2_2_5_命令行式運算器尋找

30、如果你知道你想要運用的運算器名稱,或者你想快速的搜索到所需要的運算器,你可以在工作區(qū)雙擊鼠標左鍵,鍵入運算器的名稱來獲得。圖例2.14.通過在工作區(qū)內(nèi)雙擊鼠標左鍵彈出的到工作區(qū)??蛑休斎脒\算器名字來尋找<line>運算器,運算器會自動添加2_2_6_幾何體預(yù)覽圖例2.15. 為了提高工作效率和得到更快的場景更新,當你的項目場景很大時,使用線框顯示可以優(yōu)化場景提高速度。第二章18入門2_3_其他在網(wǎng)上有許多學(xué)習(xí),可以些有創(chuàng)造力的想法,這里我提供一些學(xué)習(xí):Grasshopper主頁:McNeel Wiki站點上的某些:(可到其他)還有前面提到的Grasshopper 初級:以及很容易在

31、互聯(lián)網(wǎng)上搜索到的上百的。第二章第三章_數(shù)據(jù)設(shè)定與數(shù)學(xué)20數(shù)據(jù)設(shè)定與數(shù)學(xué)第三章_數(shù)據(jù)設(shè)定與數(shù)學(xué)盡管我們在使用一般3D建模時,我們使用建模按鈕來選擇和建立幾何形體,而不用考慮其數(shù)學(xué)實質(zhì)。但是為了處理算法建模,正如它的名稱,我們需要或多或少考慮一些數(shù)據(jù)和數(shù)學(xué)問題來建立運算法則和生種幾何形體。既然我們并不是所有形態(tài)都手動生成,因此我們需要處理一些原始數(shù)據(jù)作為基本要素讓這個運算法則起來。算法工作的容易理解而且邏輯清晰。正如我所說,我們用算法將一個物體在X方向100次,而不是在屏幕上用鼠標點擊100次,為了完成這個步驟,我們需要定義100這個數(shù)據(jù)最為復(fù)制次數(shù),定義X軸作為方向,之后算法就能自動完成工作。算

32、法建模中我們建立的幾何體背后數(shù)學(xué)原理可依。我們可以使用這類容易理解的數(shù)學(xué)函數(shù)用于我們的算法當中,將數(shù)據(jù)和物體結(jié)合,生成無窮無盡的幾何體組合。讓我們來具體看看!算法其實真的不難。3_1_數(shù)據(jù)設(shè)定首先,我們需要瞧瞧數(shù)據(jù)類運算器,來看看我們?nèi)绾芜M行不同類別的數(shù)據(jù)設(shè)定,之后我們就能相應(yīng)的使用它們。單個數(shù)據(jù)最有用的數(shù)字生成運算器當屬<Number slider> 運算器(Params > Special> Number slider),它可以個數(shù)字而且可以手動調(diào)整??梢允钦麛?shù),實數(shù)、奇數(shù)和偶數(shù),并帶有滑塊的上限和下限設(shè)定。你都可以跳過彈出菜單的“EDIT”命令設(shè)置。通過Param

33、s > Primitive > <Integer>運算器可以設(shè)定單個固定的數(shù)值。第三章21數(shù)據(jù)設(shè)定與數(shù)學(xué)數(shù)列我們可以用<series>(Logic > Sets > Series)運算器來獲取離散的數(shù)值,這個運算器可以產(chǎn)生一組我們可以調(diào)整其起始量,公差,項數(shù),的數(shù)值。0, 1, 2, 3, , 1000, 2, 4, 6, , 10010, 20, 30, 40, , 1000000數(shù)值范圍我們可以定義一個含有最大值與最小值的區(qū)間,然后在這個范圍之間按照一定的間隔均分來得到一系列數(shù)值。(Logic > Sets > Range).1,

34、 2, 3, , 101, 2.5, 5, , 101, 5, 10區(qū)間【譯者注:新版本中interval已經(jīng)更新為<domain>(Scalar>Domain>Domain)】區(qū)間提供一個實數(shù)范圍中較大值和較小值的間隔區(qū)域。這里有一維區(qū)間和二維區(qū)間兩種類型,位置是 Params > Primitive > Interval/interval2,或者Scalar > Interval ,這種讓運算器位于多個相關(guān)位置的程序設(shè)定讓工作更為靈活。interval本身不提供數(shù)據(jù), 它只是提供最大值和最小值的一個區(qū)間。你知道兩個實數(shù)之間有無窮的數(shù)。我們可以使用不

35、同的函數(shù)來分割它們并且最終作為需要的數(shù)值使用。第三章22數(shù)據(jù)設(shè)定與數(shù)學(xué)3_2_點和點陣點是幾何體與算法建模中的基本元素,正如點可以標記空間中的一個具條曲線或者多條曲線的起始點,圓的中心,平面的基準點,或者充當其他的有多種辦法獲取點。置,他們可能是一,在GH中我們可以- 我們可以用Params > Geometry > point從視圖窗口中將一個或多個點通過POINT運算器導(dǎo)入GH工作,你可以利用這些點來達到不同目的(在RHINO視圖中手動移動點的位置后,grasshopper會自動將數(shù)據(jù)更新不需要再次進行操作)。- 我們可以用(point XYZ)運算器vector > p

36、oint > point xyz)導(dǎo)入點,根據(jù)要求,用xyz數(shù)值來定點的坐標。- 我們還可以用<grid hexagonal> and <grid rectangular>還產(chǎn)生點陣。- 再者我們也可以用不同種從集合對象中抽取點,如endpoints, midpoints,等等。- 有時我們可以用planes (origins) and vectors (tips)作為幾何體或vice versa.的起始點。我們已經(jīng)在chapter_2中看到了生成點的,下面讓我們看看如何用<series>,<range>and<number slid

37、er> 以及其他生成點。圖例3.1. 用來使用<point xyz>得到一個點, 你可以通過 輸入xyz的值來修改點的坐標。圖例3.2. 用<series> and <point xyz>產(chǎn)生一個點陣,用第一個<number sliders>(與N項)兩點間的距離,第二個<number sliders>來然你也可以嘗試其他選擇。生成的點的數(shù)量,將數(shù)據(jù)匹配模式改為cross reference 可以形成點陣,當?shù)谌?3數(shù)據(jù)設(shè)定與數(shù)學(xué)圖例3.3. 定義一組5個數(shù)的從0到1的等差數(shù)列。并與<pt>運算器是相連,選擇Lon

38、gest list數(shù)據(jù)匹配模式,你會看到在RHINO工作區(qū)有6個點,這些點的橫縱坐標都在(0,1)之間(你也可以更改range運算器的區(qū)間)。第一個例子很簡單,你可以通過不斷的學(xué)習(xí)來研究這些運算器,來產(chǎn)生不同種排布的點陣。間距3_3_其他數(shù)據(jù)設(shè)定隨機數(shù)設(shè)定接下來要產(chǎn)生一組隨機分布的點,我們所需是一組隨機數(shù)據(jù)而不是一組有等差的數(shù)列來鏈接<PT>運算器(我用<point>而不是<point xyz>運算器),在這里向大家介稍如何Random運算器,為了避免出現(xiàn)相同的XYZ值 我需要為每一個輸入項定義不同的隨機數(shù)值。圖例3.4.系列隨機點。<random&g

39、t;運算器通過<number slider>輸入提供了10個隨機數(shù),之后這個數(shù)列輸入到<jitter> 運算器(Logic > Sets > Jitter)轉(zhuǎn)換為點的Y坐標值,以及再次使用轉(zhuǎn)換為Z坐標值。否則你會在最后的生成點網(wǎng)格看到某種規(guī)則圖案 (仔細檢查一下!)。將數(shù)據(jù)再次設(shè)定為“l(fā)ongest list”以避免最后產(chǎn)生規(guī)則圖案。在圖例3.4中所有點都分布在0到1范圍內(nèi)的空間中。要想改變點的分布區(qū)域我們需要更改數(shù)據(jù)范圍,<random>運算器用此來產(chǎn)生數(shù)據(jù)。我們可以通過手動設(shè)定<random>運算器的范圍,或者通過一個數(shù)據(jù)滑塊來輸

40、入給<random> (圖例3.5)。第三章24數(shù)據(jù)設(shè)定與數(shù)學(xué)圖例3.5. 用<interval>運算器來定義一個范圍(Scalar > Interval > Interval)來擴大點的分布區(qū)域(注意與Fig.3.4視圖中點陣的函數(shù)變化)如果你只用一個大限值(最小值仍為0)。限定一<random>的范圍,它僅僅可以可以作為這個范圍的最斐契數(shù)列如何創(chuàng)建一組兩點間距離成等差數(shù)列的點陣?讓我們看看可以利用的運算器,在logic標欄中找到<Fibonacci>運算器。斐契數(shù)列是一組某項值等一項的值的和等于后一項之和的一組數(shù)列。N(0)=0,

41、 N(1)=1, N(2)=1, N(3)=2, N(4)=3, N(5)=5, , N(i)=N(i-2)+N(i-1)這里列出該數(shù)列的一些值: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 你可以看到數(shù)值增長很快。在這里我用<Fibonacci>運算器(Logic > Sets > Fibonacci)來產(chǎn)生逐漸增長的一組數(shù)值,并用PT運算器與它相連,生成漸變點陣。圖例3.6. 使用<Fibonacci>運算器來產(chǎn)生間隔越來越大(非均勻數(shù)列)的點陣。點的數(shù)量可以通過<number slider>運算器來調(diào)整

42、。.第三章25數(shù)據(jù)設(shè)定與數(shù)學(xué)3_4_函數(shù)函數(shù)運算器是能夠提供數(shù)學(xué)函數(shù)的一類運算器。GH提供了處理從一個到八個未知數(shù)的函數(shù)類型(Scalar > Expressions).函數(shù)需要各種數(shù)據(jù)的輸入, ( 不一定總是數(shù)值, 也可能是值, 坐標等。) 然后更具用戶定義的函數(shù)進行運算。自定義函數(shù)可以通過雙擊運算器的(F)部分,然后通過彈出的Expression Editor 來定義函數(shù)。.Expression editor帶有很多的預(yù)定函數(shù)和數(shù)學(xué)符號供以使用。數(shù)學(xué)函數(shù)用已經(jīng)被定義好的運算器有時無法達到目的,因此為了達到預(yù)期的結(jié)果,我們還可以用函數(shù)解析式來生成形體。舉一個簡單例子,函數(shù)式X=Sin(

43、t) and Y=Cos(t)t的范圍是(0到2pi),我們應(yīng)用<range>運算器來生成0到1區(qū)間內(nèi)的一組數(shù)值,使用函數(shù)來乘以2 我們就得到了0 倒2pi的范圍。我們就是得到了一個完整的圓。圖例3.7.生成圓 ,你要用到<Sin> and <Cos>函數(shù),位于lar > Trig。 (F(x)=x * 2Pi)。圖例3.8.通過函數(shù)數(shù)列定義的系列點和形成的復(fù)雜曲線,(x>F(x)=x/100, y>F(x)=x/10)。選擇的綠色函數(shù)F(X)是一個簡單的函數(shù),將<number slider>產(chǎn)生的數(shù)據(jù)加1,以讓<seri

44、es>生成的數(shù)值和斐例子目的是說明我們可以通過簡單的數(shù)據(jù)設(shè)定生成復(fù)雜有變化的幾何體。契數(shù)類似富有變化。這第三章26數(shù)據(jù)設(shè)定與數(shù)學(xué)圖例3.9.<range>運算器生成的0到2的一組數(shù)列使用自定義函數(shù)乘以2Pi讓其變?yōu)?到4Pi的一組數(shù), 再使用這個函數(shù)處理:(X=t * Sin(t), Y=t * Cos(t),然后輸入給<pt> 運算器。.你可以將<range>與<pt>間的所有運算器都省略,用2個編輯變量表接來定義整個程序。的函數(shù)運算器與<pt>鏈X of pt > F(x)=X * Sin (x*2*Pi)Y of p

45、t > F(x)=X * Cos(x*2*Pi)圖例3.10兩組倒置相切的螺旋線點集(將<range>設(shè)置為0到4區(qū)間并與2pi相乘,使第一組數(shù)據(jù)的變量取值變?yōu)?到8pi區(qū)間,并從Logic > Lists中找到<Reverse list>運算器與該區(qū)間區(qū)間)。,使得第二組數(shù)據(jù)的變量取值變?yōu)?pi到0首先 <pt>: X=t * Sin(t), Y=t * Cos(t) 其中 t=0 to 8Pi然后 <pt>: X=t * sin(t), Y=t * Cos(t) 其中 t=8Pi to 0 (<reverse list>

46、;)第三章27數(shù)據(jù)設(shè)定與數(shù)學(xué)圖例3.11.烏斯點。X= Sin(u)*(-2+v*sin(u/2)Y= Cos(u)*(-2+v*sin(u/2)Z= v*Cos(u/2)u=0 to 8Piv=-2 to 2函數(shù)的功能很強大,你會找到很多的數(shù)學(xué)表來與你的數(shù)據(jù)進行匹配,重要的是你可以通過對原始數(shù)據(jù)進行修改,進而形成一系列不同的數(shù)據(jù),并用這些數(shù)據(jù)與其他運算器。我們可以看見同過一些簡單的數(shù)據(jù)設(shè)置就可以生幾何形體的數(shù)據(jù)源,在下面的學(xué)習(xí)中我們會不斷的深入。樣的幾何體,我們要使得這些數(shù)據(jù)作為生成圖例3.12.恩奈培曲面(Enneper surface),使用Rhino的Math function 插件。

47、用方程式建立曲面。第三章28數(shù)據(jù)設(shè)定與數(shù)學(xué)3_5_數(shù)值和類型一組數(shù)據(jù)并不受數(shù)量的限制,在程序與算法中,數(shù)據(jù)類型對程序的執(zhí)行起著的作用,由于我們現(xiàn)在正在學(xué)習(xí)算法,我們應(yīng)該知道算法的進程并不總是呈線性增長的,有時候我們需要決定他們是否有必要執(zhí)行下去,在,我們稱此為條件語句。我們會通過條件語句來程序是否符合特定條件和該如何做。而條件語句中的yes和no在算法中我們用值的true 、false替代。如果語句滿足條件,則返回值為true 否則為false。當你想執(zhí)行某些命令或是按特定要求選擇對象時,值起著重要作用。圖例3.13.在這個例子中我們先隨即生成10個數(shù)值,并用<function>運

48、算器來這些值是否小于一個最大上限值。將<function>中的表定義為X>Y并與<panel>,你會看到所有滿足條件的數(shù)值顯示在 <panel>中。圖例3.14 A 在這個例子,我們用<Modulus>運算器(Scalar > Operators > Modulus)來得到這些數(shù)值除以2所得到的偶性。,并且用<function>運算器來這些值是否為0,我們可以在<panel>中看到結(jié)果,并且這些數(shù)值的奇第三章29數(shù)據(jù)設(shè)定與數(shù)學(xué)圖例3.14 B 此例中,我們用一個<Gate And>運算器(Lo

49、gic > Boolean > Gate And)將兩個<function>并在<panel>中觀察習(xí)如何利用這些值的變化,可以看到只有即滿足是偶數(shù)并且小于上限值的數(shù)值的返回值為true,下面我們來學(xué)值。在Logic>Boolean面版中有多種運算器,你可以按你所需更好的將他們結(jié)合起來運用。圖例3.15. 我們用<Boolean>運算器( param>Primitive> Boolean) 來定義一組值, 或用<Boolean Toggle>(param>Primitive> Boolean>Tog

50、gle)來定義單一可變的值。第三章30數(shù)據(jù)設(shè)定與數(shù)學(xué)3_6_挑選數(shù)據(jù)很多情況下我們需要選取一組已給出數(shù)據(jù)中的某些元素,我們的函數(shù)不需要對所有的元素起作用。我們需要從一組數(shù)中選出我們需要的數(shù)據(jù)或者讓程序忽略掉其他數(shù)據(jù)。Grasshopper中有2個<cull>運算器可以用來移除數(shù)據(jù)列表中的單獨數(shù)據(jù)。<cull Nth>可以將數(shù)據(jù)列表中的第N個數(shù)據(jù)刪除,而<cull pattern>則是用一系列的值來移除列表中與這列值所對應(yīng)的數(shù)據(jù),值為true的保留,flase的則刪除。如果,列表中的數(shù)據(jù)數(shù)量與預(yù)先在運算器中定義一組簡單的式反復(fù)對數(shù)據(jù)列表中的數(shù)值進行值數(shù)量相同,

51、則仍按同樣的方式執(zhí)行運算,但是你也可以值(如False/False/True/True), <cull>運算器可以相同的模運算。間距邏輯我們想要從一系列點中以它門到參考點的距離為參量選出若干個點,用<point>運算器來定義這些個點,首先我們需要拖拽一個<distance>運算器到面板(Vector > Point > Distance)用來測量這些點到參考點的距離,將得到的數(shù)據(jù)與<F2>運算器的y相,同時<number slider>運算器與x輸入項,將他們相比較(<F2>component defined

52、as f=x>y).,在<F2>的輸出端將會產(chǎn)生一系列的值,通過這些值我們可以這些點到參考點的距離與上限值的大小,將輸出結(jié)果與<Cull pattern>運算器的P項,將會得到符合條件的點。如上所述,<Cull pattern>運算器可以將數(shù)據(jù)列表與一組值關(guān)聯(lián)計算,并且將對應(yīng)值為false的數(shù)據(jù)從列表中移除掉,從而得到值為ture的一系列點,并且這些點到參考點的距離在<number slider>所限定的值范圍內(nèi)。為了更直觀的看到結(jié)果,我們還可以用<line>運算器將這些點與參考點連線。圖例3.16. 從一個點集中選取點,通過它

53、們距離某個點的距離,使用<Cull pattern>運算器。第三章31數(shù)據(jù)設(shè)定與數(shù)學(xué)地形利用前面所述的以距離為參量選取點的原理,的一系列點來放上樹木模型。在山地模型上以高度為參量選取在等高線上圖例3.17.地形輪廓線上有一系列點。如果想要以高度為參量選取點,我們要先用<point>(更名為 topography)運算器來定義一組點,其次我們需要得到這些點到水平面的垂直距離,以同樣的原理來選出符合條件的點,拖拽<Decompose>(Vector > Point> Decompose)運算器到面板,得到這些點的z軸方向的坐標值,將其<F2>運算器X項, 并與<number slider>運算器的數(shù)值做比較, 輸出一組值。<Cullpattern> 運算器會將值為true 的這些z 軸方向高度大于定值的一系列點篩選出來。(<F2>component defined as f=x>y)。Fig.3.18. 選取高度高于4.7550個的點! (用戶自定)。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論