分类: grasshopper

专业解析grasshopper技术

  • Origin 定位

    Origin 定位

    运算器作用:

    该组件用于对一个几何对象进行重新定向变换,其过程有时被称为“基变换”(ChangeBasis Transformation)。这一操作本质上是将一个物体从原始坐标系统映射到一个新的目标坐标系统,从而改变其方向和位置。通过这种变换,设计师能够精确控制对象在不同参考平面之间的对齐、旋转、平移乃至缩放等属性,满足复杂几何布局与空间组织的需求。

    输入端口:

    G (Geometry)

    几何对象:表示需要进行变换的基础几何体,可以是点、曲线、面或更复杂的几何形状。该参数决定了变换操作作用的具体对象。

    A (Plane)

    平面:指定原始的参考平面,即对象当前所在的坐标系统。这个平面定义了几何体的原始方向和定位,是变换操作的起点。

    B (Plane)

    平面:指定目标参考平面,即希望对象转换到的坐标系统。通过将原始平面A的坐标系映射到目标平面B,实现对象的重新定向和定位。

    输出端口:

    G (Geometry)

    几何对象:表示经过定向变换后的几何体。新生成的对象在目标平面B内重新定义了其位置、方向以及其他相关的几何属性,实现了从原始状态到目标状态的无缝过渡。

    X (Transform)

    变换数据:返回详细的变换信息,通常以矩阵形式呈现。该数据记录了从初始平面到目标平面之间所有变化的参数,包括旋转、平移以及可能的缩放,为进一步的分析和变换的重复应用提供依据。

    应用范围:

    案例:把圆筒分切成片,再把切片展平到平面上,最后一一摆放到格子内。

    Origin 定位

    • 用Isotrim运算器用结构线把曲面分成相等的部分。
    • 接着用Squish运算器把曲面展平,展平的曲面会在坐标原点的位置。(Squish需要额外安装插件)
    • 用Orient把原点上的展平面定位到正方形网格中心点的位置。

    Origin 定位

  • Dimensions 分解曲面UV

    Dimensions 分解曲面UV

    运算器作用:

    Dimensions这运算是用于展开曲面的UV数值。
    在 Rhino(犀牛)软件中,曲面的 UV 数值是用于描述曲面上点的位置的二维参数坐标系统,类似于平面上的笛卡尔坐标(x, y),但它是专门针对三维曲面上的点进行定位的。就像地球表面的经纬度一样,经纬度是用来确定地球上任意一点位置的坐标系统。UV 坐标对于曲面来说,起到了类似的作用,只不过它是在三维曲面这个 “特殊星球” 上使用的定位方式。

    输入参数:

    S (Surface) 端口:

    输入需要计算UV值的曲面,如果在这个端口上勾选Reparameterize参数,则会把输出的UV值重映射为0到1的区间值。

    输出参数:

    U (Number) 端口:

    输出U方向的值。

    V (Number) 端口:

    输出V方向的值。

    应用范围

    Surface Closest Point 运算器在曲面分析、几何优化、碰撞检测以及参数化设计中都有广泛应用。通过精确计算采样点与表面之间的最短距离,该工具帮助设计师评估曲面质量、检测异常形态,并实现复杂几何形体的精确控制。其输出的 坐标更是为后续的建模、纹理映射以及精细加工提供了关键的数据支持,从而提高了设计与制造流程的整体效率和精度。

  • Move 移动物体

    Move 移动物体

    运算器作用:

    Move 运算器的核心功能是将输入的几何对象沿着指定的向量方向进行平移,从而改变其在三维空间中的位置。这里的几何对象可以是点、线、面、体等各种 Rhino 支持的几何类型。

    输入端口:

    G端口:

    输入几何物体,在Grasshopper中几何物体包含:点、线、面、体块、网格曲面、细分曲面等物件类型。

    T端口:

    输入向量类型的数据,也可以输入直线的物体充当移动的方向。

    输出端口:

    G端口:

    输出几何物体,在Grasshopper中几何物体包含:点、线、面、体块、网格曲面、细分曲面等物件类型。

    X端口:

    输出物体移动的位移数据。输出的位移数据可以输入到其他的物体上,这样两个物体可以做相同的移动操作。

    应用范围:

    案例1:
    Move 移动物体

    案例2:T端口连接多个数值,可以当做复制物体使用,在Grasshopper中是没有纯粹意义的复制功能的,任何一个运算器接入多个数据,那就可以达到复制的目的。
    Move 移动物体

  • Bezier Span 贝塞尔曲线

    Bezier Span 贝塞尔曲线

    运算器作用:

    Grasshopper 的 Bezier Span 组件用于创建贝塞尔曲线(Bezier Curve)的一段,即由控制点定义的一条平滑曲线。它基于贝塞尔插值方法,通过给定的控制点来生成曲线,适用于自由曲线建模、造型控制等场景。

    输入参数:

    A端口:

    输入贝塞尔曲线的起点A。

    At端口:

    贝塞尔曲线的起点A的切线方向,切向方向的大小会影响贝塞尔曲线的造型。

    B端口:

    输入贝塞尔曲线的起点B。

    Bt端口:

    贝塞尔曲线的起点A的切线方向,切向方向的大小会影响贝塞尔曲线的造型。

    输出参数:

    C端口:

    输出贝塞尔曲线数据

    L端口:

    贝塞尔曲线的曲线长度

    D端口:

    输出贝塞尔曲线的区间值。区间值一般是0 to 1.0

    应用范围:

    案例1

    Pasted image 20250306164534

    案例2

    Pasted image 20250306164553

  • Dispatch 数据分流

    Dispatch 数据分流

    运算器作用:

    “Dispatch” 运算器的核心功能是依据输入的索引列表,将输入的数据列表进行分流。它可以把一个数据列表按照指定的规则分配到多个输出分支,从而实现对数据的分类和筛选。

    输入端口:

    L端口:

    用于接收需要进行分流处理的数据列表,列表中的元素可以是数字、点、曲线、向量等各种类型的数据。

    P端口:

    这个端口输入布尔值列表,布尔值通常为“Ture”和“False”,也可以用非0的数和0来替代,布尔值列表用作分流数据的依据,布尔值=Ture时,数据分流到A端口,布尔值=False时,数据分流到B端口。

    例如一个列表数据为:“00Apple 01Banana 02Cherry 03Date 04Elderberry 05Fig 06Grape 07Honeydew 08Kiwi 09Lemon”,当输入P端口的规则为“Ture False”时,输入的A端口数据为:“00Apple 02Cherry 04Elderberry 06Grape 08Kiwi”,输入的A端口数据为:“01Banana 03Date 05Fig 07Honeydew 09Lemon”

    输出端口

    A端口:

    用于接收布尔值=Ture时的数据。

    B端口:

    用于接收布尔值=False时的数据。

    应用范围:

    案例1:获取曲面
    List Item 列表筛选

    案例2:获取列表中的某一个数字
    List Item 列表筛选

  • List Item 列表筛选

    List Item 列表筛选

    运算器作用:

    从列表中提取单个元素是 “List Item” 组件最基础的功能。在 Grasshopper 里,许多数据都是以列表形式存在的,这些列表可能包含数字、点、向量、曲线等各种类型的数据。借助 “List Item” 组件,你能够依据索引值从列表里选取特定的元素。

    输入端口:

    L端口:

    输入数据列表,这个数据列表可以是任何数据类型,例如数值列表、点列表、曲线列表等等,几乎什么都能包含在内。

    i端口:

    输入要选择到的序号,序号类型为整数,列表的序号是从0开始计算起的。比如输入0则选择了列表第一项,输入8则选择了列表的第9项。

    W端口:

    是否包含列表的边界,这是个一个布尔值,默认值为“Ture”,这个表示列表是无限循环没有边界,如果输入的列表长度是10个数据,当i=16时,可以获取循环一周后的第6个数据。不想数据是无限循环的,可以把这个数据修改成“False”。

    输出端口

    i端口:

    输出数据列表,这个数据列表可以是任何数据类型,例如数值列表、点列表、曲线列表等等,几乎什么都能包含在内。

    应用范围:

    案例1:获取曲面
    List Item 列表筛选

    案例2:获取列表中的某一个数字
    List Item 列表筛选

  • 如何在Grasshopper中获取随机的点

    如何在批量的获取曲线上的随机点呢??
    获取随机点的原理是给曲线输入t值,输出t值所在的点。如下图所示:

    关于t值:
    在 Grasshopper 的 Evaluate Curve(曲线求值)组件中,t 值是曲线参数化的一个重要概念。t 值可以看作是曲线上点的位置参数,它的取值范围通常是从 0 到 1。对于一条曲线,当 t = 0 时,表示曲线的起点;当 t = 1 时,表示曲线的终点。例如,对于一条简单的直线段,t 值从 0 逐渐增加到 1 的过程,就像是一个点从直线的起点沿着直线移动到终点。

    在上述当中曲线必须重新参数化后t值才能取值0~1,否则取值区间为曲线的长度。下图的C端口左边那个小图标即为曲线重参数化,打上这个标记后曲线的区间被定义为0~1之间。

    点的定位:通过指定不同的 t 值,可以在曲线上精确定位点。例如,在建筑设计中,如果曲线代表建筑的轮廓线,通过改变 t 值可以获取轮廓线上不同位置的点,用于确定建筑外立面装饰构件的安装位置等。

    在Grasshopper中以下这些运算器均可以获取t值

  • 如何用Grasshopper做贴合曲面的框架

    有个群友问怎么样才能做出贴合曲面的框架,而且这个框架还得做圆角的造型。

    先看看我给出的结果,我用Rhino大概搭建了个曲面,然后在曲面的顶视图绘制了一条做骨架的中轴定位线。

    上图中:1曲面,2骨架中轴线,3骨架框架,4框架上倒圆角。

    针对这样问题,解决的方法思路

    1. 1️⃣在犀牛中绘制一条曲线作为骨架的中轴定位线。
    2. 2️⃣用Grasshopper计算出这条中轴线的等分点的垂直平面(Perp Frames)。分解垂直平面,并且在垂直平面绘制直线,直线的方向为垂直平面的X轴向。
    3. 3️⃣挤出绘制的直线,随后和原始曲面做相交线(Brep|Brep)运算,这样就得到曲面上的曲线(这里用投影到曲面也是可以的),用放样的方法生成骨架的平面造型
    4. 4️⃣获取平面的三个边界组合成一段,然后给曲线倒圆角,但是这里要留意的是,倒圆角有可能失败,原因是相交得到的曲线点分布不平均,所以这时我给了它做了重建曲线(Rebuild Curve)的运算,这样就保证倒圆角顺利完成。
    5. 5️⃣最后做曲线和曲面的偏移生成实体框架。

    Grasshopper算法的图解,下面的数字标记对应上文的文字解析。

  • 在Grasshopper中如何生成点

    好多人在使用Grasshopper的时候都不太清楚怎么创建点的数据,今天我就罗列一下几种常用的情况吧。

    1. 1️⃣拾取犀牛上的已知点。
    2. 2️⃣输入点坐标
    3. 3️⃣等分曲线或者曲面
    4. 4️⃣分解曲线、曲面或者网格
    5. 5️⃣用点阵运算器生成规则或不规则点阵
    6. 6️⃣计算物体之间的交点

    [elementor-template id=”23108″]

     

    1️⃣拾取犀牛上的已知点。

    这个方法就很简单的,点都是Rhino上绘制的,只要用Point的右键菜单Set one(Multiple)Point(Points)拾取一个或者多个就行了。

    2️⃣输入点坐标

    输入坐标点一般用Construct Point这个运算器。

    在运算器的X/Y/Z三个坐标值输入一个或者多个数值,便可以生成点

    3️⃣等分曲线或者曲面

    用Divide Curve和Divide Surface等分曲线或曲面后会得到很多点,这些点的间距大都沿着曲线和曲面排列的。

    等分曲线的运算器查阅这篇文章:5.2 Division #1 等分曲线 – 零刻学堂 (3dscg.com)

    4️⃣分解曲线、曲面或者网格

    分解曲线或曲面获取点也是经常使用方法之一,这个方法的好处是可以在原有的物体的基础上获得点数据,而且这些点和原本的物体还存在着位置关系。

    分界点用到工具一般是:Deconstruct Brep,End Points,Area,Point On Curve,End Points,End Points 等等的运算器

    5️⃣用点阵运算器生成规则或不规则点阵

    Grasshopper内置多种点阵运算器用于快速生成点

    详细的查阅这篇文章:4.2 Grid #1 矩阵网格 – 零刻学堂 (3dscg.com)

    6️⃣计算物体之间的交点

    当我们想要的点是从物体之间的交集得到的时候,就要计算物体的相交关系。

    相交点获取方式可以由这几种方式获得:求线和线的交点,求线和曲面的交点,求线和平面的交点、求线和体块的交点。

  • 如何用Grasshopper做螺旋上升的点阵列

    有个群友问这么把点布置在螺旋上升的曲面上的问题。

    针对这样问题,解决的办法有两个

    1. 用犀牛做螺旋上升的曲面,然后在曲面上布置点,点可以随机的也可以是规则的。
    2. 用Grasshopper算法计算出随机点,这个方法必须懂Grasshopper的算法思维,否则不太容易实现。

    这位群友不太懂Grasshopper,我这里给出是思路是用rhino来做曲面,然后用Grasshopper布置随机点,用Grasshopper布置随机点只要用到一个简单运算器就可以了,并不需要什么高深的算法思维。

    双螺旋上升的犀牛曲面做法也有很多种,我这次提供一种思路,方法上也比较容易实现。

    步骤:

    1. 画两条等高的螺旋线Helix
    2. 两条螺旋线放样Loft成曲面
    3. 把曲面展开(CreateUV)生成UV矩形
    4. 在UV矩形内绘制一个多边形
    5. 把UV矩形和多边形拉回(ApplyCrv)到放样的曲面上
    6. 用拉回的曲线去修剪曲面,这样就得到了螺旋上升的曲面了。

    有了螺旋上升的曲面,再用Grasshopper布置点是轻而易举的事情,用Populate Geometry 运算器就可以布置随机的点阵列了,如果要布置规则排列的点阵列,可以用Divide Surface