分类: grasshopper

专业解析grasshopper技术

  • Gasshopper-系列课程-数据结构运算2

    Gasshopper-系列课程-数据结构运算2

    今天我们继续去讲解grasshopper数据结构的内容。

    www.3dscg.com

    Match Tree:匹配树形数据的路径,这个运算器跟我们之前讲过的那个匹配的运算器是一样的。

    在g端口输入要匹配的树形数据。

    езеО • мим зэкрие.щ ЧУМ езеО —

    Shift Patchs:偏移树形数据路径。这个运算器的作用是把树形数据的路径进行移动,移动之后把位数相同的合并起来。

    在下图中我们观察红框内的数据路径,偏移之前红框内路径的前三位是一样的,偏移之后把这些一样的路径合并成一个,这样它路径的位数也相应的减少了一位。

    brarches 16 ко;с;'}

    Splite Tree:分割出其中一段树形数据。这个运算器的作用就是用来提取某一段路径的数据。

    在下图的m端口,我们输入了两个数据的路径,输出的p端口输出这两个路径的数据。

    这里要注意的是,路径的写法一定要符合规则。规则就是用花括号包住编号,路径编号的位数用分号隔开,而且是最后一位不能有分号。

    | 0 ; 0 ; 0 0 0 ; 0 ; 0

    Path Mapper:路径映射器。这个运算允许我们任意的改变数据的结构。如果灵活应用的话,我们将会更加方便的更改数据结构。这个运上去的基础功能和我们之前学过的一些改变数据结构的运算器的作用类似,也有一些重复的类型。

    点击右键设置Mapper的类型

    Mapping Editor... Create Null Mapping Create Flatten Mapping Create Graft Mapping Create Trim Mapping Create Reverse Mapping Create Renumber Mapping Enabled Help...

    Create Null Mapping:创建一个普通类型。

    Create Flatten Mapping:创建一个拍平数据的映射类型。

    Create Graft Mapping:创建一个分组数据的映射类型。

    Create Trim Mapping:创建一个偏移路径的映射类型

    Create Reverse Mapping:创建一个反转编号的数据类型。

    Create Renumber Mapping:创建一个精简路径编号的数据类型。

    这个运算也有它的高级应用的方式,然后这部分内容我们在后面的是课程再进行展开讲解。

    [elementor-template id=”7418″]

  • Grasshopper系列教程-匹配数据结构

    Grasshopper系列教程-匹配数据结构

    Data With 8 branches 曲 面 等 分 点 数 据 结 构 Data With 8 branc hes 曲 面 分 割 0 2 最 终 输 出 的 2 数 据 结 构 曲 面 等 分 点 www.3dscg.com 零 刻 学 堂 Data With 8 branc N 己 5 囝 参 照 用 的 数 据 结 构 . 3dsc 嘰 C 0 0 〕

    接着我们上节Grasshopper课遗留下来的一个问题。

    我们怎么来理解这么一个运算器?

    这里我再重新重复一下这个运算器的作用:这个运算器的作用就是用来匹配一个作为参考的列表的路径。

    比如说原来的路径是两个0,而我们要把它的路径改为三个0。这样我们除了可以使用之前学过的方法来修改路径之外,我们也可以用一个现成的列表作为参考,然后把这个列表的路径直接搬运过来使用。

    在上图中我标记了三个标注。

    他们分别是:

    1. 原来的数据结构。
    2. 作为参照匹配用的数据结构。
    3. 最终输出的数据结构。

    从上图我们得知2和3的数据结构是完全一样的。通过这么一个简单的操作,我们就能够任意改变数据的结构。

    那么为什么我们要去改变数据的结构呢?

    以我个人的总结,我认为有以下几点原因要去改变数据结构的。

    1. 原始的数据结构过于复杂,过于复杂的数据结构是不利于我们操作数据列表的。
    2. 数据结构精简之后,便于我们做数据的匹配。

    改变匹配的数据结构,我们要注意以下的几个问题。

    1. 数据结构的分组必须一样。
    2. 数据结构每个分组里面的数据数量也必须一样

    好了,以上就是我对这个运算器的理解,

    如果大家有什么问题的话,可以在下方的留言窗口下评论。

    [elementor-template id=”7418″]

  • Grasshopper系列教程-树状数据结构得到操作(拍平和分组)

    Grasshopper系列教程-树状数据结构得到操作(拍平和分组)

    今天讲的grasshopper的内容是非常重要的,我们会分为三期的课程来讲。这一类的运算器是如何处理树状结构数据的。对于数据的处理Grasshopper里面是最为重要的。

    g.com ena _ - 1 10.1

    N端口代表null数据,X端口代表空的数据

    这个运算机的作用主要用来清除,我们在计算中产生一些无效的数据。这个比我们之前学习的那个要筛选之后再来清除,要高效的多。

    把数据列表拍平,这个在glass opera上面是非常常用的,在每个运算器端口点右键有个向下的箭头图标和这个是等效的。

    拍平电池在默认情况下把路径设置为一个0,如果要设置为两个人可以在p端口里面填入两个0。

    计算机生成了可选文字: • ÄeeÅng1e (

    把数据列表变为树状结构,这个操作和拍平是相反的。我们平时把这个运算器也称之为分组数据的运算器,因为它的功能就是把数据进行分组。

    我们要需要glasshopper,一定要注意数据什么时候要分组,什么时候要排停。

    因为用grasshopper做设计,最重要的就是对数据的排列与组合。用电脑计算出来的排列组合来组合出我们设计上的创意。

    om

    删除小数据的分支

    在下图当中,等差数列列表被分为三个一组和两个一组的分组数据,把这个分组数据输入到t端口中,N0和N1分别输入两个数据,如果这两个数据比分组数据的数量更多的话,他就会把这个数据清除掉。

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

    精简树状数据的路径层级。

    在下图当中我们可以看到数据的结构是三层级别的,经过一个精简之后,它只变成了一层。

    With 10 branch— Data with 1m

    这个运算是用来统计树状列表的数据,在下图当中我们可以看到第1个输出端口,输出的是数据的具体内容,第2个参数输出的是每个分组的里面的数据数量,第3个参数是输出分组的数量。

    ο 10

    这个运算器是用来精简数据的路径的。

    下图中我们可以看到它是一个分组数据啊,经过精简之后,我们看到它输出的只有一层的路径级别。

    这样的用法,有点像拍平运算器。

    Data with1branches N = 10 τη

    Unflatten Tree :让数据跟随导入的数据的树状数据结构。

    计算机生成了可选文字: 0a0h的b「引跹h一 WWW.3dg.CO

    这个运算器比较难理解,我们这节课不张开讨论,我在下面贴一个应用的算法,在下一节课我将详细说明它的运算逻辑。

    with 8 branches Data Wlth 8 branches lData Wlth 8 branc

    [elementor-template id=”7418″]

  • Grasshopper系列课程-文本的操作

    Grasshopper系列课程-文本的操作

    ​我们今天来学习Grasshopper的文本编辑的内容。

    文本编辑在设计当中一般被用于材料的标识,编号排列等等。

    文本编辑工具使用侧重点在于对文字的增删改查拼接等操作,这部分操作大都不难,只要认真学习今天这节课的内容就可以很容易掌握了。

    好的那么久开始今天的Grasshopper课程吧。

    计算机生成了可选文字: i t Join T Lengeh Split www.3dscg.conJ

    characters:把字符串分解成单子

    image.png

    concatenate:链接字符

    image.png

    Text Length:计算出文本的长度

    image.png

    Text Join:使用连字符链接文本

    在下图中使用了句点连接了文本。

    image.png

    计算机生成了可选文字: wwvv.3dsc@.com

    Format:文本格式化

    F端口数据序号格,格式规则是按{n}的格式书写,其排列顺序不做要求,0 1端口数据文本数据,T端口输出的按照格式规则排列数数据输出。

    下图中我们可以看到“零刻学堂”被编入{0}的位置里,“跟着Link学参数化”被编入{1}的位置里。

    image.png

    Text Case:转化字符的大小写,U端口输出大写,L端口输出小写字母

    image.png

    ​Text Fragment:截短文本,从第一个字符算起,按设定的数量截短文本,一般用于去掉文本开头一些无效字符

    image.png

    Text Trim:这个也是截短文本,但是只对开头的空格有效,具体看下图文本的变化吧

    image.png

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

    Match Text:匹配文本,如果匹配到输出Ture,否则输出False

    image.png

    Replace:替换文本,替换设定的文本,大家看下的算法吧

    image.png

    Sort Text:按字母顺序重新排列文本

    image.png

    Text Distance:计算两个文本片段之间的Levenshtein距离。

    image.png

    [elementor-template id=”7418″]

  • Grasshopper系列教程-数据列表项目的修改与查找

    Grasshopper系列教程-数据列表项目的修改与查找

    我们这节课学习关于Grasshopper成员搜索的相关知识,这部分知识在我们设计当中并不是特别重要,同学们只要做一些了解就可以了。

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

    Carthesian Product:Ab两个序列按编号分组,要求两个组的数据个数一样。

    image.png

    Disjoint:检测a列表的数据是否在b列表中存在,如果存在输出false,不存在输出true.

    在下图中4已经包含在b列表中了,所以输出了false。

    image.png

    Member Index:计算出项目的编号。

    在下图中我们要计算的项目是3,最终计算出它的编号是1

    image.png

    Replace Member:替换集合中的项目。

    在下图中第1个参数输入列表,第2个才是输入序列号,第3个

    image.png

    SubSet:判断a列表是否包含b列表。

    在下图中a不在这个等差数列之内,所以输出了false。下图第2个等差数列是0~3,这个数量是包含在a数列里面的,所以输出ture

    image.png
    member  Key/vaue search  www.3dsc .corn

    Delete Consecutive:删除列表中类似的项目。

    在下图中的列表有两个a,w值输入ture就把列表中的a给删除掉了。

    image.png

    Find similar member:查找列表类似的成员。

    在下图中要找到的主要是a,说出了结果它的序列号是1。

    image.png

    Key/Value Search :根据数据键值对来搜索。

    在下图中,第1个参数输入列表的序列号,第2个参数输入要搜索的列表,第3个参数输入要搜索的序列号,最终输出该序列号的所对应的参数。

    image.png

    [elementor-template id=”7418″]

  • grasshopper系列文章-集合的运算

    grasshopper系列文章-集合的运算

    这节课我们来学习一下关于集合的Grasshopper的算法。在grasshopper中关于集合的概念的我在前面的几节课已经有提示提及过了,呃,大家可以去到这篇文章里面去看一下,《grasshopper数据结构的几个基础概念》

    计算集合的作用就是找到一些共有的元素或者找到一些有差异性的元素。

    image.png

    Create Set:创建集合,这个基本上用不上的,就算不接这个运算器也可以创建集合,我们来看下面的算法,一个等差数列输入到一个集合的运算器里面之后它输出了又是一个集合。

    image.png

    Set Difference:集合的差集运算。

    在下面的算法中,A的列表和b进行比较,最终输出的列表是减掉b共同拥有的项目。在B列表中和A列表共有的元素是0和1,所以在结果中他们都被减了。

    image.png

    Set Difference(s):集合的差集运算,这个差距运算和上一个不太一样的地方,就是它输出是多个列表的集合。

    我们从下面的算法可以看出来,输出端口输出的值是包含了a和b里面的元素的,列表里面是减掉了共有元素的。

    image.png

    Set Intersection:计算交集。

    在下面的算法中,我们可以看到a和b这两个列表输入到计算交集运算器中,最终输出的值是0和1。

    image.png

    Set Majority:Ab计算交集和c计算并集,最终输出的是ab的交集,加上c。

    在下面算法中,我们看到abb计算出来交集是0和1,c是4,最终结果是0 1 4

    image.png

    ​Set Union:计算列表的并集。

    image.png

    [elementor-template id=”7418″]

  • grasshopper系列教程-数据序列(等差数列,随机数列,斐波那契数列)

    grasshopper系列教程-数据序列(等差数列,随机数列,斐波那契数列)

    我们今天讲的Grasshopper的内容是非常常用的。这些运算器的作用大部分都是修改列表的顺序或者创造一些有序号的列表,比如等差数列,随机数列。

    image.png

    Cull Index:按照序号删除列表中的项目。

    image.png

    我们只要从a端口中输入序号,然后就可以删除指定的项目了。也可以输入多个序号。

    Cull Nth:删除空的项目。根据我们输入的个数,然后用来删除列表中空的项目。

    Cull Pattern:按照输入的规则来删除列表中的项目。这个这个运算器的作用有点类似于dispatch。只是dispatch,它是分为ab两个路的,这个运算器是删除项目后的列表。

    image.png

    Random Reduce:输出随机删除项目后的列表。我们在端口中输入要删除的个数。这个运算器会删除相应的个数而且原来的顺序也会被打乱。

    image.png

    image.png

    Create sequence:创建一个文本字符序列。

    Duplicate Data。复制列表的项目。

    比如说我们项目中需要输出100个1。那么我们在复制的列表中输入1,个数输入100个,这样列表输出的就是100个1了。

    image.png

    在上面的算法中,我们可以看出最后一个端口默认是Ture的,如果是false,他们输出的列表是不一样的,大家可以看一看它们之间的差别。

    Fibonacci:创建斐波那契数列。 斐波那契数列是一系列数字,其中每个值是前两个值的和。 由于前两个值没有设定,因此需要手动设置。 默认系列使用{0,1}或{1,1}作为初始值。

    Range:输出一个等差数列。

    Range的作用是根据我们设定的范围和等份的数量,输出一个等差数列。

    这个电池在我们平时grasshopper的使用中是非常常用的。

    image.png

    Repeat Data:重复数据。这个运算器的作用和Duplicate Data的作用差不多,都是输出重复的数据。

    image.png

    Sequence:生成数字序列,n端口输入一个计算公式,L端口输入计算的个数,这个运算器默认输出的数列是一个费波那切数列。

    image.png

    Series:等差数列。这个运算器我们在前面的课程已经反复使用多次了。它的作用其实和range也差不多。但它不是设定范围,而是设定公差和输出的个数。

    image.png

    Jitter:一个列表的顺序打乱,输出一个随机的列表。

    image.png

    这个运算器最后一个端口是一个随机因子,输入不同的整数,它会输出不同的数列。

    Random:输出随机数。根据我们设定的数值范围。个数和随机因子。最终输出一个或者多个随机数。

    image.png

    第一个端口是输入随机值的范围,第二个端口是输入随机的数量,第三个是一个随机因子。

    [elementor-template id=”7418″]

  • Grasshopper系列教程-数据列表匹配

    Grasshopper系列教程-数据列表匹配

    今天的Grasshopper的内容比较少。

    image.png

    Combine Data:合并多个输入中的非空项目,这个运算器在实际应用当中作用并没有体现,大家先看下下面的演示算法。

    image.png

    Sift Pattern:使用序号索引模式对列表中的元素进行筛选。从字面意思上比较难以理解的,但是我们可以它和【Dispatch】是比较类似的,Dispatch是分流,这个也可以分流,只不过它会把分流的项目转化为Null。

    image.png

    Cross Reference:交叉列表匹配数据 

    Longest List:长列表匹配数据

    Shortest List :短列表匹配数据

    这三个运算器的作用是改变数据的匹配模式和类型的,Grasshopper默认的匹配模式的Longest List。关于数据的匹配也是Grasshopper学习的重点内容,我会在后面专门来讲解这部分的内容,今天大家只要看下面的简单算法,对匹配数据有个大致了解就好了。

    image.png

    [elementor-template id=”7418″]

     

  • Grasshopper系列教程-Weave-dispatch等数列运算

    Grasshopper系列教程-Weave-dispatch等数列运算

    今天讲解的Grasshopper的几个常用的数据列表控制的电池,下面的这几个电池在分类元素有非常重要的意义。

    image.png

    Dispatch:分流运算器,这个相当常用的电池了,作用就是把一个长列表按照【规则】分流为两个子列表。

    image.png

    所谓的【规则】:就是在P端口输入【Ture】和【False】的数据,之后Dispatch按照Ture分到A列表,按照False分到B列表。

    image.png

    当然也可以输入F T T或F F T T或者更多的数据,如上图所示。

    Null Item:判断数据列表里是否存在【空数据】,所谓空数据就是指【Null】数据,也就是错误或者不存在的数据。如果判断有空数据则输出Ture,如果判断没有空数据,则输出False。

    image.png

    为了演示判断空数据的算法,我这里人为地制造了空数据,就是用两个等差数列相除,由于等差数列默认情况的第一个数为零,所以他们相除之后,第一个数必然是错误的。从上图我们可到序号(Index)0出现了一个Null,而N端口输出的序号0这里输出了TRUE

    Pick’n’Choose:这个不知道怎么翻译 ̄ω ̄=

    这个电池的意思就是P端口输入任意的整数数列,数列无限制,其默认参数是0 1,之后下面的0 1 端口分别输入两个数列,R端口输出有0和1组成的新数列。

    但是结果为什么输出的是0和8呢??

    原因是这样的,输入0那个数列获取的该数列的序号0的数字,那也就是0了;输入1那个数列获取的该数列的序号1的数字,那也就是8了(1那里把等差数列反转序号)

    image.png

    Replace Null:替换Null数据。

    这个简单,就是把数列里存在Null的数据替换掉,这适用于把无意义的Null数据替换成有意义的数据。

    image.png

    Weave:混合,这个电池就很有用了,它可以把多个数列直接【搅合】到一起组合成新的数据

    算法看下图,关于这个运算器的运用,我们以后会在Grasshopper教程里提出一个小案例来专门讲解它的用法

    image.png

    [elementor-template id=”7418″]

  • 如何在Grasshopper中找到曲面的任一点在平面的上映射点

    如何在Grasshopper中找到曲面的任一点在平面的上映射点

    如何在Grasshopper中找到曲面的任一点在平面的上映射点。

    我们先来看看算法

    image.png

    算法上来说还比较简单的,在曲面上画几个点,当然这几个点也不一定是在曲面上的,靠近曲面也是可以的,然后使用今天讲的重点运算器:Surface Closest Point ,直接翻译就是【最靠近曲面的点】,其最终输出的就是曲面的上的点和平面上的映射点。就如上图所示。

    image.png

    【曲面上的点(红点)和平面上的映射点(绿点)】

    那么同学会问了:找到这些点有什么用啊??

    这个问题问得好啊,那我下面就说说它的几个大用处。

    首先找映射点,上面提到了的。一般只找到映射点是没什么用的,有用的下面这个操作。

    image.png

    去曲面上绘制曲线,上面算法不是得到平面映射点了吗?我们把映射点连起来后再映射会曲面上,这样在曲面上就得到一条曲线了。

    第二是通过映射点能得到曲面的结构线。有了曲面结构线后我们就可以用分割曲面、创建曲面的框架构件等等。

    image.png

    【曲面的结构线】

    第二,找到曲面的映射点,可以【摊平曲面】

    image.png

    经过上图的算法,能把任何曲面【摊平】成矩形,其实正确的说法应该是【建立UV曲线】,这操作在Rhino上也是有的啊,其命令就是【Create UV Curve】。

    我们只要能够把曲面的UV曲线找到,那么下一步就能够对这个曲面【为所欲为】了,你想干嘛够行。

    比如:

    image.png

    经过以上一顿骚操作,其大致原理就是去UV曲线内绘制任何实体,最终用【Surface Morph】流动到曲面上。

    image.png

    其他的任何曲线或者实体都可以用这个方法来做的,比如蜂巢样式表皮,鸟巢,水立方等等都可以,同学们自己发挥下聪明才智了。

    好了我们今天的Grasshopper的课程就到这里的,如果有什么疑问的话,请到下方的留言窗口留言。

    [elementor-template id=”7418″]