分类: 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)并作放样曲面

    效果如下图

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

  • grasshopper随机在曲面上抽离结构线算法

    grasshopper随机在曲面上抽离结构线算法

    grasshopper随机在曲面上抽离结构线算法

    算法如上图

    [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″ /]

    1. 选择出曲面的短的边界,并计算出边界的长度。
    2. 把计算得到的边界的长度输入到随机运算器中,得到一系列的随机数。
    3. 把随机数量输入到 Construct Point (点)中,会得到一系列的随机点。
    4. 最后用Iso Curve(结构线)算出随机的结构线。

    [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″ /]

    1. 被计算长度的边界一定要是短边,否则最后生成的结构线必然会超出曲面范围。
    2. 第二是注意边界线段的轴向和随机点排列的轴向一定要一致,否则也可能会出现上面的情况。
    3. 如果生成的结构还是超出曲面的范围,这个就属于不可避免的范围,暂时我也没有找到造成这种情况的原因,不过这种情况还是有应对方法的,方法就是把多出的线条删除掉。这个我在明天的文章再来讨论这个问题。

    随机结构线的效果

  • grasshopper水立方表皮建模算法

    grasshopper水立方表皮建模算法

    接着昨天发布的软包模型制作的教程,继续深化软包(水泡)的算法。,昨天那个软包的几个点我自己差点都看晕了,生成的那几个点很难看清楚之间什么关系,这次我改进了下这个软包的算法,再加上文字的标记,总算能看得清楚了。

    下图中不管是向量还是中轴线都必须用点来指定的,一定要搞清楚点的关系。相比至于昨天的算法,这次我把那些数据的拍平都在分组,这样的好处是他们的路径关系更加统一,这样利于数据之间的匹配。


    ​这个算法电池图:

    关键字:grasshopper 水立方表皮犀牛 voronoi

  • Grasshopper水泡表皮制作算法

    Grasshopper水泡表皮制作算法

    grasshopper软包(类似水立方表皮的效果)教程

    效果见下图这个


    方法:


    1. 创建闭合的平面曲线
    2. 寻找曲线图形的中心点
    3. 制作垂直于曲面的中轴线
    4. 绘制软包的截面曲线
    5. 截面曲线沿着中轴线旋转成型

    截面曲线


    截面曲线是用grasshopper的贝塞尔曲线运算器(BzSpan)生成的,这个运算器A和B两个端口输入曲线的两个端点,At和Bt两个端口输入相对应两个点的法线方向(点的指向方向),这里法线方向我用两点向量(Vector 2Pt)生成,注意At的方向要与中轴线垂直,而Bt的方向则要与平面曲线垂直。

    算法:


  • grasshopper寻找已知点投射到曲面的映射点(最近点)

    grasshopper寻找已知点投射到曲面的映射点(最近点)

    寻找映射点我上次写过这篇文章《grasshopper找到一个曲面上任意一个点并作这个点的法线方向》大家可以去看看这种寻找映射点的方法。

    所谓映射点其实就是点在曲面的投影点,看下图:

    投影点和原来的点的连线刚好与该曲面垂直,也就相当曲面这个点位的法线了。

    算法相当简单,我就不多说了。有几个运算器的位置稍微提一下。

    [intense_table bordered=”1″ columns=”运算器,位置,作用” data=”①Brep CP,Surface Analysis,找出投影点,P输出点。D输出两点之间的距离,②Vector 2Pt,Vector Vector,两点形成向量,③Vector Display,Vector Vector,在视图中显示向量的方向标示” /]

  • 如何在grasshopper中用布尔值删除对象

    如何在grasshopper中用布尔值删除对象

    如何在grasshopper中用布尔值删除对象?

    一般用Cull Pattern运算器删除对象,它的P端口输入布尔值列表,如上图输入三个布尔值,列表顺序是False True True。当输入值等于False时就删除数据,值等于True时就保留数据。

    布尔值也可以用数值来替代,非0的值当做布尔值输入时会自动转化为True, 等于0的值会转化为False。如下图

    image.png