3D纹理实例

原文发布时间:2010-07-03

作者:毛毛虫

这部分主要是介绍下FME如何实现3D纹理的操作。

为了说明FME2010如何操作纹理,介绍下我们核心团队的开发者Brittany Zenger创建的两个实例。

这种方法是以影像作为整个场景的背景(如直接从JPEG读模块连接到PDF写模块)。当我们直接发送栅格到PDF3D,写模块转换他们为含有纹理的表面。

例1:全球DEM的示例

我们的原数据是一个1*1网格的全球高程的csv文件和全球的JPEG格式图片,现在我们想用这个csv文件转换为TIN 3D表面,并以这个JPEG作为这个表面的纹理。

原JPEG格式文件如图:

1*1网格的全球高程的csv文件,如图:


把这个要素集加入到工作空间,此时注意下csv的设置(第一行作为列名):


每个要素的高程相对于它的左边来说都太大,我们可以使用ExpressionEvaluator转换器把Z值适当的缩小些(比如缩小500倍),然后使用3DpointReplacer转换器把要素转换为3D要素,再使用TINGenerator转换器生成不规则三角网,此时生成的3D表面如图:


此时我们可以使用AppearanceAdder来设置纹理。

添加上图的JPEG文件作为整个输出3D要素的表面。

例2: 采用两个夏威夷岛 Lanai Molokai 的等高线数据产生 TIN 表面,添加了部分 landsat 影像作为每个表面的纹理
原JPEG图片:

    

与图片坐标匹配的两个岛的等高线如图:

    

这两个图层的处理方法相同,我们以lancntrs为例。

为了提高计算速度,我们先使用转换器把Generalizer转换器进行抽稀,然后使用3Dforcer转换器转换为3D点,然后使用TINGenerator转换器生成TIN,如图:

      (图片已丢失

之后使用BoundingBoxReplacer转换器生成需要裁减的矩形,使用Clipper转换器裁减夏威夷岛的jpeg图片,作为纹理,最后使用AppearanceAdder转换器把纹理添加到TIN即可,如图:

    

同样处理另一个图层,最后得到的结果如下:

图片已丢失