Grasshopper 参数化设计完全指南 (从入门到精通)
Grasshopper 是一款嵌入在 Rhinoceros (犀牛) 3D 建模软件中的可视化编程环境,它让你通过创建图形化算法(而不是手动建模)来生成和控制复杂的几何形态,它被誉为“数字设计的瑞士军刀”,广泛应用于建筑设计、工业设计、珠宝设计、数据分析等领域。

第一部分:核心概念与基础入门
在开始之前,你需要理解几个核心思想。
什么是 Grasshopper?
想象一下,你不是在用鼠标“画”一个东西,而是在“定义”这个东西是如何被“制造”出来的,你给它一堆指令(组件),然后将这些指令连接起来,形成一个流程图,这个流程图就是你的“算法”。
Grasshopper 的核心元素
- 组件: 这是算法的基本构建块,每个组件都像一个功能或一个指令,一个
Panel(面板) 用于输入文字或数字,一个Line(线) 用于画一条线,一个Move(移动) 用于移动物体。 - 参数/连线: 这是组件之间的“电线”,数据从一个组件的输出端口 流出,通过连线流入另一个组件的输入端口,数据沿着这条线传递,驱动整个算法的运行。
- 端口: 每个组件都有输入 和输出 端口,输入端口接收数据,输出端口发送处理后的数据。
- 画布: 你放置、连接和组织组件的空白区域。
- 预览: Grasshopper 的实时渲染窗口,它显示你的算法在三维空间中生成的几何体。
第二部分:界面导航
熟悉 Grasshopper 的界面是第一步。
- 启动: 在 Rhino 中,输入
Grasshopper并回车,会弹出一个独立的窗口。 - 组件面板: 左侧是所有可用组件的分类库,你可以在这里找到所有功能。
- 参数/历史记录: 右侧是你的“定义”区域,所有组件都在这里,顶部有一个小小的时钟图标,这是“历史记录”按钮,点击它可以查看每一步的变化,对于调试至关重要。
- 工具栏: 顶部工具栏有标准功能,如新建、打开、保存、撤销、重做等,还有一个重要的“Preview”按钮,可以开关三维预览窗口。
- 视图窗口: 这是 Rhino 主窗口,显示你的最终模型,当你移动 Grasshopper 中的滑块或修改参数时,这里的模型会实时更新。
第三部分:你的第一个算法:从“画一条线”开始
让我们通过一个简单的例子来感受 Grasshopper 的工作流程。

目标: 创建一条可以动态调整起点和终点的线。
步骤 1: 创建起点和终点
- 在左侧的 Params (参数) 面板中,找到 Geometry (几何体) -> Point (点),双击它,将其拖到画布上。
- 再拖一个 Point 组件到画布上。
- 你有两个代表“点”的参数,但它们还没有具体的位置,我们需要给它们定义坐标。
步骤 2: 定义坐标
- 在左侧的 Params (参数) 面板中,找到 Input (输入) -> Number (数字),双击,拖出两个 Number Slider (数字滑块)。
- 将第一个滑块连接到第一个 Point 组件的
X输入端口。 - 再拖出两个 Number Slider,分别连接到第一个 Point 组件的
Y和Z输入端口,第一个 Point 的位置由这三个滑块控制了。 - 对第二个 Point 组件重复上述操作,给它连接另外三个滑块。
步骤 3: 创建线

- 在左侧的 Math (数学) 面板中,找到 Vector (向量) -> Vector XYZ (XYZ 向量),这个组件可以创建一个基于坐标的向量。
- 将第一个 Point 组件连接到
Vector XYZ组件的Origin (原点)输入端口。 - 将第二个 Point 组件连接到
Vector XYZ组件的XYZ (坐标)输入端口,这个组件现在计算出了从第一个点到第二个点的向量。 - 在左侧的 Curve (曲线) 面板中,找到 Primitive (基本曲线) -> Line (直线)。
- 将
Vector XYZ组件的Result (结果)输出端口连接到Line组件的Start (起点)输入端口。 - 再将
Vector XYZ组件的Vector (向量)输出端口连接到Line组件的Direction (方向)输入端口。 - 将
Vector XYZ组件的Magnitude (长度)输出端口连接到Line组件的Length (长度)输入端口。
步骤 4: 查看结果
- 你的画布上应该有一条线,点击 Rhino 窗口,你应该能看到这条线。
- 恭喜! 你刚刚创建了一个算法,试着拖动任意一个数字滑块,你会发现 Rhino 中的线会实时改变!这就是参数化设计的核心魅力。
第四部分:核心数据类型
Grasshopper 中的数据是有类型的,连接错误时会变成橙色或红色。
- Numbers (数字): 整数、浮点数,用于尺寸、角度、数量等。
- Points (点): 三维空间中的坐标。
- Vectors (向量): 有方向和大小的量,常用于移动、旋转。
- Curves (曲线): 直线、圆弧、样条线等。
- Surfaces (曲面): NURBS 曲面、平面等。
- Breps/Brep Solids (实体): 完整的三维实体。
- Lists (列表): 一组相同类型的数据,多个点组成的列表。
- Trees (数据树): 更复杂的列表结构,可以处理层级数据,非常重要。
第五部分:学习路径与进阶
几何操作 (基础建模)
这是掌握 Grasshopper 的第一步,目标是能用它完成 Rhino 中大部分的建模工作。
-
关键组件:
Panel(面板): 用于输入文本、记录笔记、查看数据。Number Slider(数字滑块): 最常用的交互控件。Point(点): 几何的基石。Line(直线),Circle(圆),Rectangle(矩形): 基本几何体。Vector(向量):Unit Vector(单位向量),Vector Display(向量显示)。Transform(变换):Move(移动),Rotate(旋转),Scale(缩放),Orient(定向)。Curve(曲线):Polyline(多段线),Interpolate(插值曲线),Divide Curve(分割曲线),Curve Parameter(曲线参数)。Surface(曲面):Plane(平面),Extrude(挤出),Loft(放样),Boundary Surfaces(边界曲面)。List(列表):List Item(列表项),Cull Pattern(筛选模式),Reverse(反转),Shift List(偏移列表)。
-
练习建议:
- 参数化楼梯: 用
Divide Curve在一条线上等分,然后用Line和Extrude生成台阶。 - 参数化栏杆: 在一条路径上生成一系列间距和大小可变的栏杆。
- 参数化表皮: 用
Grid(网格) 组件生成点阵,然后用Pipe(管道) 组件包裹成管状表皮。
- 参数化楼梯: 用
数据结构与逻辑 (算法思维)
这是从“会用”到“精通”的飞跃,理解如何处理和组织数据是解决复杂问题的关键。
-
关键组件:
Panel+Panel(查看数据结构): 将组件的输出连接到一个Panel,右键点击面板,选择 "Tree" 模式,可以清晰地看到数据树的结构。Graft(嫁接): 将列表中的每个元素都变成一个独立的子列表,一个包含3个点的列表,经过Graft后,会变成3个子列表,每个子列表包含1个点。Flatten(扁平化): 将数据树的所有层级压平,变成一个单一的列表。Simplify(简化): 移除数据树中空的分支。Path Mapper(路径映射): 最强大的数据树操作工具,可以自定义修改数据树的结构。Dispatch(分发): 根据一个布尔值列表 (True/False),将输入列表中的元素分成两个组。Cull Pattern(筛选模式): 根据一个 True/False 模式,筛选掉列表中对应的元素。Anemone(插件): 一个实现循环逻辑的必备插件,可以创建Loop(循环) 和Counter(计数器)。
-
练习建议:
- 棋盘格: 用
Grid生成点,然后用Dispatch或Cull Pattern筛选,只保留一部分点,形成棋盘格效果。 - 分形树: 使用
Anemone插件,创建一个递归算法,让树枝不断分叉。 - 数据树操作: 尝试用不同的
Graft,Flatten,Simplify组合,观察它们如何影响一个网格列表的生成结果。
- 棋盘格: 用
高级应用与集成
- 关键组件/插件:
Kangaroo(物理引擎): 用于模拟物理现象,如找形、受压结构、布料模拟等,是生成有机形态的利器。Lunchbox/Honeybee/Butterfly: 面向建筑设计的插件,用于生成幕墙、日照分析、环境模拟等。Dodo(机器学习): 集成 TensorFlow,实现机器学习辅助的生成设计。Weaverbird(网格处理): 强大的网格细分和变形工具。GHPython/GH C#: 内置的脚本组件,可以用 Python 或 C# 编写自定义逻辑,实现 Grasshopper 没有的功能。
第六部分:学习资源与社区
学习 Grasshopper 最好的方式就是看别人怎么做,并动手实践。
-
YouTube 频道 (强烈推荐):
- Grasshopper3D: 官方频道,有大量基础和高级教程。
- Parametric House: 专注于建筑和设计应用,教程非常实用。
- Daniel Piker: Kangaroo 插件的开发者,他的视频展示了物理模拟的强大威力。
- Volatile Prototypes: 由 McNeel (Rhinoceros 开发商) 的员工运营,内容非常前沿和深入。
-
网站与社区:
- Grasshopper3D.com: 官方社区论坛,可以提问、分享作品、下载插件。
- Food4Rhino: 最大的第三方插件库,几乎所有你能想到的插件都在这里。
- McNeel Wiki: 官方的 Grasshopper 文档和参考手册,最权威。
-
书籍:
- 《Architectural Design with Grasshopper》 by Robert Aish, et al.
- 《Computational Design with Grasshopper》 by Rajaa Issa, et al.
总结与建议
- 动手,动手,再动手: 不要只看不练,跟着教程做一遍,然后尝试修改它,看看会发生什么。
- 学会阅读错误: 红线和橙线是你的朋友,它们告诉你哪里出了问题,学会根据错误信息去调试。
- 从简单开始: 不要一上来就想做一个复杂的参数化大楼,从一条线、一个网格开始,逐步增加复杂度。
- 分解问题: 遇到复杂问题时,把它分解成几个小步骤,用 Grasshopper 一步步实现,最后再把它们组合起来。
- 保持好奇心: Grasshopper 的世界非常广阔,总有新的东西可以学,享受探索的乐趣!
祝你学习愉快!欢迎进入参数化设计的精彩世界!
