span8
span4
本文旨在通过带领您通过一个扩展练习来使用一个3D城市模型,从而概述FME的3D功能。
在这个例子中,我们将使用一个Autodesk 3DS城市模型,在屋顶和墙壁上添加单独的纹理,以获得更真实的视觉效果。我们将把这个模型写成3D PDF格式以供查看。
Interopolis 3D模型是一个简单的Autodesk 3DS模型的一小部分市中心。
选择C: \ FMEData \ \ 3 d \ \ interopolis.3ds城市模型数据作为源数据集。在Parameters窗口中,确保‘Move to World Coordinate System’被设置为yes。这将导致FME读取。wld和。prj文件,并将我们的城市模型移动到德州飞机上。
在FME数据检查器中查看源3DS模型。
这个模型有一个单一的功能,在一个单独的网格中包含每一个建筑,我们需要把建筑分成它们自己的功能,这样我们就可以我们可以给每个建筑一个ID,为我们最后的CityGML。添加Deaggregator将网格分解成其聚合体。
将Count输出属性设置为“BuildingID”使用计数器.这将为每个建筑物提供一个ID号。在应用纹理之前,我们需要进一步分解我们的特征,ID号将帮助我们在以后将它们重新组合在一起。
使用GeometryCoercer设置几何类型为“fme_composite_surface”.网格几何结构由单一的表面组成,不能满足我们的需求,因为我们的屋顶和墙壁有单独的纹理。我们可以使用geometrycoer将我们的建筑物转换成多表面的几何图形,这些几何图形由几个面聚合成一个单一的特征。
既然建筑是由多个面组成的,我们可以用Deaggregator将多个面分解成单独的特征,并为建筑的不同部分设置不同的外观。
一定要设置将复合材料的和“爆炸实例”来是的从每个复合固体中创建单个固体。
这一步对于下一步很重要,这样我们就可以通过PlanarityFilter中的Planar端口来过滤特性。为了使一个特性是平面的,一个几何图形必须使它的所有点都位于同一个平面上,因此我们需要拆分组合和爆炸实例来创建这些平面。
接下来,我们需要将屋顶与墙壁分开,将不同的纹理应用到屋顶上。我们可以用PlanarityFilter计算曲面法线,然后TestFilter根据这些表面法线来过滤屋顶和墙壁。
6.1计算曲面法线
在PlanarityFilter中,选择“表面正常输出”并设置暴露表面正常的来是的.这将公开Z (_surfaceNormalZ),我们将需要过滤,以区分屋顶表面和墙壁在下一步。幸运的是,这个街区没有尖顶!
6.2过滤屋顶和墙壁
下一个的TestFilter变压器,我们将使用表面法线来确定表面是墙还是屋顶。通常,墙壁的表面粗糙度应该为0,屋顶的表面粗糙度应该为1,地面的表面粗糙度应该为-1。然而,由于我们没有建筑的基础表面(它们就像颠倒的盒子),我们希望所有不是墙壁的东西都成为屋顶。所以我们将使用下表中的参数:
测试条件 | 输出端口 | |
如果 | _surfaceNormalZ > 1 e-5 _surfaceNormalZ < 1 e-5 |
屋顶 |
其他的 |
|
墙 |
在输入测试条件时,对于左边的值,您可以使用向下箭头,并选择属性值:' _surfaceNormalZ '。
输出端口测试条件:炉顶。
7.1为屋顶添加一个JPEG文件:
现在我们需要把纹理带到工作空间中。选择三种屋顶纹理中的一种作为源数据集,并将第一个JPEG阅读器添加到工作空间。
7.2为墙壁添加一个JPEG文件:
对于第二个JPEG阅读器,我们希望引入墙壁纹理。在源数据中为墙壁纹理选择三个图像中的一个。
我们将使用两个AppearanceSetters分别在屋顶和墙壁上添加外观或栅格纹理。
将屋顶纹理(JPEG屋顶特征类型)连接到外观设置器的外观端口,并将屋顶端口从TestFilter连接到外观设置器的几何端口。换句话说,屋顶的外观取决于屋顶的几何形状和屋顶纹理的外观。
对墙壁执行相同的操作。将JPEG墙壁特性类型连接到外观端口,将TestFilter的墙壁端口连接到外观设置器的几何端口。
在屋顶和墙壁上添加纹理应该是这样的。
现在我们已经将外观应用到每个表面,我们想要将表面合并在一起,这样每个建筑又有了一个单独的特征。我们会用聚合器变压器,并设置“集团”来“BuidlingID”.
使用GeometryCoercer,设置“几何类型”来“fme_composite_surface”.我们目前有一个多表面几何,这是很容易在fme的工作,因为我们可以把它分解成单独的脸,可以操纵,但它可以有点慢,以工作时,特别是写某些格式。通过将几何类型更改为composite_surface,我们让3D作者知道他们可以在单个事务中处理每个多表面,而不是在单独的事务中处理每个表面。
添加3D PDF阅读器并设置输出位置和文件名,然后运行翻译。如果希望多次运行翻译,请记住在运行之间关闭PDF输出。
恭喜你!你已经成功地转换了一个3DS城市模型,添加了独立的屋顶和墙壁纹理,并写出了一个3D PDF。
下面是一个可能的输出,使用3D PDF中的屋顶纹理3和墙壁纹理1。
这是一个不同的墙壁纹理(纹理3)在3D PDF的特写。
©2019安全亚搏在线软件公司法律