分类: grasshopper

专业解析grasshopper技术

  • grasshopper中点阵生成曲面的算法

    grasshopper中点阵生成曲面的算法

    grasshopper中点阵生成曲面的算法

    这个算法用Surface From Points(点阵生成曲面运算器)来完成的。

    运用这个算法要满足三个个条件

    1. 点阵要是线性数据(Flatten Tree)
    2. 点阵序号排列必须如下图所示,否则会正常扭曲的曲面
    3. 生成的曲面的U方向分段数量要与点的数量一致(算法图中的15是Grid的分格数量,点的数量要比分格数量大1个)

    完成的曲面

    点阵序号显示

     

  • grasshopper中点重新排列

    grasshopper中点重新排列

    grasshopper中点重新排列

    在grasshopper里随机产生无序的点非常容易,但是我们在做建筑设计往往要把无序的点组合变成按照我们想要的点组合,这样建筑的表面变化才会随我们的想法而改变。
    Populate 2D就可以生成无序随机点,让这生成输入“Sort Along Curve(沿着曲线排列)”,最终输出点就是经过重新排列的了。

    但是这个运算器仅仅只支持点的重新排列,如果其实已经存在的非点对象应该怎么处理呢?

    我们观察Sort Along Curve这个运算器后面的输出端口有“I”的参数,这个参数就是输出改变后点的地址(Index)的排列顺序,我们只要用“List Item”运算器在重新“读取”一次原有列表就可以重新排列非点对象物体了 http://http://pic-7niu.3dscg.com/sortpoint006.png

  • grasshopper分组数据替换算法treeitem,treestatistic和replaceMembers

    grasshopper分组数据替换算法treeitem,treestatistic和replaceMembers

    grasshopper获取分组数据任何一个分支数据上的元素的方法。

    如果我们想获取分组数据任何一个分支数据上的元素,一般有怎么几个方法:

    1. 把分组数据拍平成为线性数据,通过“List Item”的Id号获取线性数据的数据元素。这种方法最为直接,但缺点也明显,那就是数据拍平后原有的分组数据结构就被破环了,那有得重新去组织数据的结构,显得就很麻烦。如果后面数据匹配都是线性对线性的话,那这个方法无妨,否则就得用我今天介绍的第二种方法。
    2. Tree Statistic 和Tree Item运算器:这个两个运算器中前者是统计分组数据的数据结构,它输出数据分组的路径和路径下的元素数量,Tree Item则是获取指定路径下的指定ID号的元素。获取后的这个元素可以二次编辑后再“Replace Members(替换回原来的数据分组内)”,这样原数据分组就不会发生任何的改变了,最终生成新的数据。

    被替换的数据点

  • grasshopper软包算法

    grasshopper软包算法

    用grasshopper制作的软包算法,用这个算法可以制作表皮曲面上鼓包的效果,比如水立方的表皮,沙发或者床背景等。

    算法原理:

    把曲面分割成多个小四边形面,再将四边形面划分等分点,选择曲面最中心的等分点(假设为点C),把中心等分点C沿着小四边形面的中心法线运动,运动后得到的点数据(假设为点Y)去替换原四边形面的中心等分点C,最终的点阵列重组(Surface FromPoints运算器)为一个曲面。

    运算结果:

  • grasshopper分组数据算法–数据分流

    grasshopper分组数据算法–数据分流

    grasshopper按分组生成模型。

    该算法也是比较实用的,通过这个算法可以把一个分组数据按照特定的分组分离出来,从而可以的针对各组进行变化,如下图,网格按照间隔的排列生成不同的形态,当然如果有必要的话也可以随机生成不同的模型。

    算法解释:

    首先有一串数据(网格点),默认生成的网格点是按一排为一组的数据构成的,这组数据输入“Param Viewer(数据观察运算器)”,Param Viewer可以查看数据的路径构成和所属路径下的Item(元素)数量,它输出的是路径数据。

    把路径数据再输入“Dispath”里面,路径数据被Dispatch分流为两路数据(数据分流不单单用dispatch的,也可以用其他的代替)。分流后的数据导入Tree Branch中,Tree Branch 会根据导入的数据路径对原分组数据流(网格点)进行筛选,最终得到的就是按分组的数据流了,没有数据流分支都可以独立操作和修改。

    关键字:grasshopper教程,grasshopper算法教程

  • grasshopper路径获取运算器

    grasshopper路径获取运算器

    如何获取grasshopper分组数据的路径

    在grasshopper中经常会遇到数据的分组,而且会不停的对数据进行抽取,筛选,再组合等一系列操作,而这个编辑过程如果能借助“路径”的力量,编辑分组数据那肯定是事半功倍的。

    路径它记录是每一个分组数据在“大数据”中的位置,数据之间“匹配关系”都跟路径的位置很有关系。

    路径的表现:大括号{路径}

    如下图:下图是一个树形数据结构,数据第一层路径是{0},第二层数据是{0;0}….{0;4},{0;0}….{0;4}里面分别有一些数据,这些数据的数量都不禁相同。

    获取路径数据我们一般使用Param Viewer,数据导入Param Viewer后得到下列的几个数据Structure (Paths = 5)
    path {0;0} (N = 4)
    path {0;1} (N = 3)
    path {0;2} (N = 5)
    path {0;3} (N = 2)
    path {0;4} (N = 3)

     

  • grasshopper实现冰裂纹(Voronoi算法)

    grasshopper实现冰裂纹(Voronoi算法)

    今早一大早就起床了,打开自己网站看到学生给我网站留了言,问我冰裂纹怎么做。前几天我在微博上也看到留言的,因为自己比较忙就没有起思考这个怎么实现的。打开犀牛之前我以为这个要自己计算,没想到grasshopper本身已经自带这个功能了,而且非常的简单,一个运算器加几个随机点就足以完成了。

    使用到运算器是Voronoi Group。

    Voronoi Group 默认情况下会生成一个矩形区域,也可以自己制定。G1端口输入划分的冰裂纹点。如下图

    G2输入划分后冰裂纹再细分的点。

    也可以在任意区域加入点,一个区域内的点必须大于一个点

    运算器缩放显示到巨大时会出现添加删减输入端口的符号,这是可以更加精细的细分网格

     

  • grasshopper参数化楼梯

    grasshopper参数化楼梯

    Grasshopper参数化楼梯

    这个算法比之我前段时间写的一个算法简化了很多步骤。主要得益于Rhino5.0最新的Grasshopper的线性阵列(Linear Array)工具,直接阵列出楼梯的造型。

    算法如下图

  • 莫比乌斯环grasshopper算法

    莫比乌斯环grasshopper算法

    莫比乌斯环grasshopper算法


    制作思路:绘制多个与圆形曲线垂直的矩形,而且他们在圆形上平均分布,矩形之间互成等差的旋转变化,最后把矩形曲线做放样成面成型。

     

    上图电池图技术解答:


    1. 绘制圆形
    2. 在圆形中创建等分的“平面”。
    3. 计算出“平面”旋转的等差角度。总的角度是360,而等差个数随意指定,但一定要与“平面”数量相等。
    4. 这个运算器是把弧度转化为角度。默认的旋转运算器的A端口输入的参数都识别为“弧度”,所有这里必须要转化一次。
    5. 旋转运算器。
    6. 在平面中生成矩形。
    7. 放样成型。默认的放样生成的模型是不闭合的,要在O端口中勾上“Loft Options”的“Closed Loft”。

    莫比乌斯环效果

  • grasshopper排列放样曲面

    grasshopper排列放样曲面

    如上图,这个小算法实现的是选择出紧挨着的两根线段做放样曲面。即挑选出0 1、2 3、4 5……..n n+1线段做放样

    [intense_hr type=”solid” size=”large” title=”实现的思路” title_tag=”h3″ title_background_color=”#ffffff” title_position=”left” icon_type=”pencil” icon_position=”left” icon_size=”1″ icon_color=”#1a8be2″ /]

    创建排列的线段,数量数值为偶数

    将线段的数列“分流”(Dispath)。分流的作用是让原始数据列表分为两个部分,A端口输出原始数据的偶数项,B端口输出的原始数据的奇数项。

    分流后的线段数列再做数据分组处理,使得每个分组只有一个数据。

    最后将数据“合流”(Merge)并作放样曲面

    效果如下图

    如果改变一下原始线段的排列的话,可以得到比较有趣的变化,下面我做了随机的变化。