首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Grasshopper网格应用案例

(案例一)泰森多边形构建空间网格

通过GH自带的Voronoi 3D算法与Mesh相关操作可生成圆滑连接的网格结构。

该案例的主要逻辑构建思路为首先缩放泰森多边形单元体,然后依据对应两个面的边缘线生成曲面,再将曲面转换为最简网格形式,最后通过网格细分将整体结构进行圆滑处理。以下为该案例的具体做法:

(1)首先创建一个长方体的边界范围,并用Box运算器将其拾取进GH中。通过Populate 3D运算器在长方体范围内创建一组三维随机点。

(2)由Voronoi 3D运算器依据随机点生成组泰森多边形结构单元,并将三维随机点的边界长方体赋予Voronoi 3D运算器的B输入端。

(3)通过Volume运算器提取每个结构单元的中心,并通过Scale运算器将每个结构单元依据其中心点进行缩放。

(4)将缩放后的结构单元由Deconstruct Brep运算器进行分解,并将其F输出端通过Graft转成树形数据。

(5)由Deconstruct Brep运算器将缩放前的结构单元进行分解,并用Area运算器提取分解后每个面的中心点。

(6)用Scale运算器将分解后的面依据其中心点进行缩放,为了保证数据结构对应,需要将Scale运算器的G输出端通过Graft转成树形数据。

(7)用Loft运算器将内外对应两个面的边缘进行放样,此处将曲面赋予Loft运算器,本质上是提取曲面边缘后再进行放样。

(8)由于经过放样后的曲面都是由四边面组成的,可直接由Simple Mesh运算器将其转换为最简形式的四边网格。

(9)将转换后的网格由Mesh Join运算器进行合并,并通过Flatten将所有网格放在一个路径结构内。

(10)通过Mesh UnifyNormals运算器将组合后的网格顶点统一法线方向,再用Mesh WeldVertices运算器焊接网格顶点。

(11)由Catmull-Clark Subdivision运算器对焊接后的网格进行细分圆滑处理,可将网格的细分次数改为3。

(12)由于目前生成的形体并不是闭合的,可通过Mesh Edges运算器提取网格的外露边缘,并用Boundary Surfaces运算器将外露边缘处进行封面。

(13)最后用Custom Preview运算器为整个形体赋予颜色。

通过改变随机点的数量、随机种子、以及缩放的比例因子,可创建不同形态的网格结构。

(案例二)网格细分桥接

T-Splines插件中有个Bridge命令可以将两个曲面的对应子曲面进行桥接,在GH中同样可以通过网格细分的方法构建桥接效果。

该案例的主要逻辑构建思路为首先将两个曲面细分相同数目的子曲面,为了产生随机相连的效果,可通过随机数据提取两组索引值不同的子曲面。将两两对应的子曲面边框通过放样生成连接结构,并将剩余子曲面与连接结构的曲面进行组合,然后将组合后的多重曲面转换成网格,最后通过网格细分生成圆滑的效果。以下为该案例的详细做法:

(1)首先在Rhino空间中绘制两个多重曲面,并用Suface运算器将两个需要连接的曲面拾取进GH中。

(2)用Divide Domain²运算器将两个曲面等分二维区间,要保证两个曲面等分二维区间的U向和V向数量保持一致。

(3)用Isotrim运算器依据等分的二维区间对两个曲面进行分割。

(4)通过List Length运算器统计细分子曲面的数量,并将该值赋予Random运算器的R输入端,同时将两个Random运算器的N输入端赋予相同的数值,为了产生两组不同的随机数据,可改变其中一组随机数据的随机种子。

(5)由于Random运算器生成的数值为小数,可通过Round运算器提取其整数部分。

(6)用List Item运算器提取出随机数据对应索引值的子曲面,并用Cull Index运算器删除掉随机数据对应索引值的子曲面。

(7)通过Graft Tree运算器将子曲面转成树形数据,并用Merge运算器将两组数据进行组合,其输出结果为每个路径下有两个对应子曲面的数据结构。

(8)通过Loft运算器将合并后曲面边框线放样成面,其输出结果为两个曲面间的连接结构。虽然赋予Loft运算器的数据为曲面,但是其放样的物体为曲面的边框线。

(9)将两组Cull Index运算器的输出数据,与Loft运算器的输出数据同时赋予Brep Join运算器的输入端,为了保证所有曲面被放置在一个路径结构内,需要将Brep Join运算器的输入端通过Flatten进行路径拍平。

(10)由于经过组合之前的曲面均为四边曲面,因此可直接通过Simple Mesh运算器将多重曲面转换为网格结构。

(11)通过Mesh Join运算器对转换后的网格进行合并,并用Mesh WeldVertices运算器将合并后的网格进行焊接顶点。

(12)用Loop Subdivision运算器对焊接后的网格进行细分,其输出结果类似T-Splines插件中Bridge命令产生的圆滑效果。为了保证网格外露边缘不变形,需要通过右键单击其S输入端,将边缘圆滑模式改为Fixed。

(13)本案例为了简化操作,在选取子曲面时采用了随机选取的方法,读者如果希望精确匹配连接的位置,可通过指定子曲面的索引值来确定连接的位置。

(14)改变程序中的参数变量,可生成不同的结果。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200522A090XZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券