本书作者参考国内外前沿技术成果,深入浅出地讲解了参数化建模软件——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 系列线的扭曲效果