作者:haixin
##背景知识
iDesktop 8C从 801版本开始,支持将第三方的模型数据,以 “点+模型”的形式导入数据源。用点位置来确定模型的位置,通过该方法,可将伟景行的osg数据不通过3D Max和插件,直接导入超图数据源。
伟景行的CityMaker Builder可将三维精细模型导出为osg,dds,xml三部分文件。Osg文件存储着模型对象的骨架,每个模型对象对应着一个osg文件,如下图1-1。dds文件是模型的贴图,是图片的压缩格式,数据的占用空间要小于png格式,如下图1-2。xml文件用于记录每个模型所对应的osg文件名,该模型的位置,旋转角,偏移量等信息,如下图1-3。
![这里写图片描述](https://img-blog.csdn.net/20160127104225745)
图1-1 osg数据
![这里写图片描述](https://img-blog.csdn.net/20160127104313120)
1-2 dds贴图文件
![这里写图片描述](https://img-blog.csdn.net/20160127104330145)
图1-3 xml文件
##操作步骤 由于超图提供“点+模型”的方式导入平台,所以需要将上文提到的xml文件转成三维点。在得到三维点后,使用桌面的功能,就可将osg数据导入。测试的数据在CityMaker Builder中共分为“建筑”“场地”“交通”“其他”四类,因此产生对应的4个xml文件。 **第一步 xml转三维点** 目前,需要借助于组件开发实现,已给大家提供了简单的导入工具,将存储了模型位置信息的xml文件,转换成文件型数据源中的三维点数据集,如下图2-1,下载地址(链接:http://pan.baidu.com/s/1nuck5kd 密码:1z1p)。根据界面提示,指定xml文件存储的路径,指定文件型数据源路径,点击确定,即将指定路径下的全部xml文件都导入指定数据源中,数据集名和xml文件名一致。**注意:导入时,目标数据源不能被其他进程占用。**
![这里写图片描述](https://img-blog.csdn.net/20160127104432553)
2-1 导入工具
导入后的结果是三维点数据集,数据集个数和xml个数一致,数据集名与xml文件相同。每个点位置所对应的osg文件名,存储在数据集属性中,如图2-2。
![这里写图片描述](https://img-blog.csdn.net/20160127104739700)
2-2 导入结果
您也可以结合自己的数据情况,通过代码将xml文件导入为三维点数据集,可参考以下代码,图2-3。**注意:写osg文件名到属性字段时,需要加文件后缀,即“.osg”。**
![这里写图片描述](https://img-blog.csdn.net/20160127104943653)
图2-3 参考代码
**第二步 导入osg数据** 启动iDesktop 8C 801版本,打开导入了xml的数据源,同时打开需要导入osg数据的目标数据源,并选中该数据源,点击右键,选择导入数据集,见下图3-1,弹出数据导入对话框,选择“添加文件夹”—>“模型文件夹”,出现如3-2截图。在定位点数据集处选择刚才转入的三维点数据集,在关联字段处选择数据集中存储osg文件路径的字段,本例为“ModelName”字段,建议结果数据集名和指定的三维点数据集一致,点击导入。如果需要导入的数据多,需要重复这个操作,比如,测试数据有四类,那么以上操作需对这四个数据分别进行导入。导入后得到相应的模型数据集,如图3-3。 完成导入后,该数据集可直接加载到场景,如图3-4,。
![这里写图片描述](https://img-blog.csdn.net/20160127105034107)
3-1 选择导入数据集
![这里写图片描述](https://img-blog.csdn.net/20160127105049295)
3-2 导入窗口
![这里写图片描述](https://img-blog.csdn.net/20160127105123499)
3-3 导入结果
![这里写图片描述](https://img-blog.csdn.net/20160127105147390)
3-4 显示效果