来自Safe Webinar
整理:小新
通常,我们创建3D模型的方法为:以dwg平面图作为底图,按照测量高度进行拉伸,并根据实地采集照片对模型进行精细化和贴图处理,为了让3D模型更加美观逼真,还需要做渲染、灯光等复杂的处理。这些往往通过专业的三维建模软件实现,如3D MAX、MAYA、SketchUp等。
对FME而言,我们用它来创建3D模型的关键在于快速、灵活。在FME中,支持多种格式3D模型格式,而且可以利用多种格式来创建3D模型,包括前面提到常用的dwg,甚至还可以利用Excel、Shp等。
前面已经有一篇在FME中使用dwg来创建3D模型的例子,今天这里我们介绍Excel到3D 模型。
原始数据:
1) Excel文件:
该文件通过填充excel中的格子来表现3D模型的平面轮廓,填充时使用了两个值:x和y。x代表外墙体,y代表内墙体。如下图所示:
2) 内墙和外墙的纹理图片
外墙 内墙
建模技术路线:
读取excel,将包含x,y的每一个格子分解为一个矩形要素(保证相邻的格子生成的矩形有公共边),然后把相邻的同类(值相同)矩形进行融合,接着指定高度进行拉伸。再分别对外墙(值为x)和内墙(值为y)进行贴图。
步骤:
1、读取excel文件,每一行即为一个要素,使用conter对要素计数同时获取到行号(Row_value)。
2、每个要素包含多个属性,属性名即excel文件的列名(列名为F0、F1等这样的方式),属性值的范围为x或y。将要素的每个属性进行分解,使每个包含x或y的格子成为一个个要素(此时的要素无几何图形)。
注意:分解要素的同时,可通过列名获取列号(Column_value)
3、 利用行列号,为每个格子创建矩形。通过添加顶点的方式创建矩形。假设矩形的四个顶点如下:
每个矩形四个点的坐标计算公式为:
点1:x=Column_value*CELLSIZE, y=Row_value*CELLSIZE
点2:x=(Column_value+1)*CELLSIZE, y=Row_value*CELLSIZE
点3:x=(Column_value+1)*CELLSIZE, y=(Row_value+1)*CELLSIZE
点4:x=Column_value*CELLSIZE, y=(Row_value+1)*CELLSIZE
其中 CELLSIZE是要创建的矩形大小,可通过发布参数设定。
4、将包含相同值(x或y)的矩形融合,融合后此时的图形如下所示。
该图形共6条边,其中值为x的为外墙,内墙有值为y的5条边组成
5、使用extruder对图形按照指定高度拉伸。然后进行几何转换,并打散聚合。
几何类型转换和聚合打散均是为了在fme中对模型进行贴图的准备:
6、根据值进行分流,将外墙(x)和内墙(y)分别贴上对应的纹理:
7、输出保存为3D PDF
按照我们常规的3D建模流程,我们或许根本没有想过可以使用excel来创建3D模型。但在FME中,一切都变得可能。
本文只是抛砖引玉,做了个简单的建模,说明FME中进行3D建模的另外一种方法。也许您的实际生产中,很多时候缺少dwg平面图,很多时候的资料在别的3D建模软件中根本没法使用。这样的时候,你不妨试试使用FME,也许会有意想不到的惊喜。