分类: grasshopper

专业解析grasshopper技术

  • 20根据图片生成多边形空洞纹理

    20根据图片生成多边形空洞纹理

    纹理特色


    • 正方形矩阵排列
    • 每一个点赋予正多边形
    • 正多边形半径随着载入的图片变化其半径大小
    • 可以自由调节正多边形的旋转方向

    算法步骤


    • 1️⃣ 用square运算器制作正方形点阵
    • 2️⃣ 导入背景图并输出灰阶值
    • 3️⃣ 灰阶值作为半径值输入给多边形
    • 4️⃣ 调整多边形的角度参数
    • 5️⃣ 生成网格曲面实体

    详细步骤


    1️⃣ 用square运算器制作正方形点阵

    正方形点阵算法用的时Square运算器,这次算法是主要是限定了图片的长宽比例,比如本案例中图片的长800,宽600的纵向3:4的比例,因此用已知的长度去除以网格横向的数量,得到格子的尺寸大小,再把这个尺寸载入到Square的Size端口,这样就可以了。

    等到网格之后,用Polygon Center运算器计算出格子的中心点,这里有个点药说明的是,本次案例涉及的点面数较多,计算图形的中心用Polygon Center会好用点,它的计算比Area运算器更快。

    Grasshopper算法如下图

    2️⃣ 导入背景图并输出灰阶值。

    导入背景图用运算器是图像采样器(Image Sampler)
    双击图像采用其进入采样器内部选择图片的地址,设置采样器的输出通道,在下图所示

    1. 导入图片地址
    2. 设置最大点阵的最大范围,注意的是这里的最大范围数据一定要跟上个步骤的图片长宽一致,这样图片才能完美的覆盖点阵
    3. 选择输出颜色通道为灰阶

    3️⃣ 灰阶值作为半径值输入给多边形

    灰阶值输出的时候是0-1之间的浮点数(小数),直接给多边形的话,多边形半径会显得很小,比例非常不合适,因此给灰阶值做数值映射。

    首先把灰阶值映射成1-0的数值,这只要是原本0-1的值会让输出的结果导致生成的图片有一种“负片”的效果,所以把图片的值翻转过来。

    第二是放大灰阶值,这里采用的方式乘以二分之一网格边长的方式,这样多边形半径则被限定在单位网格之内。

    第三是要再乘以一个缩放系数,这样可以后续可以变化网格点大小,不至于完全限定死参数。

    4️⃣ 调整多边形的角度参数

    最后还得调整多边形的参数,因为多边不是圆形,直接输出的多边形有可能是横着摆放或者斜着摆放,这样就得对参数进行校正,以达到设计的目的,不过这里没有对角度校正做完全的参数化设置,如果需要修改角度,需要自行计算其旋转的角度。

     

    5️⃣ 生成网格曲面实体

    如需要输出点阵着色图案,那就生成网格曲面实体。

     

    Grasshopper算法电池图下面购买下载

  • Brep Plane 计算物体和平面相交

    Brep Plane 计算物体和平面相交

    运算器作用:

    计算一个 Brep 和一个平面之间的相交事件(也称为截面)。该运算器可以生成截面曲线和截面点,用于分析几何体的截面特性。

    输入参数:

    B (Brep):
    基础 Brep:需要与平面进行相交计算的基础几何体。

    P (Plane):
    截面平面:用于与 Brep 相交的平面。

    输出参数:

    C (Curve):
    截面曲线:由 Brep 和平面相交生成的曲线。

    P (Point):
    截面点:由 Brep 和平面相交生成的点。

    应用范围:

    1. 建筑模型的截面分析
      输入:一个建筑模型的 Brep 和一个水平平面
      输出:建筑模型的水平截面曲线,用于分析楼层布局。

    2. 机械零件的加工路径
      输入:一个机械零件的 Brep 和一个垂直平面
      输出:零件的垂直截面曲线,用于生成加工路径。

    3. 复杂几何体的形状研究
      输入:一个复杂的自由曲面 Brep 和多个平行平面
      输出:一系列截面曲线,用于研究几何体的形状变化。

    通过该运算器,设计师和工程师可以高效地分析和操作几何体的截面特性,满足多种设计和工程需求。

  • Flip Curve 翻转曲线方向

    Flip Curve 翻转曲线方向

    运算器作用:

    该运算器用于通过可选的参考曲线翻转目标曲线的方向。如果目标曲线中超过 50% 的方向与参考曲线的方向相反,则目标曲线会被翻转,并将“翻转操作”设置为 True。如果未提供参考曲线,则目标曲线始终会被翻转。

    输入参数:

    C (Curve) 端口:

    曲线:需要翻转方向的目标曲线。

    G (Curve) 端口:

    参考曲线:可选的参考曲线,用于判断目标曲线是否需要翻转。

    输出参数:

    C (Curve) 端口:

    翻转曲线:经过翻转操作后生成的曲线。

    F (Boolean) 端口:

    翻转操作:指示是否执行了翻转操作的布尔值。

    应用范围:

    Flip Curve 运算器在几何建模和参数化设计中具有重要作用。通过翻转曲线方向,可以确保曲线的方向与设计需求一致,特别是在路径规划、曲线匹配和复杂几何形状的构建中。

  • Simplify Curve 简化曲线

    Simplify Curve 简化曲线

    运算器作用:

    该运算器用于简化一条曲线,使其更易于处理,同时尽可能保留其原始形状。通过减少曲线的控制点数量,可以优化计算性能或简化几何形态。

    输入参数:

    C (Curve) 端口:

    曲线:需要进行简化操作的目标曲线。该曲线定义了简化的基础形状。

    t (Number) 端口:

    偏差容差:可选参数,表示允许的最大几何偏差。如果未提供,将使用当前文档的默认容差值。

    a (Number) 端口:

    角度容差:可选参数,表示允许的最大角度偏差(以弧度为单位)。如果未提供,将使用当前文档的默认容差值。

    输出参数:

    C (Curve) 端口:

    简化曲线:表示经过简化操作后生成的曲线。如果输入曲线已经满足简化条件,则输出与输入相同。

    S (Boolean) 端口:

    是否修改:一个布尔值,表示曲线是否被修改。如果曲线被简化,则返回 True;否则返回 False

    应用范围:

    Simplify Curve 运算器在几何建模、数据优化和参数化设计中具有广泛应用。通过对曲线进行简化操作,可以减少控制点数量,优化曲线的复杂度,同时保留其几何特性。设计师可以利用该工具提高计算效率,简化几何形态,或清理导入的几何数据。

    注意事项:

    • 如果输入曲线已经是最简化状态,输出曲线将与输入曲线相同,且布尔值 SFalse
    • 容差值的选择需要根据具体应用场景进行权衡,过大的容差可能会导致几何失真。

    示例:

    假设有一条复杂的曲线 C,我们希望在偏差容差为 0.01 和角度容差为 0.1 的条件下对其进行简化:

    输入:

    • C: 一条复杂的曲线
    • t: 0.01
    • a: 0.1

    输出:

    • C: 简化后的曲线
    • S: True (曲线被简化)

    通过调整 ta 的值,可以控制简化的程度。

  • Offset Curve 偏移曲线

    Offset Curve 偏移曲线

    运算器作用:

    该运算器用于以指定的距离对曲线进行偏移操作。通过输入曲线、偏移距离、参考平面以及角点类型,可以生成偏移后的曲线。

    输入参数:

    C (Curve) 端口:

    曲线:需要进行偏移操作的目标曲线。该曲线定义了偏移的基础形状。

    D (Number) 端口:

    偏移距离:曲线偏移的距离。正值表示向外偏移,负值表示向内偏移。

    P (Plane) 端口:

    参考平面:用于定义偏移操作的平面。偏移操作将在该平面内进行,确保结果曲线与参考平面一致。

    C (Integer) 端口:

    角点类型:用于定义偏移曲线的角点处理方式。可能的值包括:

    • 0 (none): 不处理角点。
    • 1 (sharp): 保持角点为尖锐形状。
    • 2 (round): 将角点处理为圆角。
    • 3 (smooth): 将角点处理为平滑过渡。
    • 4 (chamfer): 将角点处理为斜角。

    输出参数:

    C (Curve) 端口:

    偏移曲线:表示经过偏移操作后生成的曲线。该曲线根据输入参数的设置生成,可能包含平滑或尖锐的角点。

    应用范围:

    Offset Curve 运算器在几何建模、路径规划和参数化设计中具有广泛应用。通过对曲线进行偏移操作,可以生成平行曲线、调整曲线形状或创建复杂的几何图案。设计师可以利用该工具灵活控制偏移距离和角点处理方式,从而满足不同的设计需求。

  • Evaluate Curve 分析曲线

    Evaluate Curve 分析曲线

    运算器作用:

    该运算器用于在指定参数处对曲线进行分析。通过输入曲线和参数值,可以计算出曲线上对应点的坐标、切向量以及曲线在该点的内外角度。

    输入参数:

    C (Curve) 端口:

    曲线:需要进行分析的目标曲线。该曲线定义了参数化范围,运算器将在该范围内进行计算。

    t (Number) 端口:

    参数值:曲线域内的参数值,用于指定曲线上的位置。通过调整参数值,可以在曲线上选择不同的点进行分析。如果勾选Reparameterize选项,则曲线的长度参数会重映射为1,即参数值范围为0到1。

    输出参数:

    P (Point) 端口:

    曲线点:曲线在指定参数值处的点坐标。该点表示曲线在参数值 t 对应位置的空间位置。

    T (Vector) 端口:

    切向量:曲线在指定参数值处的切向量。切向量表示曲线在该点的方向性,常用于计算运动方向或曲线的局部特性。

    A (Number) 端口:

    角度:曲线在指定参数值处的内外角度(以弧度为单位)。该角度表示曲线在该点的进入方向与离开方向之间的夹角,常用于分析曲线的平滑性或转折特性。
    该值等于0表示曲线在该点的进入方向与离开方向相同,如果不为0,则表示曲线在该点有转折。

    应用范围:

    Evaluate Curve 运算器在曲线分析、几何建模和参数化设计中具有广泛应用。通过在曲线上指定参数值,该工具可以精确定位曲线上的点,并提供切向量和角度信息。这些数据对于路径规划、运动分析以及曲线优化设计至关重要。设计师可以利用这些信息评估曲线的局部特性,从而实现更精确的几何控制和设计优化。

  • Weave 数列混合

    Weave 数列混合

    运算器作用:

    该运算器用于按照自定义的模式将一组输入数据交织在一起。该模式由一系列整数索引值构成,这些索引值定义了采集各个输入数据的顺序。通过这种方式,你可以根据设计需求重新排列和混合多个数据流,形成全新的输出序列。
    你可以通过菜单中的 [Input Manager] 添加任意数量的输入流,以适应不同的应用需求。

    输入参数:

    P (Integer) 端口:

    整数:定义编织模式的索引值列表,该列表决定了输入流数据的采集顺序。通过指定不同的索引排列顺序,可以灵活地控制数据混合的方式。

    0 (Generic Data) 端口:

    输入流 0:代表第一个数据流。该流中的数据将按照编织模式参与交织过程。

    1 (Generic Data) 端口:

    输入流 1:代表第二个数据流。类似地,数据将根据编织模式与其他流交织在一起。

    (通过 [Input Manager] 可以添加更多输入流。)

    输出参数:

    W (Generic Data) 端口:

    编织结果:表示经过交织操作后输出的数据流。输出数据按预先定义的模式顺序,将各个输入流中的数据整合到一起,形成一个新的、经过重新排列的序列。

    应用范围:

    Weave 数列混合运算器在数据重组、序列操作和参数化设计等领域具有广泛应用。它能够灵活地将多个数据流按自定义模式混合,适用于数据可视化、图案生成以及复杂逻辑流程的构建。无论是在设计初期对数据进行预处理,还是在后续阶段实现动态数据变化,此运算器都能为设计师提供强大、可定制的数据操作支持。

    • 绘制三条曲线
    • 给曲线做等分点
    • 把等分点混合,做桁架结构的三角形结构
    • 把每条曲线的等分做奇偶数分流
    • 把两条曲线之间的奇偶数分流的数据做混合数据
    • 最后完成的结构线和点变成框架结构

    Pasted image 20250318114015

  • Remap Numbers 数值重映射

    Remap Numbers 数值重映射

    运算器作用:

    该运算器用于将数值重新映射到一个新的数值区间。通过此操作,可以将一个数值从原始区间转换到目标区间,常用于在不同尺度或范围之间进行数据转换。

    输入参数:

    V (Number)

    数值:表示需要重新映射的数值,即将从源区间转换到目标区间的具体数值。

    S (Domain)

    区间:定义源区间,即数值当前所在的数值范围。这个区间确定了数值的原始尺度。

    T (Domain)

    区间:定义目标区间,即希望数值映射到的新数值范围。通过将源区间的数值映射到目标区间,实现数值的重新定位。

    输出参数:

    R (Number)

    数值:表示经过重映射后的数值。该数值在目标区间内重新定义了其位置,反映了从源区间到目标区间的转换结果。

    C (Number)

    数值:表示经过重映射并裁剪后的数值。当输入数值超出源区间时,裁剪操作会将其限制在目标区间的极值范围内,确保输出数值不超出目标区间。

    应用范围:

    数值重映射在Grasshopper中广泛应用于参数化设计和数据处理场景。通过将数值从一个区间映射到另一个区间,设计师可以在不同尺度之间进行数据转换,确保设计元素在不同条件下的适应性和一致性。无论是在调整参数范围,还是在规范化数据输入,此运算器都能提供灵活、精确的数值转换支持。

    算法思路

    • 创建随机点
    • 计算随机点到吸引点的距离
    • 重映射随机点到吸引点的距离到合适的位置
    • 生成运行图像,观察是否合适
    • 使用袋鼠插件计算圆形之间的碰撞,避免模型的交叉
      Pasted image 20250317093850
  • Boolean Toggle 布尔值切换器

    Boolean Toggle 布尔值切换器

    运算器作用:

    布尔值切换器用于在 TrueFalse 之间切换布尔值。
    在Grasshopper中,布尔值可以用 TrueFalse表示,也可以用 10 表示。

    输入参数:

    Initial Value (Boolean):
    这是布尔值切换器的初始值。它可以是 TrueFalse
    初始值: 这是布尔值切换器的初始值。它可以是 TrueFalse

    输出参数:

    Toggled Value (Boolean):
    这是布尔值切换器的输出值。每次切换器被激活时,输出值将在 TrueFalse 之间切换。
    切换后的值: 这是布尔值切换器的输出值。每次切换器被激活时,输出值将在 TrueFalse 之间切换。

    应用范围:

    布尔值在 Grasshopper 中有多种用途,主要用于控制逻辑和条件判断。以下是几个常见的例子:

    控制几何体的显示

    通过布尔值切换器,可以控制某些几何体是否显示在视图中。例如,可以使用布尔值来切换某个对象的可见性。

    查看模型的状态

    比如检查曲线是否是闭合的,布尔值可以用于查看曲线的闭合状态。如果曲线是闭合的,则布尔值为 True;如果曲线不是闭合的,则布尔值为 False

    判断物体是否相交

    布尔值可以判断物体之间是否相交。例如,可以使用布尔值切换器来检查两个几何体是否相交。如果几何体相交,则布尔值为 True;如果几何体不相交,则布尔值为 False

    逻辑运算

    布尔值可以用于逻辑运算,例如与(AND)、或(OR)和非(NOT)运算。可以使用布尔值来组合多个条件,并根据组合结果执行特定操作。

    这些例子展示了布尔值在 Grasshopper 中的广泛应用,通过布尔值切换器,可以方便地控制和管理各种逻辑和条件判断。

    作为列表筛选器

    布尔值切换器可以作为列表筛选器使用。通过将布尔值切换器的输出值连接到列表组件的布尔值参数,可以根据布尔值的状态筛选列表中的元素。

    作为程序运行的开关

    比如袋鼠的程序,布尔值切换器可以作为程序运行的开关使用。通过将布尔值切换器的输出值连接到程序组件的布尔值参数,可以控制程序的运行状态。

  • Rotate Axis 沿轴旋转

    Rotate Axis 沿轴旋转

    运算器作用:

    该运算器用于将一个几何对象绕指定的轴线进行旋转。旋转角度以弧度为单位输入,从而确保数学上精确地计算旋转效果。

    输入端口

    G (Geometry)

    几何对象:表示需要进行旋转操作的基础几何体,可以为点、曲线、面或更复杂的形态。此几何体将围绕指定的轴线完成旋转。

    A (Number)

    数值:以弧度为单位的旋转角度。该数值决定了几何体绕轴旋转时转动的幅度和方向。在A端口的右键菜单勾选“Degree”后转化为角度输入。

    X (Line)

    直线:定义旋转轴,即几何体围绕其旋转的固定直线。该直线决定了旋转的中心位置和旋转方向。

    输出端口

    G (Geometry)

    几何对象:表示经过旋转操作后的几何体。该对象在空间中的位置和方向已根据输入的旋转角度和旋转轴进行了相应调整。

    X (Transform)

    变换数据:返回描述旋转过程的详细变换信息,通常以矩阵形式呈现。此数据记录了旋转操作的全部参数,为进一步的几何处理提供依据。

    应用范围:

    案例:调整乐高小人的四肢和头部的转动

    • 准备好一个乐高的小人模型,乐高小人必须是零部件组合的,不能是合并一体的。
    • 绘制乐高小人的肢体转轴,头部的、肩膀、手掌、大腿的转动中轴线。
    • 使用Rotate Axis 沿轴旋转给每个部位定义各自的转动轴。
    • 设置合理的转动角度。

    实际效果:

    Rotate Axis 沿轴旋转

    Rotate Axis 沿轴旋转