利用FME创建3D模型之从Excel到3D

时间:2024-03-15 18:55:39

来自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代表内墙体。如下图所示:

利用FME创建3D模型之从Excel到3D

2)        内墙和外墙的纹理图片

利用FME创建3D模型之从Excel到3D

                   外墙                                                   内墙

建模技术路线

读取excel,将包含x,y的每一个格子分解为一个矩形要素(保证相邻的格子生成的矩形有公共边),然后把相邻的同类(值相同)矩形进行融合,接着指定高度进行拉伸。再分别对外墙(值为x)和内墙(值为y)进行贴图。

步骤

1、读取excel文件,每一行即为一个要素,使用conter对要素计数同时获取到行号(Row_value)。 

2、每个要素包含多个属性,属性名即excel文件的列名(列名为F0、F1等这样的方式),属性值的范围为x或y。将要素的每个属性进行分解,使每个包含x或y的格子成为一个个要素(此时的要素无几何图形)。

注意分解要素的同时,可通过列名获取列号(Column_value)

利用FME创建3D模型之从Excel到3D

3、 利用行列号,为每个格子创建矩形。通过添加顶点的方式创建矩形。假设矩形的四个顶点如下:

利用FME创建3D模型之从Excel到3D

每个矩形四个点的坐标计算公式为:

点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是要创建的矩形大小,可通过发布参数设定。 

            利用FME创建3D模型之从Excel到3D

利用FME创建3D模型之从Excel到3D

4、将包含相同值(x或y)的矩形融合,融合后此时的图形如下所示。

该图形共6条边,其中值为x的为外墙,内墙有值为y的5条边组成

利用FME创建3D模型之从Excel到3D

5、使用extruder对图形按照指定高度拉伸。然后进行几何转换,并打散聚合。

几何类型转换和聚合打散均是为了在fme中对模型进行贴图的准备:

利用FME创建3D模型之从Excel到3D

利用FME创建3D模型之从Excel到3D


6、根据值进行分流,将外墙(x)和内墙(y)分别贴上对应的纹理:

利用FME创建3D模型之从Excel到3D


7、输出保存为3D PDF

利用FME创建3D模型之从Excel到3D

按照我们常规的3D建模流程,我们或许根本没有想过可以使用excel来创建3D模型。但在FME中,一切都变得可能。

本文只是抛砖引玉,做了个简单的建模,说明FME中进行3D建模的另外一种方法。也许您的实际生产中,很多时候缺少dwg平面图,很多时候的资料在别的3D建模软件中根本没法使用。这样的时候,你不妨试试使用FME,也许会有意想不到的惊喜。