重磅推荐
【产品特色】

【深度学习】

【编辑推荐】

本书作者参考国内外前沿技术成果,深入浅出地讲解了参数化建模软件——Grasshopper,书中配有大量独具特色的案例,尤其是综合性案例——摩天大楼的建模。读者通过学习本书能在较短的时间内掌握该软件的主要理念和重要的制作技法,从而能较快地运用该软件解决工作、设计中遇到的各种建模问题。


【内容简介】

本书是一本讲解参数化建模软件Grasshopper的技术专著,参考国内外*研究成果,对Grasshopper做了深入浅出的讲解,同时配有大量独具特色的案例,使读者能在较短的时间内掌握该软件的主要理念和重要的制作技法,从而能较快地运用该软件解决工作、设计中遇到的各种建模问题。

本书分为上下两篇,上篇为基础篇,包括第1~7章,主要讲解Grasshopper的基本操作和常用运算器。下篇为案例篇,包括第8~11章,详细讲解了一个综合性案例——摩天大楼的建模。

本书适合从事建筑设计、机械设计、艺术设计、工业设计的人士和CG爱好者参阅,也可以作为高职类院校相关课程的教材和教参使用。


【作者简介】
程罡,高级工程师。从事计算机数字图形、图像、3D动画、三维数值城市、虚拟现实技术近二十年。
【目录】
目 录

上篇 基 础 篇


第1章 Grasshopper概述.... 1

1.1 参数化设计和Grasshopper 2

1.1.1 什么是参数化设计... 2

1.1.2 参数化建模与手工建模... 2

1.1.3 什么是Grasshopper 5

1.1.4 Grasshopper的运用... 6

1.2 Grasshopper的下载和安装... 10

1.2.1 Grasshopper的下载... 10

1.2.2 Grasshopper的安装... 11

1.3 打开Grasshopper和Grasshopper的
界面... 12

1.3.1 Grasshopper的加载... 12

1.3.2 Grasshopper的界面... 13

1.4 运算器详解... 17

1.4.1 运算器的构成... 17

1.4.2 运算器信息... 17

1.4.3 运算器和参数... 18

1.4.4 运算器图标的显示... 19

1.4.5 运算器的数据管理... 20

本章小结... 22

第2章 Grasshopper初步.... 23

2.1 从点的绘制开始... 24

2.1.1 点的创建... 24

2.1.2 创建滑块运算器... 25

2.1.3 滑块运算器的复制... 26

2.1.4 编辑滑块运算器的属性... 28

2.2 曲线和样条线的绘制... 30

2.2.1 绘制另一个点... 30

2.2.2 创建Line运算器... 31

2.2.3 创建样条线... 31

2.3 数据匹配... 32

2.3.1 如何用两个滑块控制一个
属性... 32

2.3.2 创建Panel运算器... 33

2.3.3 Shortest List运算器... 36

2.3.4 Longest List运算器... 38

2.3.5 Cross Reference运算器... 39

2.4 一个简单的案例——水波纹的制作... 41

本章小结... 44

第3章 功能和控制.... 45

3.1 在表格中创建多重物体... 46

3.1.1 创建系列圆... 46

3.1.2 改变系列圆的起点... 47

3.1.3 显示系列圆的信息... 48

3.1.4 动态改变系列圆的半径... 48

3.2 创建系列直线段... 49

3.2.1 直线的创建... 49

3.2.2 创建系列直线... 50

3.2.3 Range运算器的功用... 51

3.2.4 动态系列线的设置... 53

3.2.5 Addition运算器... 54

3.2.6 设置扭曲效果... 56

3.3 使用数学功能绘制曲线... 57

3.3.1 创建曲线分布顶点... 57

3.3.2 创建正弦曲线... 58

3.4 控制和表格... 59

3.4.1 创建系列圆... 59

3.4.2 圆圈的挤压... 61

3.4.3 设置挤压高度... 62

3.4.4 Item运算器... 62

3.4.5 Cull运算器... 65

3.5 变换操作... 67

3.5.1 Box运算器... 67

3.5.2 Move运算器... 68

3.6 形状图表... 69

3.6.1 Graph运算器... 69

3.6.2 Scale运算器... 71

3.6.3 减法运算器... 72

3.6.4 控制系列Box的外轮廓... 72

本章小结... 74

第4章 在曲面上做造型.... 75

4.1 导入几何体... 76

4.1.1 打开Rhino模型... 76

4.1.2 Surface运算器... 76

4.1.3 显示效果的设置... 77

4.2 次表面细分... 80

4.2.1 细分运算器... 80

4.2.2 细分参数的设置... 80

4.3 扭曲长方体... 81

4.3.1 创建表面长方体... 81

4.3.2 曲面的细分... 82

4.3.3 细分长方体的厚度控制... 83

4.4 变形参照几何体... 84

4.4.1 在Rhino中创建四棱锥... 84

4.4.2 Geometry运算器... 85

4.4.3 Morph运算器... 86

4.5 完成多次变形操作... 87

4.5.1 在Rhino中创建变形参照
对象... 87

4.5.2 拾取多个对象... 88

4.5.3 使用Longest运算器... 89

本章小结... 90

第5章 案例——螺旋塔的建模.... 91

5.1 项目简介... 92

5.1.1 旋转中心简介... 92

5.1.2 横截面的绘制... 93

5.2 扭转楼板的轮廓曲线... 95

5.2.1 转换GH曲线... 95

5.2.2 创建系列轮廓线... 96

5.2.3 创建群组... 96

5.2.4 另一组运算器... 98

5.2.5 加法运算器... 100

5.3 创建核心... 101

5.3.1 挤压中心圆... 101

5.3.2 加法和乘法运算器... 102

5.4 扭转楼板轮廓曲线... 103

5.4.1 在Rhino中创建四棱锥... 103

5.4.2 扭转轴的设置... 104

5.4.3 控制轮廓曲线的扭转... 105

5.4.4 除法运算器... 105

5.4.5 弧度运算器... 106

5.4.6 Range运算器的使用... 107

5.4.7 表达式的运用... 107

5.4.8 移动核心... 109

5.5 设置楼板的厚度... 109

5.5.1 创建4个运算器... 109

5.5.2 运算器的连接... 110

5.6 外立面的生成... 111

5.6.1 放样运算器的运用... 111

5.6.2 Sub List运算器... 113

5.6.3 多个局部的外立面生成... 114

5.7 高效率地使用范围和序列运算器... 116

5.7.1 Integer运算器... 116

5.7.2 整数运算器的连接... 117

5.7.3 删除单独的Dom运算器... 117

5.8 总结和反思... 118

5.8.1 简单的材质设置... 118

5.8.2 遥控参数设置... 121

本章小结... 122

第6章 数据树详解.... 123

6.1 数据树介绍... 124

6.1.1 什么是数据树... 124

6.1.2 数据的行为... 125

6.2 展平、融合与移植... 127

6.2.1 展平数据树... 127

6.2.2 融合数据树... 128

6.2.3 移植数据树... 129

6.3 连接曲线上对应的点... 129

6.3.1 创建曲线... 129

6.3.2 细分曲线... 130

6.3.3 查看顶点数据... 131

6.3.4 Path Mapper运算器... 132

6.3.5 圆圈的复制... 133

6.4 桁架曲面的构建... 134

6.4.1 创建GH曲面... 134

6.4.2 曲面的细分... 135

6.4.3 图层的设置... 135

6.4.4 收集顶点... 136

6.4.5 分支顶点... 137

6.4.6 构建立体网格模型... 139

6.5 制作桁架的另一种方法... 141

6.5.1 GH创建系列圆圈... 142

6.5.2 改变系列圆圈的轮廓... 143

6.5.3 顶点的连线... 145

6.5.4 扭转曲线... 146

6.5.5 双螺旋曲线的构建... 148

6.5.6 构建立体网格... 149

本章小结... 150

第7章 使用Galapagos进行优化
和提升.... 151

7.1 什么是Galapagos. 152

7.1.1 Galapagos概述... 152

7.1.2 关于进化求解程序... 152

7.1.3 Galapagos的运行特点... 153

7.2 一个简单的案例——如何设置
Galapagos. 156

7.2.1 求差值的运算器设置... 156

7.2.2 加载Galapagos. 157

7.2.3 Galapagos的解算... 158

7.3 第二个案例——优化参数达到目标
面积... 160

7.3.1 加载GH场景... 160

7.3.2 楼层面积的设定... 161

7.3.3 解算... 163

本章小结... 165


下篇 案 例 篇


第8章 初始化设置.... 167

8.1 构建初始平面和等分角... 168

8.1.1 搜索框的运用... 168

8.1.2 初始平面的构建... 169

8.1.3 等分角的设置... 170

8.2 初始计算和第二个角度... 172

8.2.1 等分角度的优化... 172

8.2.2 等分120°角... 173

8.3 计算第三个角度... 175

8.3.1 乘法运算器的运用... 175

8.3.2 角度范围的再次调整... 176

8.3.3 SDL曲线运算器... 177

8.4 生成驱动线... 178

8.4.1 旋转平面运算器的使用... 178

8.4.2 在直线上标记顶点... 180

8.4.3 完成全部放射状直线... 181

8.5 完成驱动图解定义... 185

8.5.1 继续添加点... 185

8.5.2 以点为圆心画圆... 186

8.5.3 另一个圆的绘制... 187

8.5.4 二等分圆... 189

8.5.5 设置任意起始角度... 191

8.6 定义摩天大楼参数... 192

8.6.1 楼层的设置... 192

8.6.2 添加网格平面... 193

8.6.3 阵列截面曲线... 194

本章小结... 196

第9章 弧度和扭曲.... 197

9.1 规划几何体和初始弧度... 198

9.1.1 复制Project运算器... 198

9.1.2 点的选择... 199

9.1.3 重命名运算器... 201

9.1.4 绘制弧形... 202

9.2 如何划分数据树... 204

9.2.1 绘制另外3组圆弧... 204

9.2.2 Split运算器的运用... 205

9.2.3 清理数据树... 206

9.3 创建截面弧形... 207

9.3.1 点的生成... 207

9.3.2 清理预览... 209

9.3.3 创建圆弧... 210

9.4 扭曲截面曲线... 213

9.4.1 清理场景... 213

9.4.2 表达式运算器的使用... 215

9.4.3 扭转轮廓曲线... 217

9.5 修改轮廓曲线... 219

9.5.1 准备工作... 219

9.5.2 余弦运算器的使用... 221

9.5.3 圆弧的关联... 224

9.5.4 另一组轮廓的渐变设置... 226

本章小结... 230

第10章 摩天大楼外表面的创建.... 231

10.1 分割弧度并创建底板轮廓... 232

10.1.1 分割运算器的使用... 232

10.1.2 分割另外两组轮廓曲线... 234

10.2 改变轮廓曲线的层数... 235

10.2.1 改变一组轮廓的高度... 235

10.2.2 表达式运算器... 236

10.2.3 表达式的输入... 237

10.3 外立面格栅的创建... 239

10.3.1 重命名运算器... 239

10.3.2 格栅化处理轮廓曲线... 240

10.4 独立划分点... 242

10.4.1 清理数据... 242

10.4.2 生成网格... 243

10.4.3 连线的优化... 245

10.5 完成外立面格栅... 247

10.5.1 表达式运算器... 247

10.5.2 另外两组直线的选择... 249

10.6 完成外立面系统和放样表面... 252

10.6.1 创建三组直线之间的点... 252

10.6.2 格栅的创建... 254

10.6.3 一组直线的放样... 256

10.6.4 完成全部外立面的放样... 258

本章小结... 262

第11章 楼板的设计.... 263

11.1 创建楼板... 264

11.1.1 整理文件... 264

11.1.2 收缩轮廓曲线... 265

11.1.3 挤压楼板厚度... 266

11.1.4 修正挤压方向... 268

11.2 完成楼塔并烘焙到Rhino. 270

11.2.1 线条管状化... 270

11.2.2 保存状态... 272

11.2.3 烘焙到Rhino. 274

本章小结... 278




【前言】

前 言

  自从有了计算机以来,设计师们就梦想着实现设计的自动化。到了20世纪60—70年代,计算机开始协助设计师完成复杂的计算,或者绘制规则的工程图纸。但是通过计算机将产品的设计要求和工程师的设计思想,直接变成可用的工程图纸或者数控加工指令,在当时是不可能办到的。

  20世纪80年代初,AutoCAD软件问世,标志着计算机辅助设计大众化时代的到来,到了20世纪90年代中期,随着个人计算机的普及,特别是Windows操作系统的出现,大量原来只能在工作站上运行的计算机辅助设计软件纷纷向PC上移植。1997年,CAD历史上一个重要的版本AutoCAD R14推出,所见即所得的操作方式,可以使没有多少计算机基础的人士快速掌握计算机绘图技术,使计算机辅助设计很快成为行业标准,彻底替代了传统的手工绘图,引领了一次设计方法上的革命。

  进入21世纪,计算机辅助设计继续向智能化、多元化的方向发展。机械和建筑设计的复杂性、多样性和灵活性要求设计自动化必须走参数化的路子。自从以Pro/Engineer(机械)和Revit Building(建筑)等为代表的基于特征造型的参数化设计系统问世以来,在此基础上实现设计的自动化已经变得切实可行。参数化设计技术是计算机辅助设计技术的又一次巨大的飞跃,目前先进的计算机辅助设计软件大部分实现了参数化。

  本书讲解的是参数化设计软件的一枝奇葩——Grasshopper。Grasshopper并非一个独立的软件,而是一款在Rhino环境下运行的采用参数化方式生成模型的插件。不同于Rhino Script,Grasshopper不需要太多任何的程序语言知识,就可以通过一些简单的流程方法达到设计师所想要的模型。

  不同于Pro/Engineer和Revit Building这样用途鲜明的参数化软件,Grasshopper更加全能!无论机械设计、艺术设计还是建筑设计,Grasshopper都游刃有余、运用自如。Grasshopper强大的逻辑建模功能可以在短时间内生产大量结果,并以此进行对比分析,优化设计结果。

  Grasshopper的学习也应当秉承由浅入深、循序渐进的原则,掌握基础操作的同时建立起Grasshopper的基本思维模式。根据笔者多年研究和自身用户的总结,要学好Grasshopper必须把握好以下3个关键环节。

* 熟练掌握数据类型、数据结构和相关运算器。

* 熟练掌握各种建模的运算器。

* 熟练掌握内部编程语言和可以调用的函数。

  其中的条是关键之关键,务必优先掌握。

  本书对基础命令和运算器做了详细的讲解和运用,希望能为学习Grasshopper的读者提供一个入门的基石。

  本书在写作过程中参考了国内外专家高手的一些制作方法,并使用了一些相关图片资料,并尽量地在书中做出了标注,但是由于条件所限,不能一一告知,在此一并表示衷心感谢!

  由于作者水平所限,本书错漏之处在所难免,也恳请国内外专家高手不吝赐教,多多交流沟通。

   编 者



【免费在线读】

第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 系列线的扭曲效果

3.3 使用数学功能绘制曲线

  本节将讲解一个采用数学运算器创建正弦曲线的案例。

3.3.1 创建曲线分布顶点

  在Maths标签面板,将Evaluate(评估)拖动到工作区,创建一个Eval运算器,如图3-28所示。该运算器用于评估表达式和变量。

图3-28 Evaluate运算器

  再创建一个Range和两个Panel运算器。在一个Panel运算器中输入表达式sin(x),将这个Panel运算器与Eval的F端口相连接。另一个Panel运算器与Eval的r端口相连接。Range的R端口与Eval运算器的x端口相连接,结果如图3-29所示。

图3-29 创建Panel运算器

  创建一个Domain运算器和两个Panel运算器,将Dom的I端口与Range的D端口相连接。将两个Panel运算器设置为10和-10,并分别于Dom的A和B端口相连接,如图3-30所示。

  创建一个Pt运算器,将Range运算器的R端口与Pt的X端口连接起来。Eval的r端口与Pt运算器的Y端口连接起来。视图中将出现一组呈曲线排列的点,如图3-31所示。

图3-30 创建Dom运算器

图3-31 呈曲线排列的点

3.3.2 创建正弦曲线

  在Curve标签面板,拖动Interpolate(t)到工作区,创建一个IntCrv(t)运算器图标。该运算器用于创建与系列点相切的插值曲线,如图3-32所示。

图3-32 Interpolate运算器

  将Pt的右侧端口与IntCrv(t)运算器的V端口相连接,视图中将出现正弦曲线,如图3-33所示。

图3-33 形成正弦曲线

  创建一个Slider运算器,将其取值范围设定为5~100。将其与Range的N端口相连接,如图3-34所示。

图3-34 创建Slider运算器

  拖动滑块可动态改变正弦曲线上的顶点数量,点越多,曲线越光滑,如图3-35所示。

图3-35 动态控制顶点数量

3.4 控制和表格

3.4.1 创建系列圆

  新建GH,在工作区创建3个运算器,分别是Cir、Pt和Series。

  将Pt右侧端口与Cir的P端口相连接。

  将Series右侧的S端口与Pt的X端口相连接,如图3-36所示。

图3-36 Pt运算器的连接

  视图中出现了一串10个圆,如图3-37所示。

图3-37 创建10个圆

  创建两个Panel运算器,分别设置为3和5;将取值为3的运算器与Series的N端口相连接;取值为5的运算器与Series的C端口相连接。视图中出现5个圆,间距为3,如图3-38所示。

图3-38 创建5个圆

3.4.2 圆圈的挤压

  在Surface(表面)标签面板,将Extrude(挤出)运算器拖动到工作区,创建Extr图标。该运算器用于将平面线框挤压形成管状物体。

  在Vector(矢量)标签面板,将Unit Z运算器拖动到工作区,创建Z图标,如图3-39所示。

图3-39 Unit Z运算器

  将Cir运算器的C端口与Extr运算器的B端口相连接。Z运算器的V端口与Extr运算器的D端口相连接,如图3-40所示。

图3-40 Extr运算器的连接

  视图中的5个圆产生了Z轴挤压效果,形成了5个圆管,圆管的高度为1,如图3-41所示。

图3-41 圆圈被挤压出高度



【书摘与插画】

返回顶部