ArcGIS软件支持导入的三维模型格式


高级版CityEngine支持导入 

.dae、.dxf、.gdb、.kml、.kmz、.obj、.osm、.fbx、.shp。

ArcMap和ArcGIS Pro支持导入.3ds、.wrl、.skp、.flt、.dae、obj。


了解软件支持导入的格式很重要,很多用户将数据导出为.3ds格式,ArcMap和ArcGIS Pro支持导入,但是CityEngine不支持。DAE是非常有用的格式,因为它是建立在一个开放的标准XML模式之上的,支持网格几何元和纹理。


如果要在ArcGIS平台中使用这些格式的模型,制作时需要注意以下几点:


  • 基于物体的轮廓建立真实大小的模型,以避免模型导入后的比例缩放操作。

  • 每个物体保存成单个的文件,导入后便于单个模型的移动。

  • 所有模型“贴图”尺寸要保证是“2N次方”的尺寸,如(256×256,512×512 等)。

  • 尽量不要使用“镜像”物体,镜像容易导致数据丢失。

  • 树木、建筑等模型的中心点需要在模型底部中心位置。

  • 需要记录模型的坐标系及中心位置。在导入到ArcGIS平台时,可以直接输入模型的坐标系及中心点位置。

ArcGIS平台中不能直接读取这些格式的模型,需要先将这些模型转为Multipatch(多面体)或Shapefile格式。Multipatch可以保存模型纹理信息,Shapefile格式不支持存储纹理。


将三维模型转换为Multipatch,有三种方法:


  • 直接转为Multipatch。适合于处理大量的具有正确位置的三维模型。

  • 编辑状态下替换模型。适合于新内容的创建或现有多面体的交互式更新。

  • 将符号化点转为Multipatch。适用于数量较少的不具有正确位置的三维模型。还适用于使用重复符号进行 3D 渲染的图层,例如包含少量住宅模型的计划建筑区域。


1、将模型直接转为Multipatch


最快的方法是直接使用GP工具Import 3D Files(导入3D文件)。


ArcGIS中如何导入三维模型_java


此工具可以指定模型的坐标系,如果不知道模型的坐标系是什么,建议设置Web Mercator坐标系。如果不指定坐标系,结果Multipatch的坐标系是Unknown,Pro场景中不能显示Unknown坐标系的数据。


不论三维模型的实际位置是否正确,导入到Pro后,Multipatch都在(0,0)的位置。


ArcGIS中如何导入三维模型_java_02


这是一个已知问题。NIM099771 -Using the Import 3D Files tool with the placement points parameter to define a spatial reference places all models at 0,0 instead of on the points.


使用Import 3D Files导入模型时,可以使用点要素类指定模型的实际位置。如果点要素类的坐标系是Web Mercator,那么此工具中的坐标系参数就定义Web Mercator,也就是坐标系参数需要和点要素的空间参考相匹配。点要素类中新建文本型字段,存储各点相关联的 3D 模型的名称,批量导入时可以将模型放置到与之匹配的点上,点的高程值是地面的实际高程值。


ArcGIS中如何导入三维模型_java_03


结果有一半模型被埋在地下了。这个和图层的高程类型有关。


ArcGIS中如何导入三维模型_java_04


修改Multipatch图层的高程类型为On the Ground(地面上)就可以了。地面上,适用于坐落在地面上的要素,如路灯、树等。


ArcGIS中如何导入三维模型_java_05


如果图层的高程类型选择是相对于地面的,一种方法是使用Move to修改Multipatch的Z值。


ArcGIS中如何导入三维模型_java_06


另一种方法是修改点要素类的高程值。然后再使用Import 3D Files导入。


ArcGIS中如何导入三维模型_java_07


2、编辑状态下替换模型


Replace Multipatch从工具名就可以看出,只适用于多面体要素。


ArcGIS中如何导入三维模型_java_08


3、将符号化点转为Multipatch


详细可参考ArcGIS Pro中如何将点替换为3D模型→http://zhihu.esrichina.com.cn/question/18920



关于纹理

很多问题都是关于纹理丢失,先说几点注意事项:


  1. 模型需导出为Multipatch格式存储在.gdb(文件型地理数据库)中,才能保留纹理信息。

  2. 3ds不能存储纹理,纹理图片需要和3ds放在同一文件夹中。

  3.  wrl的纹理数据要放在wrl上层目录的maps文件夹中,使用Import 3D Files导入时,需勾选Y is Up。10.1及10.2.1导入wrl不能保留纹理是已知问题。Bug NIM098234 Import 3D File does not import textures from wrl file created using Geomagic. 10.5.1版本中测试已修复。

  4.  obj及其贴图的路径及文件名尽量避免中文、特殊符号。