作者: LinkLi

  • 如何用Grasshopper做贴合曲面的框架

    有个群友问怎么样才能做出贴合曲面的框架,而且这个框架还得做圆角的造型。

    先看看我给出的结果,我用Rhino大概搭建了个曲面,然后在曲面的顶视图绘制了一条做骨架的中轴定位线。

    上图中:1曲面,2骨架中轴线,3骨架框架,4框架上倒圆角。

    针对这样问题,解决的方法思路

    1. 1️⃣在犀牛中绘制一条曲线作为骨架的中轴定位线。
    2. 2️⃣用Grasshopper计算出这条中轴线的等分点的垂直平面(Perp Frames)。分解垂直平面,并且在垂直平面绘制直线,直线的方向为垂直平面的X轴向。
    3. 3️⃣挤出绘制的直线,随后和原始曲面做相交线(Brep|Brep)运算,这样就得到曲面上的曲线(这里用投影到曲面也是可以的),用放样的方法生成骨架的平面造型
    4. 4️⃣获取平面的三个边界组合成一段,然后给曲线倒圆角,但是这里要留意的是,倒圆角有可能失败,原因是相交得到的曲线点分布不平均,所以这时我给了它做了重建曲线(Rebuild Curve)的运算,这样就保证倒圆角顺利完成。
    5. 5️⃣最后做曲线和曲面的偏移生成实体框架。

    Grasshopper算法的图解,下面的数字标记对应上文的文字解析。

  • 在Grasshopper中如何生成点

    好多人在使用Grasshopper的时候都不太清楚怎么创建点的数据,今天我就罗列一下几种常用的情况吧。

    1. 1️⃣拾取犀牛上的已知点。
    2. 2️⃣输入点坐标
    3. 3️⃣等分曲线或者曲面
    4. 4️⃣分解曲线、曲面或者网格
    5. 5️⃣用点阵运算器生成规则或不规则点阵
    6. 6️⃣计算物体之间的交点

    [elementor-template id=”23108″]

     

    1️⃣拾取犀牛上的已知点。

    这个方法就很简单的,点都是Rhino上绘制的,只要用Point的右键菜单Set one(Multiple)Point(Points)拾取一个或者多个就行了。

    2️⃣输入点坐标

    输入坐标点一般用Construct Point这个运算器。

    在运算器的X/Y/Z三个坐标值输入一个或者多个数值,便可以生成点

    3️⃣等分曲线或者曲面

    用Divide Curve和Divide Surface等分曲线或曲面后会得到很多点,这些点的间距大都沿着曲线和曲面排列的。

    等分曲线的运算器查阅这篇文章:5.2 Division #1 等分曲线 – 零刻学堂 (3dscg.com)

    4️⃣分解曲线、曲面或者网格

    分解曲线或曲面获取点也是经常使用方法之一,这个方法的好处是可以在原有的物体的基础上获得点数据,而且这些点和原本的物体还存在着位置关系。

    分界点用到工具一般是:Deconstruct Brep,End Points,Area,Point On Curve,End Points,End Points 等等的运算器

    5️⃣用点阵运算器生成规则或不规则点阵

    Grasshopper内置多种点阵运算器用于快速生成点

    详细的查阅这篇文章:4.2 Grid #1 矩阵网格 – 零刻学堂 (3dscg.com)

    6️⃣计算物体之间的交点

    当我们想要的点是从物体之间的交集得到的时候,就要计算物体的相交关系。

    相交点获取方式可以由这几种方式获得:求线和线的交点,求线和曲面的交点,求线和平面的交点、求线和体块的交点。

  • 如何用Grasshopper做螺旋上升的点阵列

    有个群友问这么把点布置在螺旋上升的曲面上的问题。

    针对这样问题,解决的办法有两个

    1. 用犀牛做螺旋上升的曲面,然后在曲面上布置点,点可以随机的也可以是规则的。
    2. 用Grasshopper算法计算出随机点,这个方法必须懂Grasshopper的算法思维,否则不太容易实现。

    这位群友不太懂Grasshopper,我这里给出是思路是用rhino来做曲面,然后用Grasshopper布置随机点,用Grasshopper布置随机点只要用到一个简单运算器就可以了,并不需要什么高深的算法思维。

    双螺旋上升的犀牛曲面做法也有很多种,我这次提供一种思路,方法上也比较容易实现。

    步骤:

    1. 画两条等高的螺旋线Helix
    2. 两条螺旋线放样Loft成曲面
    3. 把曲面展开(CreateUV)生成UV矩形
    4. 在UV矩形内绘制一个多边形
    5. 把UV矩形和多边形拉回(ApplyCrv)到放样的曲面上
    6. 用拉回的曲线去修剪曲面,这样就得到了螺旋上升的曲面了。

    有了螺旋上升的曲面,再用Grasshopper布置点是轻而易举的事情,用Populate Geometry 运算器就可以布置随机的点阵列了,如果要布置规则排列的点阵列,可以用Divide Surface

  • 如何正确的用Grasshopper切割或者分割曲面

    这群友在群里的一个问题了,他问Grasshopper切割开洞的曲面的,出现了空洞位置又被补回去了,要求助怎么解决问题。

    他是用isotrim来切割曲面,用这个运算器没有问题,问题就在于没有后续操作,应为isotrim这个运算器只会按照曲面的原始uv方向来切割,当遇到曲面中间有被修剪的部分,那么它会让曲面回到初始状态,这个状态在Rhino当中我们叫做取消修剪(untrim)的状态。

    要解决这个问题,我们只要给这个曲面做进一步的修剪并筛选要的曲面就可以了。

    方法是这样的:

    用isotrim之后的曲面和原始曲面做相交运算(Brep|Brep),这样就可以得到相交线,再用相交线去分割原始曲面,这样的话原始曲面就会被切割零碎的曲面了,但是这里要注意的是切割后的曲面会出现很多不要的重合面,我们这个案例用曲面面积大小来判断,只保留面积小于30的的曲面,这些曲面就是我们要的,筛选工具选用最为常用的Cull Pattern。

    以下是本案例的算法:

  • 19自下而上随机增加消失方块纹理-Grasshopper纹理

    19自下而上随机增加消失方块纹理-Grasshopper纹理

    纹理特色


    • 消失的点阵越往上边消失得越多。

    算法步骤


    • 建立正方形点阵
    • 给每一层设置删除的编号
    • 生成表面

    详细步骤


    以下是Grasshopper算法:

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

  • 18自下而上渐变展开方块-Grasshopper纹理

    18自下而上渐变展开方块-Grasshopper纹理

    纹理特色


    • 渐变的菱形铺满斜网格矩阵
    • 渐变的方式是体现在菱形底角两个边界的开合大小。

    算法步骤


    • 1生成斜铺的四边形
    • 2计算出四边形最底下的点
    • 3通过距离值映射成图形的开合角度
    • 4平面线布尔相交运算生成图形
    • 5创建网格实体
    • 6Grasshopper算法电池图下连接关系

    详细步骤


    1生成斜铺的四边形

    用Voronoi泰森多边形生成斜向菱形网格,菱形往里面偏移一点距离最终得到菱形单体矩阵。


    以下是Grasshopper算法:

    2计算出四边形最底下的点

    分解点的XYZ坐标值,然后排序Y的顺序,获取Y值的最小值。

    以下是Grasshopper算法:

    3通过距离值映射成图形的开合角度

    计算菱形的最低点到目标点的距离,把距离重映射(Remap)成图形开合的角度。

    以下是Grasshopper算法:

    4平面线布尔相交运算生成图形

    根据上文计算出的角度绘制直线,用生成的直线创建几何图形,这个几何图形再跟基础的菱形做布尔交集运算(Region Intersection)。

    以下是Grasshopper算法:

    5创建网格实体

    以下是Grasshopper算法:

    6Grasshopper算法电池图下连接关系

    以下是Grasshopper算法:

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

  • 17正方形螺旋纹路纹理-Grasshopper纹理

    17正方形螺旋纹路纹理-Grasshopper纹理

    纹理特色


    • 螺旋的缩放排列的正方形平铺到平面网格内

    算法步骤


    • 1创建斜向四边形方阵
    • 2旋转缩放四边形
    • 3绘制贝塞尔曲线
    • 4连接等分点
    • 5Grasshopper算法电池图下连接关系

    详细步骤


    1创建斜向四边形方阵

    用Voronoi泰森多边形制造斜45度排列的正四边形。

    以下是Grasshopper算法:

    2旋转缩放四边形

    以下是Grasshopper算法:

    3绘制贝塞尔曲线

    以下是Grasshopper算法:

    4连接等分点

    以下是Grasshopper算法:

    5Grasshopper算法电池图下连接关系

    以下是Grasshopper算法:

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

  • 16叶片密拼纹理-Grasshopper纹理

    16叶片密拼纹理-Grasshopper纹理

    纹理特色


    • 渐变的三角形铺满网格
    • 三角形渐变大小并非整体变化,而是一个个三角形区域单独变化

    算法步骤


    • 1创建右上单元曲线
    • 2叶子边缘曲线
    • 3扇柄节点处曲线
    • 4扇叶叶脉结构线
    • 5扇面单元体
    • 6扇面单元体定位到大三角矩阵中
    • 7Grasshopper算法电池图下连接关系

    详细步骤


    1创建右上单元曲线

    本次案例的曲线完全是参数化绘制的,所以画线的步骤相对会比较繁琐。

    前面课程提到过创建密拼图形必须是建立正3、4、6边型的基础之上,因此本案例先做了三角形做为基础几何图形的。

    具体绘制过程看下面的Grasshopper算法,我这里不赘述了,大概的思想就是筛选线、点、绘制直线等步骤,最后通过创建的点串联成曲线。叶片的右上角曲线如下图所示。


    以下是Grasshopper算法:

    2叶子边缘曲线

    其他的边缘曲线无需重新绘制,只要用到旋转,镜像,裁剪等操作就可以获取。结合下图算法文件判断一下分别代表哪几条线。

    以下是Grasshopper算法:

    3扇柄节点处曲线

    扇柄节点的曲线也是找点、画线、连线这样一套操作。

    以下是Grasshopper算法:

    4扇叶叶脉结构线

    以下是Grasshopper算法:

    5扇面单元体

    以下是Grasshopper算法:

    6扇面单元体定位到大三角矩阵中

    单元体定位到大三角形矩阵中,需要删除重合点的部分。

    以下是Grasshopper算法:

    7Grasshopper算法电池图下连接关系

    以下是Grasshopper算法:

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

  • 15三角形阵列网点纹理-Grasshopper纹理

    15三角形阵列网点纹理-Grasshopper纹理

    纹理特色


    • 渐变的三角形铺满网格
    • 三角形渐变大小并非整体变化,而是一个个三角形区域单独变化

    算法步骤


    • 1创建基础三角形
    • 2制作内部的梯形面
    • 3创建梯形内平均线
    • 4创建三角形单元体
    • 5单元体定位到大三角形矩阵当中
    • 6创建网格实体
    • 7Grasshopper算法电池图下连接关系

    详细步骤


    1创建基础三角形

    基础三角形有三个,外围作为最后平铺边框大三角形(边长3),往里稍微偏移(偏移0.05)一点距离的三角形,这层作为平铺后消除重合点用的,预留一点点公差,最里层(缩放为0.303倍)中间空心的部分。

    以下是Grasshopper算法:

    2制作内部的梯形面

    梯形面是网格点阵列的基础形状,三角形内部的其中一个部分,形状如下图绿色部分所示。

    生成方法就是获取里面的三角形的某两条线段,使他们延长并相交,取相交线围合的形状。

    以下是Grasshopper算法:

    3创建梯形内平均线

    获取梯形两条横向对边,在两个对边之间生成平分线。

    以下是Grasshopper算法:

    4创建三角形单元体

    在平分线上做等分点并画圆形,圆形的半径值为等差数列,最后把圆形点阵旋转阵列成一个单元体。

    以下是Grasshopper算法:

    5单元体定位到大三角形矩阵当中

    单元体点位到大三角形矩阵中,但是要注意大三角形矩阵内有分正三角形和倒三角形,所以要对单元做旋转(隔开一个转60度)的处理。

    以下是Grasshopper算法:

    6创建网格实体

    以下是Grasshopper算法:

    7Grasshopper算法电池图下连接关系

    以下是Grasshopper算法:

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

  • 14三角形花朵点阵纹理-Grasshopper纹理

    14三角形花朵点阵纹理-Grasshopper纹理

    纹理特色


    • 整个纹理表皮有渐变的花瓣平铺而成的
    • 同一个圆心环绕的六个花瓣组成一朵花
    • 相邻的花瓣有个可以组成点阵的等边三角形图案

    算法步骤


    • 1创建中心三角形、中线、中点
    • 2创建中心圆,分解中心圆
    • 3中心圆分段数分析
    • 4获取边界线生成表面
    • 5根据边界距离生成渐变半径圆形
    • 6纹理单体定位到大的三角形阵列当中
    • 7删除重复图形
    • 8创建网格实体
    • 9Grasshopper算法电池图下连接关系

    详细步骤


    1创建中心三角形、中线、中点

    根据花瓣的几何原理做出花瓣的中心三角形、对称中线和中点。

    下图的菱形上下两个顶点时候花瓣的中心圆的位置

    以下是Grasshopper算法:

    2创建中心圆,分解中心圆

    花瓣的两个顶点是从中心圆某一部分引申出来的,下面的算法是把中心圆分解成6等分,分解后的圆再根据菱形中心点旋转到菱形的底部顶点。

    以下是Grasshopper算法:

    3中心圆分段数分析

    下面算法是用来查看中心圆的分段情况。

    以下是Grasshopper算法:

    4获取边界线生成表面

    用贝塞尔曲线绘制花瓣的轮廓线,在用四个边界生成曲面平面。

    Grasshopper的贝塞尔曲线要指定起点A、起点A向量、终点B、终点B向量。

    以下是Grasshopper算法:

    5根据边界距离生成渐变半径圆形

    以下是Grasshopper算法:

    6纹理单体定位到大的三角形阵列当中

    单个花瓣定位到大的三角形矩阵中,然后根据大三角形矩阵内的三角形中心点做旋转复制6个,组成花瓣形状。

    以下是Grasshopper算法:

    7删除重复图形

    在上大三角形矩阵中旋转会产生很多重复数据,用删除重复点运算器删除掉重复的部件。

    以下是Grasshopper算法:

    8创建网格实体

    以下是Grasshopper算法:

    9Grasshopper算法电池图下连接关系

    以下是Grasshopper算法:

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