本書作者參考國內外前沿技術成果,深入淺出地講解了參數化建模軟件——Grasshopper,書中配有大量獨具特色的案例,尤其是綜合性案例——摩天大樓的建模。讀者通過學習本書能在較短的時間內掌握該軟件的主要理念和重要的制作技法,從而能較快地運用該軟件解決工作、設計中遇到的各種建模問題。
自從有了計算機以來,設計師們就夢想著實現設計的自動化。到了20世紀60-70年代,計算機開始協助設計師完成復雜的計算,或者繪制規則的工程圖紙。但是通過計算機將產品的設計要求和工程師的設計思想,直接變成可用的工程圖紙或者數控加工指令,在當時是不可能辦到的。
20世紀80年代初,AutoCAD軟件問世,標志著計算機輔助設計大眾化時代的到來,到了20世紀90年代中期,隨著個人計算機的普及,特別是Windows操作系統的出現,大量原來只能在工作站上運行的計算機輔助設計軟件紛紛向PC上移植。1997年,CAD歷史上一個重要的版本AutoCADR14推出,所見即所得的操作方式,可以使沒有多少計算機基礎的人士快速掌握計算機繪圖技術,使計算機輔助設計很快成為行業標準,徹底替代了傳統的手工繪圖,引領了一次設計方法上的革命。
進入21世紀,計算機輔助設計繼續向智能化、多元化的方向發展。機械和建筑設計的復雜性、多樣性和靈活性要求設計自動化必須走參數化的路子。自從以Pro/Engineer(機械)和RevitBuliding(建筑)等為代表的基于特征造型的參數化設計系統問世以來,在此基礎上實現設計的自動化已經變得切實可行。參數化設計技術是計算機輔助設計技術的又一次巨大的飛躍,目前先進的計算機輔助設計軟件大部分實現了參數化。
本書講解的是參數化設計軟件的一枝奇葩-Grasshopper。Grasshopper并非一個獨立的軟件,而是一款在Rhino環境下運行的采用參數化方式生成模型的插件。不同于RhinoScrip,Grasshopper不需要太多任何的程序語言知識,就可以通過一些簡單的流程方法達到設計師所想要的模型。
不同于Pro/Engineer和RevitBuliding這樣用途鮮明的參數化軟件,Grasshopper更加全能!無論機械設計、藝術設計還是建筑設計,Grasshopper都游刃有余、運用自如。Grasshopper強大的邏輯建模功能可以在短時間內生產大量結果,并以此進行對比分析,優化設計結果。
Grasshopper的學習也應當秉承由淺入深、循序漸進的原則,掌握基礎操作的同時建立起Grasshopper的基本思維模式。根據筆者多年研究和自身用戶的總結,要學好Grasshopper必須把握好以下3個關鍵環節。
熟練掌握數據類型、數據結構和相關運算器。
熟練掌握各種建模的運算器。
熟練掌握內部編程語言和可以調用的函數。
其中的第一條是關鍵之關鍵,務必優先掌握。
本書對基礎命令和運算器做了詳細的講解和運用,希望能為學習Grasshopper的讀者提供一個入門的基石。
本書在寫作過程中參考了國內外專家高手的一些制作方法,并使用了一些相關圖片資料,并盡量地在書中做出了標注,但是由于條件所限,不能一一告知,在此一并表示衷心感謝!
由于作者水平所限,本書錯漏之處在所難免,也懇請國內外專家高手不吝賜教,多多交流溝通。
程罡,高級工程師。從事計算機數字圖形、圖像、3D動畫、三維數值城市、虛擬現實技術近二十年。
南京機電學院校級特聘專家、全國職業資格認證中心特聘講師、航天神舟智能科技公司特聘專家、南京多家高校客座教授(南京信息職業技術學院、南廣學院、南師大中北學院、南京理工大學、正德學院等)、江蘇省科協STEAM云教育中心高級講師。
十余年來,與國內知名出版機構合作,出版《細說光影—3ds max & VRay室內渲染用光技巧》等專業著作多部。
第3章 功能和控制
內容提要: * 在表格中創建多重物體 * 使用數學功能繪制曲線 * 控制和表格 * 變換操作 * 形狀圖表
在Grasshopper中,對模型的編輯和控制是至關重要的一個環節,通過各種控制運算器,可以使模型產生極為豐富的變化。本章將講解各種控制編輯模型的技法,包括對多重對象的控制、對曲線的控制、對列表的控制等。
3.1 在表格中創建多重物體
采用Panel列表同時控制多個對象的屬性,高效率地編輯模型,這也是參數化建模相對于手工建模最大的優勢所在。
3.1.1 創建系列圓
打開GH,在工作區創建3個運算器,分別是Curve(曲線)標簽面板中的Circle(圓),Params(參數)標簽面板的Panel(面板)和Sets(設置)標簽面板的Series(系列),如圖3-1所示。
圖3-1 創建3個運算器
工作區中將出現3個運算器的圖標,移動3個圖標,將它們從左至右排列,視圖中的原點位置將出現一個半徑為默認值1的圓,如圖3-2所示。
在GH工作區,將Series運算器與Panel運算器相連接,將Panel運算器與Circle運算器的R(半徑)端口相連接,視圖中將生成10個圓,半徑從0到9,如圖3-3所示。 圖3-2 視圖中出現一個圓 圖3-3 連接運算器產生系列圓
3.1.2 改變系列圓的起點 目前,系列圓的起點半徑是0,這個圓是沒有意義的,用戶可以將其更改為從半徑1開始。在Series運算器圖標左側右擊,在彈出的快捷菜單中選擇Set Multiple Numbers命令,在彈出的對話框中,將原來的0作為起點,更改為1,最后單擊對話框下方的Commit changes結束設置。Panel運算器中的系列圓半徑從1.0開始,如圖3-4所示。 圖3-4 更改系列圓的起點半徑
3.1.3 顯示系列圓的信息 再創建一個Panel運算器,放置到Cir運算器的右側。將Cir運算器的C端口與新建Panel相連接,Panel運算器上將顯示系列圓的信息,如圖3-5所示。 括弧中的“R: 1.00 mm”的含義為“圓的半徑是1毫米”。其單位由系統設置決定。 圖3-5 系列圓的半徑
3.1.4 動態改變系列圓的半徑 在工作區創建一個Panel運算器和Slider運算器。 將Panel運算器的數值設置為1,將其與Series運算器的S(Start)端口相連接。 將Slider運算器與Series運算器的N(Step N)端口相連接。連接完成后,前者的名稱將變更為Step,如圖3-6所示。 圖3-6 再創建兩個運算器 接下來用戶可以拖動Step運算器中的滑塊,動態改變系列圓的半徑。 Panel運算器的參數將決定系列圓半徑的起點,如果設置為2,則系列圓半徑的起點將變更為2,如圖3-7所示,其余以此類推即可。 圖3-7 改變系列圓的起點半徑 3.2 創建系列直線段 本節介紹采用參數化方法繪制系列直線以及編輯直線形態的方法。將講解使用Range運算器改變系列直線排列方式,加法運算器Addition產生階梯上升效果,和Reverse List運算器產生扭曲效果的方法。
3.2.1 直線的創建 新建GH,在工作區創建3個運算器,分別是Curve標簽面板中的Line(線)運算器(如圖3-8所示)和兩個Pt(Construct Point)運算器。 圖3-8 Line運算器 將兩個Pt運算器分別與于Line運算器的A、B端口進行連接,結果如圖3-9所示。 圖3-9 Line運算器的連接 創建一個Series運算器,將它的S輸出端口與兩個Pt運算器的X軸端口連接起來,如圖3-10所示。 圖3-10 創建Series運算器
3.2.2 創建系列直線 創建兩個Panel運算器,數字分別設置為1和10。分別連接到兩個Pt運算器的Y軸輸入端口,如圖3-11所示。 圖3-11 創建Y軸的輸入 視圖中將出現10條直線,每條線的Y軸向上的坐標為(1,10),每條線的X軸方向間距是1,如圖3-12所示。 圖3-12 創建10條直線
3.2.3 Range運算器的功用 在Sets標簽面板的下拉菜單中,加載Range(范圍)運算器到工作區。該運算器用于產生一個數字的變化范圍,如圖3-13所示。 圖3-13 Range運算器的位置 如果將光標放置到Range運算器右側的R(Range)字母上,將會出現一個Range(R) as list面板,顯示其默認的參數范圍,從0.0到1.0,如圖3-14所示。 圖3-14 顯示運算器取值范圍 將Range右側的R端口與Pt運算器的Z軸端口相連接,如圖3-15所示。 視圖中的系列直線的Z軸坐標將呈現從低到高的坡狀排列,Z軸坐標從0到1排列,如圖3-16所示。 圖3-15 Range運算器的連接 圖3-16 直線的Z軸坐標 創建一個Panel運算器,將其與Range運算器的R端口建立連接,Panel面板中將顯示Range運算器的取值范圍,如圖3-17所示。 圖3-17 創建一個Panel運算器
3.2.4 動態系列線的設置 在工作區中Series運算器的左側創建一個Slider運算器,雙擊左側的運算器名稱,打開Slider對話框,設置其N的取值范圍為2~20,如圖3-18所示。 圖3-18 Slider運算器的設置 將Slider運算器分別與Range的N端口和Series的C端口連接起來,運算器的名稱也變更為Count,如圖3-19所示。 圖3-19 Slider運算器的連接 拖動滑塊可動態創建系列直線,如圖3-20所示。 圖3-20 動態創建系列直線 圖3-20 動態創建系列直線(續)
3.2.5 Addition運算器 在Maths標簽面板中拖動Addition(加法)運算器到工作區,創建A+B圖標。該運算器用于加法運算,如圖3-21所示。 圖3-21 創建Addition運算器 將Slider運算器與Addition的A端口相連接,再將Addition運算器的R端口與Series運算器的C端口相連接,原來的Slider與Series的連接將自動斷開,如圖3-22所示。 圖3-22 Addition運算器的連接 在Maths標簽面板中,將Construct Domain(構建數字域)按鈕拖動到工作區,創建Dom運算器,將Dom右側的I端口與Range的D端口相連接。再創建一個Panel運算器,參數設為1,將其與Addition運算器的B端口連接起來,如圖3-23所示。 圖3-23 創建兩個運算器 再創建一個Slider運算器,將其取值范圍設置為0~20,將其與Dom的B端口連接起來。該運算器的名稱將變更為Domain end,如圖3-24所示。 圖3-24 創建新的滑塊運算器 拖動滑塊,系列直線將產生坡度大小的變化,如圖3-25所示。 圖3-25 Dom運算器控制坡度 圖3-25 Dom運算器控制坡度(續)
3.2.6 設置扭曲效果 在Sets標簽面板,將Reverse List運算器拖動到工作區,創建Rev運算器圖標;該運算器用于翻轉列表中的數據。 將Rev運算器的L端口與Range的R端口連接,將L端口與Pt的Z端口相連接,如圖3-26所示。 圖3-26 加載Reverse運算器 視圖中的系列線將呈現相互翻轉的扭曲效果,如圖3-27所示。 圖3-27 系列線的扭曲效果