分类: grasshopper

专业解析grasshopper技术

  • 怎么用Grasshopper排列线段并连接成曲线

    怎么用Grasshopper排列线段并连接成曲线

    我们平时用Rhino做幕墙项目的时候经常会遇见断线的问题,有断线的问题就要把线段连接起来,可以一般建筑幕墙优化要处理的线段时候太多,如果是一条条处理的话,肯定是费时费力的,而且效果可能也不太好,这时借助Grasshopper的算法不失为更好的方法了,今天Link带个大家一个简单的算法来应对建筑幕墙优化会遇到的这个问题。

    如果大家感兴趣的话,可以在下方留言,Link以后会经常更新关于建筑幕墙优化方面的问题。


    image-20210328215842951

    如上图有6条线,他们的顺序不是按规律排序的,而且他的绘制方向也各不相同,他们的方向有些向上,有些向下,这样如果要直接连接曲线的话,它们必然是混乱的。

    看下图直接连接的结果,我们可以看到用GrAsshopper连接命令,它们按照混乱的顺序连接成曲线。

     

    image-20210328220150735

    我们如果要得到一条规则的曲线,就要解决以下几个问题:

    1. 按规则排序曲线的顺序
    2. 统一曲线的方向

    我们先来解决第一个问题

    按规则排序曲线的顺序

    在Grasshopper中要排序曲线,说白了就是排列点,排列点一般使用“按曲线排列点顺序”运算器,这个运算可以在犀牛绘制一条曲线穿过点,然后Grasshopper获取这条曲线后,就能按照点到线的距离来排序点顺序。

    绘制的曲线,这条曲线不用太精确。

    image-20210328220906868

    获取线段的起点和端点,输入到“沿着曲线排列点顺序”运算器(Sort Along Curve)

    接着把输出的点在按2个一组的数据分开,每组两个点的数据连接成多段线

    image-20210328221717254

    这时候生成的线段应该是按照顺序排列的了,最后把数据拍平连接即可

    image-20210328221852256

    我们在来看看最终的结果,我们可以看到线段是要顺序连接的,下图的结果要注意把【L端口】的参数改为【FALSE】,这样曲线就是开放曲线,而不是闭合曲线

    image-20210328222010091

    我们再来看看完整的数据逻辑,大家如果对Grasshopper还有什么问题的话,可以在下面的评论区提问的。

    image-20210328222250841

  • grasshopper系列教程-布尔运算

    grasshopper系列教程-布尔运算

    今天我们来学习Grasshopper的系列教程,今天要学习的内容是:布尔运算

    布尔运算通常用于实体之间的运算,Rhino软件的布尔运算的原则是曲面必须完全封闭,否则布尔运算有可能会出错。

    Boundary volume:从边界创建闭合的曲面物体

    这个运算器要求输入的物体是能组合成封闭的体块,这些输入的物体可以是几个未拼接的面片,也可以是完整的体块。

    计算机生成了可选文字: 囤80s 0Cloged “、3dscgc创11

    在下图中,我们看到一个方块物体被切了一个角,角的那个位置补了一个三角面,那这个三角面和方块组成的一个封闭的体块。

    计算机生成了可选文字: .3dscg

    Solid difference:布尔运算差集

    熟悉犀牛的同学应该都知道了,这个运算器就是做ab物体之间的减法,a物体会减掉他们共同相交的部分

    计算机生成了可选文字: w.nm_3dscg.com

    在下图当中方块减掉了球体和它相交的共有部分,绿色部分就是最后的结果

    计算机生成了可选文字:

    Solid intersection:布尔运算交集

    计算出两个物体之间相交的部分

    计算机生成了可选文字: 3dscg

    下图是方块和圆球体的相交部分

    计算机生成了可选文字:

    Solid union:布尔运算并集

    两个物体合并生成一个物体

    计算机生成了可选文字: wyw.@dscg.com

    方块和球体合并

    计算机生成了可选文字:

    Split Brep:布尔运算分割

    B物体被C物体分割为多个部分,被分开之后的物体保持封闭的体块

    计算机生成了可选文字: O open Brep 1 Open

    分割物体之后的效果

    计算机生成了可选文字:

    Split Brep Multiple:B物体被多个C物体分割,这个运算器是上一个的复数形式。

    计算机生成了可选文字:

    计算机生成了可选文字: 3dscg

    Trim solid:体块修剪

    修剪和分割是有区别的:

    1. 分割之后物体依然还是实体
    2. 而修剪则不是,物体变为空心的了

    计算机生成了可选文字: nnw/_3dscg.com

    被修剪后的效果,大家可以在下图中看到这个方块,现在已经不是闭合的了。

    计算机生成了可选文字:

    [elementor-template id=”7418″]

  • grasshopper系列教程-曲线的修剪

    grasshopper系列教程-曲线的修剪

    今天我们来学习Grasshopper的系列教程,今天要学习的内容是:曲线的修剪

    休闲曲线可以用曲面来修剪,也可以用曲线来修剪,曲线修剪的话,要求这个物体是一个闭合的曲线。

     

     

     

    Split with Brep:曲线被曲面分割

    Grasshopper运算器右边边的参数分别代表的是:

    1. 输出被曲面分割后的曲线
    2. 输出曲线和曲面的相交点

     

    计算机生成了可选文字: 3dkcg com

    曲线被曲面分割的效果,如下图所示。

    计算机生成了可选文字: .3dscg.

    Split with Breps:曲线被曲面分割的复数形式

    这个和上一个运算器基本上一样,就是曲线被多个物体分割。

    计算机生成了可选文字: I PI Curve  3 Planar Curve  4 Curve  ROS

     

    计算机生成了可选文字: .3dscg

    Trim with Brep:曲线被曲面修剪

    用曲面来修剪曲线,这里要注意的一个点就是,要求这个修剪的曲面是一个封闭的实体,所以大家在下图中我们可以看到下面用于修剪的曲面是加上盖子的。

    Grasshopper运算器右边边的参数分别代表的是:

    1.  曲面内的曲线段
    2. 输出曲面外的曲线段

    计算机生成了可选文字: mw.'_3dscg.com

     

    计算机生成了可选文字: .3dscg

    Trim with Breps:上一个运算器的复数形态

    计算机生成了可选文字:

     

    计算机生成了可选文字:

    Trim with Region:用封闭的曲线修剪曲线

    Grasshopper运算器右边边的参数分别代表的是:分别输出曲线内的曲线段和曲线外的曲线段

    计算机生成了可选文字: wvM_3dscg.com

    在下图中绿色的表示的是曲线内的曲线段

    计算机生成了可选文字:

    Trim with Regions:上一个运算器的复数形态

    计算机生成了可选文字: vmm/_3dscg.com

     

    计算机生成了可选文字:

    [elementor-template id=”7418″]

  • grasshopper系列教程-物体之间的碰撞检测

    grasshopper系列教程-物体之间的碰撞检测

    今天我们来学习Grasshopper的系列教程,今天要学习的内容是:物体之间的碰撞检测

    物体之间的碰撞检测是用于检测物体之间有没有相交,物体检测碰撞在我们做工程施工施工开始阶段,一个很有用的减少施工浪费施工事故的手段,可以在实际实施之前就检测到物体之间的冲突。

    Collision Many|  many:多个物体之间检测碰撞

    Grasshopper运算器右边边的参数分别代表的是:

    1. 输出碰撞的结果,如果碰撞了输出true,否则输出false

    计算机生成了可选文字: nnw/_ädscg.com

    计算机生成了可选文字:

    Collision one|  Many:一个和多个碰撞

    计算机生成了可选文字:

    计算机生成了可选文字:

    [elementor-template id=”7418″]

  • grasshopper系列教程-网格之间的相交

    grasshopper系列教程-网格之间的相交

    今天我们来学习Grasshopper的系列教程,今天要学习的内容是:网格之间的相交

    1592975690.png

    Mesh| Curve:网格曲面和曲线的相交

    Grasshopper运算器右边边的参数分别代表的是:

    1. 网格曲面和曲线的相交点
    2. 相交点所在的曲面网格面片的序列号,这个端口可以让我们知道相交点在网格曲面的位置

    计算机生成了可选文字: 3dscg com

    相交点的效果

    计算机生成了可选文字:

    Mesh| Mesh:网格和网格相交

    最终输入相交后的多段线

    计算机生成了可选文字: '.Wm_3dscg.com

    计算机生成了可选文字:

    [elementor-template id=”7418″]

  • grasshopper系列教程-曲线和曲面之间的相交

    grasshopper系列教程-曲线和曲面之间的相交

    今天我们来学习Grasshopper的系列教程,今天要学习的内容是:曲线和曲面之间的相交.

    曲线和曲面之间的相交能让我们快速的获取他们的相交点和这个点的一些参数,比如点的坐标点在曲面上的法线方向等等。

    Brep|  Brep:曲面和曲面相交

    Grasshopper运算器右边边的参数分别代表的是:输出相交的曲线和点

    计算机生成了可选文字: 3dscgCom

    计算机生成了可选文字:

    Brep|  Curve:多重曲面和曲线相交。

    Grasshopper运算器右边边的参数分别代表的是:输出相交的曲线和点。

    计算机生成了可选文字: 3dscq

    Surface|  Curve:曲面和曲线相交

    Grasshopper运算器右边边的参数分别代表的是:

    1. 在曲面上的曲线,这个案例当中曲线是穿过曲面的,所以这个端口是没有输出在曲面上的曲线
    2. 曲面和曲线的相交点
    3. 相交点的UV值
    4. 相交点在曲面上的法向方向
    5. 相交点在曲线上的位置值
    6. 相交点在曲线上的切线方向

    计算机生成了可选文字: v'3dscg.com

    曲线和曲面相交的效果如下图所示

    计算机生成了可选文字:

    Surface Split:分割曲面

    当曲线被投影到曲面之后,可以使用分割曲面这个运算器,把曲面分割为多个部分。

    这里要注意的是,曲线没有投影到曲面上,其实也是可以分割曲面的,但是会出现一个错误的结果。

    分割曲面之后,我们要用分流运算器或者筛选运算器把曲面分开。

    计算机生成了可选文字: 3dscg.com

    分割曲面后的效果。

    计算机生成了可选文字: w.3ds

    [elementor-template id=”7418″]

  • grasshopper系列教程-曲线之间的相交

    grasshopper系列教程-曲线之间的相交

    今天我们来学习Grasshopper的系列教程,今天要学习的内容是:曲线之间的相交

    以下的几个运算器就是用于计算曲线与曲线相交,曲线自己相交,或者多条曲线互相相交。

    Curve| Curve:曲线和曲线相交

    输入两条曲线计算其相交点,和计算相交点在ab曲线上的位置值。

    计算机生成了可选文字: 3dscgc011

    曲线与曲线相交的效果

    Curve| Self:曲线和自己相交

    计算机生成了可选文字: W%%'3dScgcom

    计算机生成了可选文字: 3dscg

    Multiple Curves:多条曲线相交

    Grasshopper运算器右边边的参数分别代表的是:

    1. 输出相交的点
    2. 输出和第1条曲线相交的序列号
    3. 输出和第2条曲线相交的序列号
    4. 输出和第1条曲线相交的点的位置值
    5. 输出和第2条曲线相交的点的位置值

    [elementor-template id=”7418″]

  • grasshopper系列教程-射线和物体的相交

    grasshopper系列教程-射线和物体的相交

    今天我们来学习Grasshopper的系列教程,今天要学习的内容是:射线和物体的相交

    本节课的射线是指已知一个往不同方向发出生成的直线

     

     

     

    IsoVist:射线和物体相交

    Grasshopper运算器左边的参数分别代表的是:

    1. 射线的中心点
    2. 射线发出的方向的数量
    3. 射线的长度
    4. 和射线计算碰撞的物体

    Grasshopper运算器左边的参数分别代表的是:

    1. 输出射线的终点,在射线的方向上如果碰到的物体,那么这个终点就会落在物体上
    2. 射线的起点和终点的距离
    3. 判断射线是否和物体相交,如果是相交的,那么这个值输出0,不相交输出-1。

    计算机生成了可选文字: nn.AM-3dscg.com

    射线和物体碰撞的效果

    计算机生成了可选文字: cgCO

    IsoVistRay:计算射线和物体相交,这个运算器和上一个基本类似,大家参考下面的算法来理解这个运算器。

     

    计算机生成了可选文字: Cgcom

    [elementor-template id=”7418″]

  • grasshopper系列教程-物体和平面的相交

    grasshopper系列教程-物体和平面的相交

    今天我们来学习Grasshopper的系列教程,今天要学习的内容是:物体和平面的相交

    物体和平面的相交也是我们常用的计算相交线的方法,其中最最常用的是制作等高线,制作等高线,我们不但可以做地形上的等高线,也可以做建筑的楼层线,建筑外墙玻璃的分隔线这些都可以用等高线来制作。

    注意事项:这节课案例中的平面并不是指平面曲面,而是一个无限大的参考平面

    Brep| Plane:物体和平面相交

    Grasshopper运算器右边边的参数分别代表的是:

    1. 输出相交线
    2. 输出相交点

    计算机生成了可选文字: .3dscg u com

    Contour:按照指定的方向生成等高线

    Grasshopper运算器左边的参数分别代表的是:

    1. 制作等高线的物体
    2. 等高线的起点参考平面
      • 一般来说我们制作建筑的楼层线,等高线的起点就是±0坐标。
    3. 等高线的方向
      • 等高线的方向可以用一条直线来表示
      • 也可以输入坐标方向
    4. 等高线的间距
      • 这个运算器的间距值只能输入一个,如果输入多个值会生成错乱的等高线

    计算机生成了可选文字: 00.2 cg_ m

    等高线的效果请看下图

    Contour (ex):等高线加强版

    这个等高线的运算器是上一个等高线运算器的加强版,上一个运算器中间距只能输入一个值,而这个是可以输入多个值的,这样的话我们就可以完成一些非均匀划分的效果了,比如玻璃幕墙上面的划分,或者高层建筑防火层的区间划分这些类似的情况。

    Grasshopper运算器左边的参数分别代表的是:

    1. 绘制等高线的物体。
    2. 等高线的起点平面
    3. 等高线的楼层高度
      • 这个端口输入的是一个等差数列
      • 楼层高度指的是每个楼层线的高度
      • 它是一个绝对值,比如输入0.5、1.0、1.5、2.0这类间距相等的数字。
    4. 等高线的楼层间距
      • 这个楼层间距可以输入多个值
      • 每个值表示一个楼层的间距
      • 如果我们要做建筑高层楼层线的话,一般会采用这个端口输入的数据
      • 因为它可以指定每个楼层不同的高度,比如群楼的高度或者防火墙的高度
      • 3和4这两个端口是2选1的,如果用了3号端口,那4号端口一般就不需要输入数据
      • 因为这两个端口采用了两种不同的算法,我们使用时候只要选一个就可以了

    计算机生成了可选文字: TWO ROC 002 0 04 002 004 3ds ca

    两种等高线算法产生的不同效果,左边是采用指定楼层高度的做法,右边是使用等差数列的算法

    计算机生成了可选文字: 3dscg com

    Curve | Plane:曲线和平面的相交

    Grasshopper运算器右边边的参数分别代表的是:

    1. 输出平面和曲线相交的点,这个点会出现在曲线上
    2. 相交的点,在曲线上的位置值
    3. 相交的点在平面上的UV值

    曲线和平面相交的效果

    Line|Plane:直线和平面相交

    这个运算器和上面的运算器是类似的,这里不多加讲述了。

    计算机生成了可选文字: 3dscg com

    Mesh| Plane:网格和平面的相交

    最终输出网格和平面的相交线

    计算机生成了可选文字: 3dscg com

    网格和平面相交线的效果请看下图。

    Plane| Plane:平面和平面相交

    如果两个平面是互成夹角的话,最终会输出一个直线

    计算机生成了可选文字: 3dscg.com

    Plane|Plane| Plane:三个平面相交

    Grasshopper运算器右边边的参数分别代表的是:

    1. 三个平面相交的点
    2. Ab平面相交的线
    3. Ac平面相交的线
    4. Bc平面相交的线

    Plane Region:平面区域

    [elementor-template id=”7418″]

  • grasshopper系列教程-直线和各种物体的相交

    grasshopper系列教程-直线和各种物体的相交

    今天我们来学习Grasshopper的系列教程,今天要学习的内容是:直线和各种物体的相交

    计算直线和物体的相交,可以让我们快速的得到直线和物体的相交点和这个点在物体上的位置关系。

    Brep/Line:多重曲面和直线相交

    多重曲面和直线相交之后,我们会得到直线和多重曲面的相交点

    计算机生成了可选文字: 叭3dscg.com

    Curve / line:曲线和直线相交

    Grasshopper运算器右边边的参数分别代表的是:

    1. 曲线和直线相交之后的相交点
    2. 相交点在直线上的位置值
    3. 相交点的数量值

    计算机生成了可选文字: 3dscq

    曲线和直线相交的效果,请看下图。

    Line/ Line:直线和直线相交

    Grasshopper运算器右边边的参数分别代表的是:

    1. 相交点在a线段的位置值
    2. 相交点在b线段的位置值
    3. 在a线段的相交点
    4. 在b线段的相交点

    计算机生成了可选文字: \叭叭N,'3dscg.com

    Mesh/ Ray:网格和射线相交

    所谓的射线就是已知起点和方向的直线,这个运算器用于计算射线和网格之间的相交点。

    Grasshopper运算器左边的参数分别代表的是:

    1. 输入网格曲面
    2. 输入射线的起点
    3. 输入射线的方向,这个方向我们可以用直线来表达就行了

     

    <img title="1590562397.png" src="https://ww1.3dscg.com/img/2021/20211590562397.png" alt="计算机生成了可选文字: 0" 3dscgcom" />

     

    Surface / Line:曲面和直线相交

    Grasshopper运算器右边边的参数分别代表的是:

    1. 相交重叠的曲线,这个案例并没有相交重叠的曲线,因为这个曲面是一个圆球,而我们是直线穿过圆球,而不会有相对相交重叠的曲线的,如果是直线穿过一个平面,而且这个直线在平面内的话,那是有相交的曲线的。
    2. 曲面和直线的相交点
    3. 相交点的UV值
    4. 相交点在曲面上的法向方向

    计算机生成了可选文字: \叭叭N,'3dscg.com

    [elementor-template id="7418"]