分类: 群友问答

  • 如何在Grasshopper中获取随机的点

    如何在批量的获取曲线上的随机点呢??
    获取随机点的原理是给曲线输入t值,输出t值所在的点。如下图所示:

    关于t值:
    在 Grasshopper 的 Evaluate Curve(曲线求值)组件中,t 值是曲线参数化的一个重要概念。t 值可以看作是曲线上点的位置参数,它的取值范围通常是从 0 到 1。对于一条曲线,当 t = 0 时,表示曲线的起点;当 t = 1 时,表示曲线的终点。例如,对于一条简单的直线段,t 值从 0 逐渐增加到 1 的过程,就像是一个点从直线的起点沿着直线移动到终点。

    在上述当中曲线必须重新参数化后t值才能取值0~1,否则取值区间为曲线的长度。下图的C端口左边那个小图标即为曲线重参数化,打上这个标记后曲线的区间被定义为0~1之间。

    点的定位:通过指定不同的 t 值,可以在曲线上精确定位点。例如,在建筑设计中,如果曲线代表建筑的轮廓线,通过改变 t 值可以获取轮廓线上不同位置的点,用于确定建筑外立面装饰构件的安装位置等。

    在Grasshopper中以下这些运算器均可以获取t值

  • 如何用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。

    以下是本案例的算法: