网格是3D建模领域最有代表性的几何形式,很多软件的构架都是以网格为中心,但是由于Rhino主要是针对Nurbs的操作,导致网格在Rhino以及GH中的操作容易被人忽视。网格与Nurbs的作用是互补的,很多Nurbs难以实现的模型都可以通过网格制作出来。
网格创建的模型与其他软件有较好的对接性,因为其在保存成3ds或者Obj格式后导入其他软件时,网格的拓扑关系不会发生变化,可继续对模型进行编辑。但是Nurbs模型在导入到其他软件过程中,往往需要先转换为网格,其拓扑结构往往与预期效果不一致,导致后面的软件没法对其进行有效的编辑,相信经常使用Sketch Up与Rhino进行模型互导的读者会深有感触。
网格可以大大提升模型的显示效率,因为计算机的显卡无法直接读取Nurbs物体,需要先在后台将其转换成网格才可以读取出来。如果模型本身就是网格的话,那么就无需这个转换过程,大大节约显示的计算时间。网格还可以通过Join的方法减少模型所占的存储空间,同样可以提升模型的显示效率。
由于GH中的Mesh命令相对较少且不够完善,因此需要外部插件来弥补其功能的缺失,较为常用的Mesh插件包含Mesh Edit、Weaverbird、Starling、Meshtools等。
对于网格的含义,在Rhino中建立一个网格,然后用“What”命令查看对于网格的描述,可以发现该网格是由9个顶点,4个有法线的网格面组成。
将上面绘制的网格用Mesh运算器拾取进GH中,并用Deconstruct Mesh运算器将这个网格进行分解,其V输出端表示网格的顶点;F输出端表示的是每个网格面的顶点序号,用Panel面板查看其输出结果,其中Q表示的是Quad的含义,即为四边的Face,如果将三边网格面进行分解,输出端F中的数据则会显示T,所表示的即是Triangle的含义;输出端C表示的是顶点的颜色;输出端N表示的是顶点法线方向。
网格由Vertices、Edges、Faces共同组成,包含三边网格和四边网格。通过指定网格内部的拓扑关系(Topology),可以创建不同结构的网格。Construct Mesh运算器是创建网格的常用命令,需要确定网格的顶点以及网格面(Face),这里的网格面指的其实是顶点的排列序号,创建网格面可以通过在Panel面板中输入顶点序号,也可通过Mesh Quad以及Mesh Triangle运算器创建四边和三边的网格面。
在创建Mesh Faces的时候要尤其注意顶点序号的排列,只有正确的顶点排序才能生成正确的Mesh结果,如果顶点的排序是错误的,那么会生成有破面的网格,这样的模型在渲染或3D打印的情况下是会出错的。
网格同样可以由Nurbs曲面转换得到,通过Mesh Surface运算器可以将曲面转换成四边网格,并可以自定义U向和V向网格的数量。曲面可以通过Mesh Surface运算器转换成网格,并保持原始曲面的UV拓扑结构。
网格同样可以通过Mesh Brep运算器由Brep转换而来,不过由于Brep的UV结构往往比较混乱,生成的网格拓扑关系也比较混乱,难以对其深化处理。通常的做法都是利用UV结构较为规整的单一曲面转换成网格,再对其进行深化处理。
GH中网格框线的开启与关闭可在【Display→Preview Mesh Edges】进行切换,也可通过快捷键“Ctrl+M”控制网格框线的开启与关闭。
网格边缘分为Naked Edges、Interior Edges、Non-Manifold Edges,用Mesh Edges运算器可将这三类边缘提取出来。其中Naked Edges表示外露边缘线(每个边缘线只属于一个面),Interior Edges表示内部边缘线(两个面共用一个边缘线),Non-Manifold Edges表示非正常边缘线(多于两个面共用一个边缘线)。用Mesh Edges运算器提取出来的边缘线都是断开的Line。
通过Face Boundaries运算器可提取网格每个面的边缘线,其输出的结果是闭合的Polyline Curve,如果将这些Polyline Curve炸开的话,在面与面相交的位置会有重合的边缘线产生。
网格应用实例一
创建孔洞表皮是GH中比较常见的操作,多数情况下的习惯是用Nurbs来操作的,可是Nurbs所带来的问题就是一旦所开孔洞数量较多的话,整个程序的运行就会变得非常慢。为了提高运算效率,可以通过Mesh的做法来优化整个程序。以下通过一个案例介绍Mesh方法创建孔洞表皮的方法:
(1)为了简化操作可以直接调用曲面,并用Mesh Surface运算器将其转换为网格,U向和V向网格划分的数量可分别设定为32、42。
(2)通过Face Boundaries运算器提取每个网格面的轮廓线,并用Face Normals运算器找到每个网格面的中心点。
(3)由List Length运算器测量网格面的数量,并由Subtraction运算器将总数量减去1。
(4)用Range运算器将0 to 1区间进行等分,等分的段数为网格面的数量减去1。
(5)调入Graph mapper运算器,并将其函数类型改为Sine函数。将等分数值赋予Graph mapper运算器,对其进行函数映射。
(6)由于正弦函数的输出数据区间范围是0 to 1,可通过Bounds、Remap Numbers、Construct Domain三个运算器将函数的输出数据映射到0.2 to 0.8区间范围内。
(7)通过Scale运算器将网格面边缘线依据中心点进行缩放,缩放的比例因子为映射后的数值。
(8)由两个Explode运算器将缩放前后的线框同时炸开,为了保证数据路径一一对应,需要通过右键单击Explode运算器的S输出端,选择Graft将两组数据成树形数据。
(9)通过Flip Curve运算器转换其中一组线的方向,如果不转换方向的话,对应两条线的四个端点的排序就是{0;1;3;2},这样就需要手工修改Face的顶点排序。
(10)将两组网格面的边缘线继续用Explode运算器炸开,同时右键单击其V输出端,选择Simplify进行路径简化。
(11)用Merge运算器将两组点数据进行合并,那么其输出结果为每个路径下有四个构成网格面的顶点。
(12)最后将点赋予Construct Mesh运算器的V输入端,即可依据顶点的排序创建网格。
Deconstruct Mesh运算器可以确定网格每个顶点的法线方向,Face Normals运算器可以确定每个网格面中心点的法线方向。网格上点的法线方向遵从右手螺旋定则,两个网格面的顶点排序分别为Q{3,0,2,4}、T{0,1,2},按照右手螺旋定则,此时网格上点对应的法线方向是向上的。
网格应用实例二
网格上点的法线应用多伴随形体的变化,以下通过一个案例介绍网格顶点法线方向的应用方法:
(1)如图1-59所示,用Mesh Sphere运算器创建一个网格球体,其U、V两个方向网格面的数量可同时设定为30。
(2)通过Deconstruct Mesh运算器提取网格面的顶点及其对应的法线方向。
(3)用Deconstruct运算器将网格面的顶点分解为X、Y、Z坐标,并将Z坐标的数值通过Sina运算器进行正弦函数映射。
(4)为了方便后期调整数据,将正弦函数映射后的数值通过Multiplication运算器乘以一个倍增值。将该数值赋予Amplitude运算器的A输入端作为网格顶点法线向量的数值。
(5)将网格顶点通过Move运算器沿着其对应的向量进行移动。
(6)将移动后的顶点由Construct Mesh运算器重新组成网格,其F输入端的网格顶点排序需要与初始网格的顶点排序保持一致。
在用Construct Mesh运算器创建网格的时候,可以在其C输入端为网格赋予颜色。如图1-60所示,网格着色的原理就是顶点着色,如果只输入一种颜色,那么网格就会显示该种颜色;如果将顶点指定多种颜色,那么网格将会依据这些顶点颜色生成过渡的渐变色。
网格着色可用来显示分析的结果,以下通过一个案例介绍网格着色的应用方法:
(1)为了简化操作,可以直接调用上一个案例中的网格结果。
(2)为了更直观的显示顶点位移变化的大小,可以通过Gradient Control运算器中的渐变色显示顶点位移的变化趋势。
(3)由于Gradient Control默认的区间范围是0 to 1,可以用数据映射的方法将所有顶点的位移数值映射到0 to 1范围内。
(4)将渐变色赋予Construct Mesh运算器的C输入端,网格的所有顶点将会被赋予相对应的颜色,网格面则会依据四个顶点的颜色生成过渡的渐变色。
网格图片映射
通过图片灰度值影响网格的形体,这样能够更精确的控制纹理变化的位置和强度。
该案例的主要逻辑构建思路为首先将图片以网格形式导入到GH中,由于网格的每个顶点都对应一个灰度值,将其作为一个曲面上点移动距离的依据。通过移动之后的点重新生成网格,最后依据网格生成楼板层。以下为该案例的具体做法:
(1)首先在PS中绘制一个黑白纹理图片,读者也可以在网上搜索黑白纹理图片来获取素材。
(2)用Import Image运算器将图片以着色网格的形式导入GH中,通过右键单击其F输入端,选择Set One File Path指定图片路径。其X、Y两个输入端表示着色网格顶点的数量。
(3)通过Deconstruct Mesh运算器将着色网格进行分解。
(4)用Ellipse运算器创建一个椭圆平面线,并通过Extrude运算器将其挤出形成一个面。
(5)用Divide Surface运算器在曲面上生成等分点。为了保证等分点数量与网格顶点数量保持一致,需要将网格的X、Y两个方向顶点数量减去1,然后将结果分别赋予Divide Surface运算器的U、V两个输入端。
(6)用Evaluate Surface运算器计算等分点对应的曲面法线方向,为了简化路径结构,可将Divide Surface运算器的uv输出端通过Flatten进行路径拍平。
(7)用Split AHSV运算器将网格每个顶点对应的颜色分解为alpha值、色相、饱和度、色调。
(8)将色调的数值由Remap Numbers运算器映射到一个适当的区间范围内。
(9)通过Amplitude运算器为曲面上等分点的法线方向赋予数值。
(10)由Move运算器将曲面上的等分点沿着向量进行移动,对应图片颜色越亮位置的点移动的距离越大,反之则越小。
(11)用Construct Mesh运算器依据移动之后的点生成网格,并且将着色网格的顶点序号与颜色赋予该运算器的F和C输入端。
(12)用Contour运算器在网格表面生成等距断面线。
(13)用Join Curves运算器将生成的曲线进行合并,并通过Control Polygon运算器提取多段线顶点。
(14)由于生成的网格在原曲面接缝处是不闭合的(如果读者想构建一个闭合的网格,则需要保证原始图片左右两侧交接处的亮度值保持一致),需要通过PolyLine运算器将顶点重新连成线,为了使生成的多段线是闭合的,可将其C输入端的布尔值改为True。
(15)用Smooth Polyline运算器对多段线进行适当的圆滑处理。
(16)通过Boundary Surfaces运算器依据曲线生成平面,并用Extrude运算器将其挤出一定的厚度。
(17)不同的黑白纹理图片对应不同的形体效果。如果读者想精确控制形体的纹理位置,则需要调整黑白颜色的分布位置,并且通过多次调试,才能得到满意的结果。
Grasshopper中常用常用处理网格的插件很多,像Mesh Edit、Mesh Tools、Weaverbird、Kangaroo、 Millipede 、Starling等插件,接下来将介绍三款较为常用的网格插件。
Weaverbird插件应用
Weaverbird插件时GH中最常用的网格编辑工具,包含细分、网格开洞、加厚等常用操作,能够快速生成相对规则的复杂网状形体。
泰森多边形构建空间网格
通过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)改变程序中的参数变量,可生成不同的结果。
Kangaroo插件应用
Kangaroo将动力学计算引入gh中,通过物理力学模拟进行交互仿真、找形优化、约束求解。Rhino6版本已经将其内置于GH中,可见地位之重要。
壳体设计
MARC FORNES / THEVERYMANY通过'蛹'的概念重新设计了圆形剧场,项目位于在马里兰州的merriweather公园,作为一个沉浸式的空间,在满足剧院要求的同时,该结构的特点是一系列级联的拱门,不仅大小不同,而且功能也不同。
(现场照片)
该剧场采用的材料为铝合金瓦片和钢外骨骼,其颜色则从大自然中提取灵感,将每片木瓦都涂有四种绿色中的一种,使整个剧场伪装成自然景观。
(效果图)
MARC FORNES / THEVERYMANY使用最大的拱形框架'舞台阿尔法',它已被用于可能需要照明设备的官方活动和音乐表演。 到了晚上,舞台成为一个发光的音乐会场地,具备支持重要音乐表演的能力。
(施工照片)
Kangaroo(袋鼠)插件将动力学计算引入GH中,通过物理力学模拟进行交互仿真、找形优化、约束求解。将Kangaroo应用于壳体和膜结构设计中,可以极大的节省找形优化时间。
蛹形剧场的形体可以通过Kangaroo插件进行构建,由于该形体表面有棱状凸起结构,因此在前期创建基本形体的时候就要构思好整体布线的规律。由于袋鼠插件是针对网格进行操作,可借助T-Splines插件中Append Face命令构建基本形体。
通过袋鼠插件找形完毕后,需将网格Bake到Rhino空间中,并将其转换为TS中的网格物体,选择对应凸起位置的网格线,将TS拖拽模式切换的UVN的法线方向,最后沿着法线方向移动网格线、即可生成棱状凸起结构。
图片的 Circle Packing
step 1
首先创建一个矩形,并在矩形范围内生成一定数量的随机点。用Import Image运算器导入一张图片(本案例以奥巴马的照片作为演示),需要右键单击File输入端,找到图片对应的文件路径,其输出结果为着色的网格。
step 2
通过ImageCircles运算器设定相切圆半径的最小值和最大值,以及增加碰撞的边界线。
step 3
通过Solver解算器进行碰撞模拟,其o输出端的数据为圆的半径数值。双击Boolean Toggle变为True即可运行程序,图片中白色区域对应圆的半径较大,黑色区域对应圆的半径较小。
上面案例中用到了Kangaroo2中的Circle Packing(圆堆图),即通过物理碰撞的方式模拟圆相切的过程,并且将图片灰度值作为控制圆半径大小的变量。最好选择黑白灰变化较为明显的图片,这样才会生成过渡较好的相切圆图案。改变Import Image运算器输入的图片,即可得到如下图所示的结果。
Circle Packing在计算机科学和数学领域具有广泛的应用,其生成算法可遵循多种逻辑。Kangaroo主要通过某个核心位置的吸引力将圆全部聚拢在一起,当相邻两个圆的圆心距离小于半径之和时,斥力开始发挥作用,直至达到动态平衡。
作为一种独特的几何形式,Circle Packing也常应用于艺术创作,用相切圆的排列构成画面,搭配渐变的颜色让画面更加丰富,使平面的元素具备立体的视觉延伸。
使用三维的Sphere Packing(球堆算法),球体间可自动调整缝隙大小,增加空间利用率。球堆算法可用于岩石、粉尘、颗粒流等分析。
Circle Packing还可应用于数据可视化领域,通过圆大小与位置的变化关系,可以直观的显示数据呈现的结果。
曲面上的Circle Packing
Circle Packing能够以非常美观的方式逼近任何曲面,2010年上海世博会“3D纸艺”展览中,这个半球形的纸板亭也将相切圆的元素应用到了实际项目,从设计到安装的每一步都由计算机辅助完成。
step 1
在Rhino中创建一个曲面,并将其拾取进GH中。首先在曲面上生成一定数量的随机点,作为初始圆的中心点。由于Kangaroo的组件无法直接计算曲面,需要用Mesh运算器将曲面转换为网格。
step 2
通过Onmesh运算器对点施加拉回到网格表面的作用力,通过SphereCollide运算器对圆施加一个相切的碰撞力,将两个作用力赋予Solver核心解算器,并用Boolean Toggle控制程序的运行与否。
step 3
为了保证相切圆能够贴合曲面表面,需要指定曲面的相切平面作为生成圆的基准平面。该步骤需要用到Surface Closest Point运算器提供随机点对应曲面的UV坐标,再通过Evaluate Surface运算器依据UV坐标输出随机点对应的切平面。
扎哈Thallus
在米兰设计展上,作为网红的thallus,居然能用犀牛的grasshopper设计出来。今天我们带来教程,学习一下大师的设计。
0 1
无约束生长
在平面图中画一个矩形区域,在矩形区域内随意绘制一些图形,将这个图形切分成2000段,每一段我们将其长度约束为5毫米。将其输入袋鼠主模拟器,控制其中的一个参数,就是长度约束。
0 2
边框约束
有了长度约束之后,打开袋鼠开关,线就会自动伸长,但这个时候会出现两个问题,线会超出区域的外面,另外线会自动交叉。
现在解决第一个问题,线会超出边框之外,于是矩形边框就有了作用,将其变为网格面,将所有的线段约束到网格面之内,施加的力大小为100,然后将其输入袋鼠主模拟器。
0 3
线段之间的碰撞约束
这样就可以看到线不会超出区域之外,但线与线之间还是会互相交叉,因此用碰撞约束作为条件,将线与线之间的最小距离设为0.5毫米,也就是说在0.5毫米范围以内的时候,线与线之间就会产生碰撞的力,从而避免线与线之间的交叉,而在0.5毫米之外的话,线与线之间是没有力的产生,因此它可以任意的扩张生长。
0 4
线段之间夹角的约束
多了这两个力之后,线不会交叉,也不会跑到区域之外,但是它的形状很不规则我们想把现在的线段变成曲线,要把无数根短小的折线变为曲线,就需要对线与线段之间有一个角度的约束。
我们知道如果两条线段相连接,如果是一条直线,那么它们的夹角为0度,或者也可以说是180度。而多条线段相连之后,多边形内部总会有一个夹角,随着多边形等分的段数越多,多边形边与边之间的夹角越大,最终趋近于一个圆,当分段数无限大的时候,边与边之间的夹角就可以无限的接近于0,因此我们将边与边之间的夹角直接设为0度,将力量设为100,连接之后就会产生如图所示的现象,得到最终的平面曲线模型 。
在平面上生成曲线模型之后,可以将其直接投射到曲面上。首先我们需要创建一个thallus的外形结构,作为点线分布自动生长的载体。
整个模型是通过 放样生成
两条曲线之间存在缩放和旋转两种变形
外曲面载体造型开始
01
先从缩放开始,在平面上建立多边形,将多边形的顶点找出进行缩放,缩放的规律按照抛物线,先放大再缩小。同时让所有点在Z方向进行移动,其规律已按照抛物线先上升再下降。
0 2
下一步对移动后的点进行旋转,旋转中心依然是原点,值得注意的是起点和终点不进行旋转,因此整体旋转之后,需要将起点和终点在原来的数列中进行替换。然后再连接成线进行放样,最终得到我们需要的造型曲面。
0 3
得到造型曲面之后,然后将平面和平面上的曲线映射到我们的造型曲面上,需要用到的运算器名称是map to surface。
0 4
我们可以增加曲线的密度,在这里我们只需要将线段切割为更多的线段就可以了,将点数设为5000,也就是将整个封闭的线段切割为5000的小段,然后让它生长,得到如下的图,最终将生成的曲线通过网格的pipe生成圆管,Bake到犀牛的界面中,曲线就已经生长完毕了。
可以修改需要分段的初始线段,变为圆形、星形等各种图形,这样就可以得到不同映射到造型曲面上的空间曲线了。 但是对电脑的要求很高,电脑配置中等的小伙伴就可以试着慢慢往上加,不要一次性加太多(因为一次性加的点数过多,分段数过多,首先是消耗电脑的运算速度和内存空间,再是需要调整上述4个参数,否则线与线之间可能会产生碰撞交叉)。
当然扎哈的模型分段数是相当的高,需要非常高配置的电脑。将造型曲面的边线提取出来,用网格生成圆管,然后再做一些平滑,就得到最终的成品模型了。
Thallus的成品模型由三部分组成,内部套上一个卡扣型的环状结构,起到固定作用,整个装置就可以立起来。
原创的模型设计完成之后。采用机械臂3d打印的方式,用可回收的绿色环保玉米制作的3d打印材料,打印完成之后用机器人上色。
项目原计划采用六轴机械臂进行控制,输入空间位置信息和喷涂颜色信息,不知道是因为项目时间原因,还是因为技术难度,最终没有上色,而是采用素色白色的材料圆形直接送往米兰的展馆。
千足虫插件应用
Millipede插件的主要功能是结构分析与优化,可对框架结构与壳结构进行快速的线性与弹性分析。该插件还可以通过拓扑优化的方法来优化结构,并以可视化的形式呈现优化结果。
Millipede插件的下载地址为:http://www.sawapan.eu/,安装完毕后,重启GH即可看到该插件出现在标签栏中。
Millipede插件最常用的功能就是用来构建Iso Surface,即通过矢量场或函数来构建等值面。通过Geometry Wrapper和Iso surface两个运算器构建等值面是比较便捷的方法,如图所示,在Rhino空间中确定区域内人的主要流线,通过Iso Surface算法生成行人交通流线效率最高的建筑形态。需要右键单击Bounding Box运算器,勾选Union Box选项生成一个整体的边界长方体。
Geometry Wrapper运算器需要与Iso surface运算器搭配使用,其提供构建等值面所需要的体数据。两个运算器对应的Box、Xres、Yres、Zres输入端需要赋予相同的数据。
Iso Surface运算器采用Marching Cubes算法实现等值面的提取,其V输入端所需要的体数据,既可以由Geometry Wrapper运算器提供,也可直接由场的强度值来提供,还可由函数直接提供。IsoValue输入端所需要的数据可参考V输入端的平均值。
点场构建 Iso Surface
场的强度值可直接作为Iso surface运算器V输入端的体数据,用以提取空间中磁场的等势面。该案例为通过点磁场构建Iso Surface的最终效果。
本案例的主要逻辑构建思路为首先在一个Box范围内,创建一定数量的三维等分点,并通过点磁场作用于三维等分点,由Iso Surface运算器提取出磁场范围内的等势面。为了避免改变参数过程中产生与主体结构不相连的网格,可通过网格面积来筛选出主体结构。以下为该案例的具体做法:
(1)用Center Box运算器创建一个边界范围,其X、Y、Z三个输入端分别赋予80、50、35。
(2)为了保证程序界面的简洁性,将Center Box运算器的输出数据赋予Box运算器,并将两个运算器同时命名为“边界Box”。后面的操作过程中可将这两个运算器的连线隐藏掉。
(3)通过Evaluate Box运算器创建三维等分点,由于Iso Surface运算器是采用Marching Cubes算法,为了保证每个方向上等分点与细分Box的数目保持一致,需要将单个方向细分Box的数量减去1作为等分点的数量。
(4)用Number Slider运算器创建一个40的数值,并将其赋予Number运算器,将两个运算器同时命名为“网格精度”,后面的操作过程中可将这两个运算器的连线隐藏掉。
(5)通过Subtraction运算器将网格精度的数值减去1,并将结果赋予Range运算器的N输入端。
(6)为了保证X、Y、Z三个方向生成相同数目的点,需要将Range运算器的输出数据通过Cross Reference运算器进行交叉对应,可通过放大运算器单击“+”来增加输入端的数量。
(7)将Cross Reference运算器的三个输出端数据分别赋予Evaluate Box运算器的U、V、W三个输入端。
(8)依据Populate 3D运算器在边界Box范围内创建90个随机点,其S输入端随机种子的数值可设定为3。
(9)用Gene Pool运算器创建四个数值,分别为1.80、-2.50、2.00、-1.80。由于该运算器的默认数值个数为10,且区间范围是0-100,可通过双击该运算器改变其数据的个数与区间范围。
(10)用Repeat Data运算器对上一步中创建的四个数据进行复制,复制后数据的总数与随机点的数量保持一致。
(11)通过Point Charge运算器创建点磁场,以随机点作为磁场的中心点,复制后的数据作为磁场的强度值。
(12)用Merge Fields运算器将全部的点磁场进行合并。
(13)通过Evaluate Field运算器测量每个三维等分点位置所对应的磁场强度。
(14)将边界Box赋予Iso Surface运算器的Box输入端;将三维等分点所处位置的磁场强度值赋予其v输入端;将网格精度值赋予其Xres、Yres、Zres三个输入端。
用Average运算器测量磁场强度的平均值为0.028662,因此IsoValue输入端的数值大小应与该值相差不大,该案例赋予的数值为0.012001,;将True布尔值赋予其Merge输入端,使生成的网格更圆滑。
(15)在调整IsoValue输入端变量的过程中,会出现部分网格未与主体相连的情况,为了使得到的结果只有一个整体的网格形体,可通过Disjoint Mesh运算器将不连接的网格进行分割。
(16)用Mesh Area运算器测量分割后全部网格的面积。
(17)通过Sort List运算器将网格按照面积大小进行重新排序。
(18)由于整体网格形体的面积是最大的,但是Sort List运算器是按照由小到大的顺序进行排序。为了方便选择,可通过Reverse List运算器将列表进行反转,这样面积最大的网格形体就位于列表中的第一个位置。
(19)用List Item运算器提取列表中索引值为0的网格作为最终结果。
(20)如果对最终的网格形体有一定的厚度要求,可将其Bake到Rhino空间,用偏移网格命令对其加厚处理。
(21)改变IsoValue输入端的数值,并且只显示Iso Surface运算器的输出结果,即可看到整个网格形体生成的过程。
高效交通流线模拟
利用涌向理论,预测大规模集群生物在复杂空间中的行为模式,得到相关数据并通过参数化设计方法,可创建交通流线应用效率较高的空间形体。
由Zaha Hadid事务所设计的墨尔本弗林德斯火车站,是一个多模式的交通枢纽和具有吸引力的城市目的地。该方案通过对现有的遗址站台进行改造,恢复其固有的属性,并建立和连接新的人行通道,可以重新配置建筑周边街道的交通网络。
GH中的Shortest Walk插件可构建两点间的最短路径,然后通过Millipede(千足虫)插件来拟合网格形体。本案例的主要步骤为:
(1)首先在空间中确定两个点,作为交通路径的核心枢纽
(2)创建一组三维随机点,模拟建筑空间的不同功能分区
(3)创建一组随机点到两个核心枢纽点的最短路径组合
(4)用Geometry Wrapper运算器将曲线进行包裹
(5)通过Iso surface运算器可依据Isovalue值拟合出网格
本案例中采用较为通用的方法生成交通流线,但是在实际设计过程中,路径的起始点和终点往往需要手动调整,方便创建由人的行为轨迹影响建筑空间形态。
极小曲面应用
在数学概念中,极小曲面指的是平均曲率为零的曲面。随着计算机图形学的发展,极小曲面以其丰富的形体变化和流动性,被越来越多的应用于不同的设计领域。
极小曲面的形体可通过IsoSurface算法进行模拟,其V值可直接由极小曲面方程式提供,由于极小曲面公式的发现属于数学领域,设计行业可直接使用现有的公式。下面将介绍几种常用的极小曲面:
(一)Gyroid Surface
Gyroid Surface的公式为:cos(x)*sin(y)+cos(y)*sin(z)+sin(x)*cos(z)。
该案例的主要逻辑构建思路为,首先在一个Box范围内创建一定数量的三维等分点,并由极小曲面公式确定等值面的范围,再通过Iso Surface算法以网格的形式拟合等值面。最后用椭球体来切割网格,可生成圆滑效果的极小曲面,以下为该案例的具体做法:
(1)用Center Box运算器创建一个控制密度的长方体,其X、Y、Z三个输入端分别赋予9、8、6。需要注意的是此处创建的长方体并不是极小曲面的边界范围,而是用来控制其密度的参数,可将赋予X、Y、Z三个输入端的数值命名为“密度控制”。
(2)用Number Slider运算器创建一个大小为30的数值,并将其赋予Number运算器,将两个运算器同时命名为“网格精度”。为了保证程序界面的简洁性,可将两个运算器的连线隐藏掉。
(3)通过Subtraction运算器将名称为“网格精度”的数值减去1,并将结果赋予Range运算器的N输入端。
(4)将Range运算器的输出数据通过Cross Reference运算器进行交叉对应,可通过放大运算器单击“+”来增加输入端的数量。
(5)将Cross Reference运算器的三个输出端数据分别赋予Evaluate Box运算器的U、V、W三个输入端。
(6)用Deconstruct运算器将三维等分点分解为X、Y、Z坐标。
(7)将分解后的X、Y、Z坐标分别赋予Evaluate运算器的x、y、z输入端,可通过放大运算器单击+来增加z输入端。
(8)在Panel面板中输入“cos(x)*sin(y)+cos(y)*sin(z)+sin(x)*cos(z)”,并将其赋予Evaluate运算器的F输入端。
(9)用Center Box运算器创建一个边界范围长方体,将6、5、4这三个数值分别赋予其X、Y、Z输入端,需要注意的是此处建立的长方体才是极小曲面的边界范围。
(11)用Smooth Mesh运算器将生成的网格形体进行圆滑处理。
(12)由Volume运算器提取边界Box的几何中心点。
(13)通过Sphere运算器依据几何中心点创建一个球体。
(14)由Scale NU运算器对球体进行三轴缩放,其X、Y、Z三个方向的缩放比例可分别设定为:4.5、4、3。此处读者可自行设置缩放比例因子,只要保证其范围不超过极小曲面边界即可。
(15)通过Mesh Brep运算器将缩放后的球体转换为网格。
(16)通过Mesh Split运算器用球体网格切割极小曲面网格。
(17)极小曲面网格被分割后会生成两部分,用List Item运算器提取索引值为1的网格,即可得到非规则形体的极小曲面。
(18)如需创建有厚度的网格形体,可将得到的结果Bake到Rhino空间,用偏移网格命令对其加厚处理。
(18)改变名称为“密度控制”中的X、Y、Z变量数值,同时调整IsoValue参数,即可得到不同密度下的极小曲面。
(二)Neovius Surface
由于构建极小曲面的方法是一致的,只需将程序中的公式进行替换,同时需调整密度控制的参数、以及IsoValue的参数。
Neovius Surface的公式为:3*(cos(x)+ cos(y) + cos(z)) + 4*cos(x) * cos(y) * cos(z)。将Gyroid Surface案例中的曲面公式替换为Neovius Surface的公式,同时将密度控制的X、Y、Z三个参数调整为7、6、5,即可得到如图所示的结果。
(三)Schwarz P Surface
Schwarz P Surface的公式为:cos(x)+cos(y)+cos(z)。将Gyroid Surface案例中的曲面公式替换为Schwarz P Surface的公式,同时将密度控制的X、Y、Z三个变量调整为9、7、6,即可得到如图所示的结果。
(四)Split P Surface
Split P Surface的公式为:1.1*(sin(2*x)*cos(y)*sin(z)+ sin(2*y)*cos(z)*sin(x) + sin(2*z)*cos(x)*sin(y)) - 0.2*(cos(2*x)*cos(2*y) +cos(2*y)*cos(2*z) + cos(2*z)*cos(2*x)) - 0.4*(cos(2*y) + cos(2*z) + cos(2*x))。将Gyroid Surface案例中的曲面公式替换为Split P Surface的公式,同时将密度控制的X、Y、Z三个变量调整为7、5、4,即可得到如图所示的结果。
(五)Lidinoid Surface
Lidinoid Surface的公式为:(sin(x)*cos(y) * sin(z) + sin(y)* cos(z) * sin(x) + sin(z)* cos(x) * sin(y)) -(cos(x)*cos(y) + cos(y)*cos(z) + cos(z)*cos(x)),将Gyroid Surface案例中的曲面公式替换为Lidinoid Surface的公式,并将密度控制的X、Y、Z三个变量调整为8、6、4,即可得到如图所示的结果。
(六)I-WP Surface
I-WP Surface的公式为:cos(x)*cos(y)+ cos(y)*cos(z) + cos(z)*cos(x) - cos(x)*cos(y)*cos(z)。将Gyroid Surface案例中的曲面公式替换为I-WP Surface的公式,并将密度控制的X、Y、Z三个变量调整为7、6、4,同时需要将IsoValue的参数调整为-0.23,即可得到如图所示的结果。
(七)Scherk's Surface
Scherk's Surface的公式为:4*sin(z)-sin(x)*sinh(y),其中sinh为双曲正弦函数。将Gyroid Surface案例中的曲面公式替换为Scherk's Surface的公式,并将密度控制的X、Y、Z三个变量调整为4、6、8,即可得到如图所示的结果。
(八)Skeletal Surface
Skeletal Surface的公式为:cos(x)*cos(y)+ cos(y)*cos(z) + cos(x)*cos(z) - cos (x) - cos (y) - cos (z)。将Gyroid Surface案例中的曲面公式替换为Skeletal Surface的公式,并将密度控制的X、Y、Z三个变量调整为6、6、6,同时需要将IsoValue的参数调整为-0.9,即可得到如图4-106所示的结果。
极小曲面的形式有很多种,读者可在该网站查找关于极小曲面的公式以及详细信息:http://www.msri.org/publications/sgp/jim/geom/level/library/triper/index.html。同时可尝试改变公式中的一些参数,虽然改变参数后创建的形体并非标准的极小曲面,但是同样可生成具有数学逻辑的结构体,如图4-107所示为改变公式中的一些变量生成的结果。
极小曲面模型的3D打印
将创建的两个极小曲面模型导出为STL模型,然后将模型导入到Cura软件中,通过读取模型的断面信息,用打印材料将这些断面进行逐层叠加。
3D打印机读取模型完毕后,即可开始进行打印。本次打印所选的材料为 PLA(聚乳酸),由于 PLA是由植物发酵聚合而成,因此其与传统塑料相比,具有更低碳、绿色环保的特点。
拓扑优化
拓扑优化通过显示材料的分布情况,可在设计空间找到最佳的分布方案,并提供精简的结构设计指导。
拓扑优化在工业设计中的应用要早于建筑领域,特别是在航空航天、汽车、半导体医学、军工等行业,因其对零件的强度与重量有着更高的要求,但是仅凭工程直觉和经验是很难得到满意结果的。借助有限元分析提供的建议,可将优化结果逐步演化为最终的产品,这也改变了传统结构工程师的设计思维。
借助Inspire软件对零件进行拓扑优化,通过设定荷载的大小与位置,由软件计算出合理的材料布局。将优化后的数字模型进行光顺处理并用于数位加工,再经过张力测试和光学检验,即可得到得到轻量化结果。
随着3D打印等数字化建造技术以及有限元技术的发展,建筑的空间将不再拘泥于传统的格局。将拓扑优化的方法应用于建筑结构设计,能够使结构本身就具有强有力的艺术表现力,同时允许建筑师在方案初期即可引入结构优化的理念。在满足受力要求的情况下,将设计中的多余材料减去,能够很大程度上缩短工程周期与节约成本。
借助Inspire软件对建筑空间进行拓扑优化,通过设定荷载的大小与位置,由软件计算出合理的支撑布局,同时还可进行有限元分析。
Millipede插件也提供了拓扑优化与有限元分析的功能,其流程主要包含四部分:荷载与边界条件定义、集合定义信息、解算程序、得到结果。该案例为通过Millipede插件进行拓扑优化与有限元分析的案例。
该案例的主要逻辑构建思路为首先定义边界条件、支撑部件、施加压力部件,然后由Topostruct 3D model运算器集合定义后的全部组件,再通过Topostruct 3D solver运算器进行解算生成有限元模型,最后可通过3D Iso Mesh运算器生成网格结果,还可对模型进行应力分析。以下为该案例的具体做法:
(1)绘制一个长宽高分别为36米、24米、22米的长方体,并用Brep运算器将其拾取进GH中,由3D boundary Region运算器将该长方体定义为设计环境,并将该部分命名为“边界范围”。
(2)在适当位置,绘制两个长方体,并用Brep运算器将其拾取进GH中,为了区分组件,可将这两个长方体通过Custom Preview运算器赋予绿色。由3D Support Region运算器将这两个长方体定义为支撑结构,并将MillC_StockSupportType运算器赋予3D Support Region运算器的SUP输入端,提供有限元分析的材料定义。最后将该部分命名为“支撑结构”。
(5)通过Topostruct 3D model运算器将定义的全部组件进行合并,其XR输入端赋予22的分辨率数值,生成有限元模型结果。
(6)将Topostruct 3D model运算器的输出数据赋予Topostruct 3D solver运算器的FE输入端,并将O、S、T三个输入端分别赋予以下数值:4、0.13、0.257。其O输入端为优化迭代次数、S输入端为圆滑系数,T输入端为优化结果的密度百分比。
(7)将Topostruct 3D solver运算器的FE和maxu输出端数据分别赋予3D Iso Mesh运算器的FE和D输入端,并将其Iso输入端赋予数据0.33,其输出数据为经过拓扑优化后的网格结果。
右键单击3D Iso Mesh运算器,可选择不同模式下的显示结果,包含STIFFNESS_FACTOR(刚度系数)、VONMISES _STRESS(等效应力)、PRINCIPAL_STRESS(主应力)、DEFLECTION(位移应力),该案例使用的显示结果为VONMISES _STRESS。
(8)通过3D Mesh Results运算器可实现应力的可视化,将Topostruct 3D solver运算器的FE和maxu输出端数据分别赋予3D Mesh Results运算器的FE和D输入端。
(9)经过有限元分析后可提取应力进行分析,为了更清楚的查看应力的分布情况,可通过3D Cell Results和Stress Lines两个运算器获取应力线。
来源:犀牛参数化云平台
#往期推荐#
#干货 | 山地建筑基础设计总结
#干货 | 剪力墙模板免开洞施工?示例学习!
#干货 | 冬期施工各项工程注意什么?要点交底!
- END-
融媒体中心
您可以通过微店购买我们的期刊:
感谢您的关注和分享
你 “在看”我吗?
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » html设置渐变色(html中渐变效果怎么弄)
1 评论