斯潘8
斯潘4
本文旨在通过引导您完成一个扩展练习来使用三维城市模型,从而概述FME的三维功能。
在这个例子中,我们将使用一个城市的Autodesk 3DS模型,为屋顶和墙壁添加单独的纹理,允许更真实的观看。我们将把这个模型写成3D PDF格式以供查看。
Interopolis 3D模型是一个简单的Autodesk 3DS模型,位于市中心的一小部分。
选择C:\fmedata\data\3d\city model\interopolis.3ds作为源数据集。在参数窗口中,确保“移动到世界坐标系”设置为“是”。这将导致FME读取.wld和.prj文件,并将我们的城市模型移到德克萨斯州的飞机上。
在FME数据检查器中查看的源3DS模型。
这个模型有一个单一的特征,包含单个网格中的每个建筑,我们需要将这些建筑分为各自的功能,这样我们就可以为每个建筑提供一个最终城市XML的ID。添加解聚合变压器将网分解成其集合。
将count输出属性设置为“建筑ID”使用计数器.这将给每个建筑一个ID号。在应用纹理之前,我们需要进一步分解我们的功能,身份证号码有助于我们以后把它们放回一起。
使用几何矫形器将几何体类型设置为'FME_复合材料_表面'.网格几何由单个曲面组成,不能满足我们的需要,因为我们的屋顶和墙壁有不同的纹理。我们可以用几何坐标把我们的建筑转换成多表面的几何图形,由多个面聚合成一个特征组成。
既然建筑物由多个面组成,我们可以将具有分解器的多重曲面分解为各个特征,并为建筑的不同部分设置不同的外观。
一定要设置“分离复合材料”和'分解实例'到是的从每个复合实体创建单个实体。
这一步对于下一步很重要,这样我们就可以在planarityfilter中通过平面端口过滤特性。对于平面特征,几何图形的所有点必须位于同一平面上,所以我们需要分解合成并分解实例来创建这些平面。
下一步,我们需要将屋顶和墙壁分开,以便对它们应用不同的纹理。我们可以通过使用平面滤波器 计算曲面法线,然后测试过滤器 根据这些曲面法线过滤出屋顶和墙。
6.1计算表面法线
在平面过滤器中,选择'表面正常输出'并设置'暴露表面正常'到是的.这将暴露z的“曲面法线”属性(表面凹凸透镜)为了在下一步区分屋顶表面和墙壁,我们需要对其进行过滤。幸运的是,这个街区没有尖顶屋顶!
6.2过滤掉屋顶和墙壁
下一步测试过滤器变压器,我们将使用曲面法线来确定面是墙还是屋顶。一般来说,一堵墙的表面应为0,屋顶的表面面积应为1,和地面,表面积-1.然而,因为我们没有建筑的基面(它们就像打开的倒置的盒子)。我们希望不是墙的东西都是屋顶。因此,我们将使用下表中的参数:
试验条件 | 输出端口 | |
如果 | _表面尺寸>1e-5 _表面尺寸<-1e-5 |
屋顶 |
否则 |
|
墙 |
进入试验条件时,对于左边的值,你可以用下箭头,并选择属性值:“surfacenormalz”。
输出端口的测试条件:车顶。
7.1为屋顶添加一个jpeg文件:
现在我们需要将纹理引入工作区。选择三个屋顶纹理中的一个作为源数据集,并将第一个jpeg阅读器添加到工作区。
7.2为墙壁添加jpeg文件:
对于第二个jpeg阅读器,我们想引入墙壁纹理。为源数据中的墙纹理选择三个图像中的一个。
我们将使用两个上诉律师要添加外观,或光栅纹理,分别通向屋顶和墙壁。
连接屋顶纹理,jpeg屋顶功能类型,到外观设计师的外观港,以及从testfilter到apparanceseter的几何端口的屋顶端口。换言之,屋顶的外观由屋顶的几何结构决定,以及屋顶纹理的外观。
对墙做同样的事情。将jpeg墙功能类型连接到外观端口,以及测试过滤器的壁口到外观过滤器的几何口。
在屋顶和墙壁上添加纹理应该是这样的。
现在我们已经将外观应用到每个表面,我们希望将这些表面合并在一起,以便每个建筑都有一个单独的特征。我们会用聚合器变压器,设置“分组”到“布丁林德”.
使用几何矫形器,设置'几何类型'到'FME_复合材料_表面'.我们现在有一个多曲面几何体,在FME中很容易使用,因为我们可以把它分解成可以操纵的单独的面孔,但工作起来可能有点慢,尤其是当以某种格式书写时。通过将几何体类型更改为复合曲面,我们让3D作者知道他们可以在一个事务中处理每个多个曲面,而不是在单独的事务中处理每个曲面。
添加3D PDF阅读器并设置输出位置和文件名,然后运行翻译。如果您希望多次运行翻译,记住在运行之间关闭PDF输出。
祝贺你!您已经成功转换了Interopolis的3DS城市模型,添加了独立的屋顶和墙壁纹理,写了一份3D PDF。
这里有一个可能的输出,使用屋顶纹理3,以及3D PDF中的墙纹理1。
以下是3D PDF中不同墙面纹理(纹理3)的特写。
?2019安全亚搏在线软件公司|合法的