第一部分:什么是 Grasshopper?一个简单的比喻
想象一下,你是一位厨师。

-
传统的设计软件 (如 Rhino 的手动建模): 就像你亲自切菜、炒菜、调味,你每一步都要亲自动手,做出一个菜(一个模型),如果中途想换个辣椒,或者想多放点盐,你可能需要从头开始,或者非常费力地修改已经做好的部分,这个“菜”是静态的,你已经把它做出来了。
-
Grasshopper (参数化建模): 就像你拥有一个万能的食谱机器人。
- 准备食材: 你把各种食材(辣椒”、“盐”、“牛肉”)放在机器人旁边的架子上,在 Grasshopper 里,这些就是输入数据,比如点、线、曲线、数字等。
- 设定食谱: 你告诉机器人:“取一块牛肉,切成片(组件/组件),撒上盐(参数/数值),用辣椒酱腌制(另一个组件/功能)”,你把这些指令用“管道”(连线)连接起来,形成一个完整的食谱,这个“食谱”就是你的 Grasshopper 定义。
- 启动机器人: 你按下“开始”按钮,机器人就按照你的食谱,自动做出了最终的菜(最终的 3D 模型)。
Grasshopper 的核心优势:
- 非破坏性: 你的模型不是“做”出来的,而是“计算”出来的,你可以随时回到食谱里,把“盐”的量从 5 克 改成 10 克,或者把“牛肉”换成“鸡肉”,机器人会立刻重新计算,做出一道新菜,你的模型是动态的。
- 可视化逻辑: 整个食谱一目了然,逻辑清晰,别人(或者未来的你)很容易看懂你是如何生成这个模型的。
- 处理复杂与重复: 机器人可以轻松处理成千上万个步骤,比如生成一个由成千上万个小单元组成的复杂表皮,这是手动建模无法比拟的。
第二部分:Grasshopper 界面初探
打开 Rhino,然后在命令行输入 Grasshopper 并回车,一个新的窗口会弹出来,这就是 Grasshopper 的界面,它主要由三个部分组成:

-
参数/运算器面板:
- 位于左侧,这里是所有“食材”和“工具”的仓库。
- 它们被分门别类地组织在不同的标签页下,
Params(参数)、Curve(曲线)、Surface(曲面)、Mesh(网格) 等。 - 你可以点击展开,看到里面所有的组件(Components)。
-
画布:
中间最大的区域,这里是你的“工作台”,你在这里摆放组件、连接它们,构建你的“食谱”。
-
预览窗口:
(图片来源网络,侵删)位于右侧,它显示了你当前 Grasshopper 定义在 Rhino 视窗中生成的最终结果,当你修改画布上的逻辑时,预览窗口会实时更新。
第三部分:你的第一个 Grasshopper 定义 - 创建一个简单的阵列
我们的目标是:在 Rhino 中创建一个点,然后在 Grasshopper 中,让它复制出 5 个点,排成一条直线。
步骤 1: 准备“食材” - 创建一个源点
- 在 Rhino 的 Top (顶) 视图中,随便画一个点,你可以使用
Point命令。 - 回到 Grasshopper 界面,在左侧的
Params(参数) 标签页下,找到一个名为Point(点) 的组件。 - 用鼠标左键按住这个
Point组件,拖拽到中间的画布上,然后松开鼠标,现在你的画布上就有一个Point组件了。
步骤 2: 连接“食材”到 Rhino
- 确保你的 Rhino 视窗和 Grasshopper 窗口都能看到。
- 在 Grasshopper 画布上,单击你刚刚创建的
Point组件。 - 回到 Rhino 视窗,单击你刚才手动创建的那个点。
- 你会看到,Grasshopper 画布上的
Point组件变成了橙色,Rhino 中的那个点被“吸附”到了这个组件上,这意味着,Grasshopper 现在知道它的“食材”是这个点了。
步骤 3: 添加“工具” - 数列
我们要复制 5 个点,所以需要一个工具来生成 "0, 1, 2, 3, 4" 这样的数字。
- 在左侧的
Sets(集合) 标签页下,找到一个名为Series(数列) 的组件。 - 将
Series组件拖拽到画布上,放在Point组件的旁边。
步骤 4: 连接“食材”和“工具”
现在我们要告诉 Series 组件,我们要基于哪个点进行复制,以及要复制多少个。
- 将鼠标移动到
Point组件的小圆点上,鼠标会变成一个十字,按住鼠标左键,拖拽一条线到Series组件的输入端 (通常是P或Base Point,代表基点),然后松开。 - 同样地,我们需要告诉
Series要生成多少个数,在Params(参数) 标签页下,找到一个名为Integer(整数) 的组件,把它拖到画布上。 - 双击这个
Integer组件,在弹出的对话框中输入5,然后按回车,这代表我们要生成 5 个数字。 - 将
Integer组件拖拽到Series组件的N(数量) 输入端上。
步骤 5: 执行“指令” - 生成点
- 我们需要告诉
Series组件,要用它生成的数字来做什么,我们想用它来移动点。 - 在
Vector(向量) 标签页下,找到Unit X(X 单位向量) 组件,这个组件会生成一个指向 X 轴正方向的向量。 - 将
Unit X组件拖到画布上。 - 将
Series组件拖拽到Unit X组件的Factor(因子) 输入端上,这意味着,数列中的每个数字 (0, 1, 2, 3, 4) 都会乘以这个 X 方向的单位向量。 - 我们需要一个“移动”的工具,在
Transform(变换) 标签页下,找到Move(移动) 组件。 - 将
Point组件拖拽到Move组件的Geometry(几何体) 输入端。 - 将
Unit X组件拖拽到Move组件的Translation(平移) 输入端。
步骤 6: 查看结果
- 你的画布逻辑应该是这样的:
Point->Move,Series+Unit X->Move。 - 查看 Grasshopper 右侧的 预览窗口,你应该能看到一条由 5 个点组成的直线!恭喜你,你完成了第一个 Grasshopper 定义!
步骤 7: 体验“非破坏性”的魅力
这是最关键的一步,理解 Grasshopper 的核心。
- 回到 Rhino,删除你最开始创建的那个源点。
- 看!Grasshopper 的预览窗口里,那 5 个点也立刻消失了,因为你的“食材”没了,机器人自然做不出菜。
- 在 Rhino 中重新创建一个点,Grasshopper 的预览窗口里,5 个点又立刻重新出现了!
第四部分:核心概念总结
通过上面的例子,你已经接触到了 Grasshopper 的几个核心概念:
- 组件: 每个小方块都是一个组件,它是一个功能或一个数据容器。
Point,Series,Move都是组件。 - 输入/输出: 每个组件都有连接点。输入是接收数据的地方,输出是发送数据的地方,数据从左到右(或从上到下)流动。
- 连线: 连线是数据的“管道”,它将一个组件的输出连接到另一个组件的输入,从而传递信息和指令。
- 数据类型: 数据是有类型的。
Point组件处理的是“点”数据,Integer处理的是“整数”数据,Curve处理的是“曲线”数据,把错误的数据类型连到错误的输入端,组件会变成红色,表示错误。 - 参数: 像
Integer,Point这样的组件,它们本身不执行计算,而是用来存储或提供数据,我们称之为参数。
第五部分:下一步去哪里?
你已经成功入门了!你可以按照以下路径继续探索:
-
熟悉更多基础组件:
- 曲线: 尝试用
Line(线),Circle(圆),Interpolate(插值曲线) 等组件创建更复杂的曲线。 - 几何体: 尝试用
Rectangle(矩形),Box(立方体) 等。 - 数学: 尝试用
Math(数学) 标签页下的组件,Add(加法),Multiply(乘法),Function(函数) 来控制尺寸和数量。
- 曲线: 尝试用
-
学习核心数据结构 - 列表:
- 这是最重要也最容易被初学者忽略的概念,当你把一个点连接到多个线上时,会发生什么?是点移动到所有线上,还是线都移动到点上?这涉及到数据匹配,理解
Graft(分叉),Flatten(压平),Partition List(分割列表) 等组件至关重要。
- 这是最重要也最容易被初学者忽略的概念,当你把一个点连接到多个线上时,会发生什么?是点移动到所有线上,还是线都移动到点上?这涉及到数据匹配,理解
-
学习条件逻辑:
- 尝试使用
Panel(面板) 和Equality(等于) 组件,结合Conditional(条件) 组件,实现“..就...”的逻辑,如果某个长度大于 10,就创建一个圆,否则就创建一个正方形。
- 尝试使用
-
探索曲面和网格:
- 学习
Loft(放样),Extrude(挤出),Pipe(管) 等曲面操作。 - 了解
Quad Panels(四边面板),Voronoi(泰森多边形) 等强大的网格生成工具。
- 学习
-
寻找灵感与学习资源:
- Grasshopper Primer: 官方出品的免费电子书,是系统学习的最佳资料。
- YouTube: 搜索 "Grasshopper for Beginners", "Grasshopper Tutorial" 等关键词,有无数优秀的视频教程。
- Grasshopper3D 论坛: 官方论坛,可以提问和查看别人的问题。
- Instagram/Behance: 关注一些参数化设计师,看他们的作品和过程,激发灵感。
最后的小建议:
- 不要怕犯错: 红色的错误提示是你的朋友,它会告诉你哪里出了问题。
- 多看多想: 看到别人的酷炫作品,不要只觉得“哇,好厉害”,而是要去想“他可能是用哪些组件组合实现的?”
- 从简单开始: 先用最基础的组件实现一个小目标,再逐步叠加复杂的功能。
欢迎来到参数化设计的奇妙世界!祝你玩得开心!
