基于WorldWind的三维模型植入研究

2011-12-31 00:00:00于淑
电脑知识与技术 2011年30期


  摘要:World Wind 是美国航天宇航局(NASA)发布的三维地理信息系统。因其代码开源,开发成本低廉,可扩展性强且功能强大,以其为基础平台开发特定功能的GIS应用程序得到了广泛使用。但WorldWind作为一个地理信息应用平台,对三维模型植入应用还没有提出完善的解决策略。该文通过研究WorldWind运行机制、分析三维模型的植入原理并对其三维模型加载过程进行改进,实现了三维模型在该地理信息平台的合理植入,通过实现三维模型碰撞检测实现了模型与使用者的互动响应,该文对利用WorldWind进行城市规划、资源勘探、战场环境模拟等应用的开发人员具有一定的参考价值。
  关键词:World Wind;3D建模;模型植入;碰撞检测
  中图分类号:TP37文献标识码:A文章编号:1009-3044(2011)30-7356-02
  1 WorldWind运行机制
  1.1 平台功能及版本
  WorldWind是NASA发布的开源三维地理信息系统,通过将Landsa卫星图像和航天飞机雷达遥感数据结合在一起,用户可以浏览由因特网上WMS服务器提供的地球、月球、火星和木星等星球的三维实景影像资料;可在所观察的行星上随意进行放大、缩小、倾斜、旋转等操作。通过卫星数据进行自动更新, World Wind能够在世界范围内跟踪天气云图、火灾、自然灾害等情况。
  WorldWind的开源代码有两种版本,分别为java版本和C#版本,Java版本支持B/S模式,C#版本支持C/S模式,本文以C#版为例进行了研究,软件版本为1.4.0版。
  1.2 WorldWind运行机制分析
  通过分析软件源代码(重点分析了程序配置加载流程),得出WorldWind程序的运行机制如表1。
  1.3 三维地理模型构建原理
  WorldWind模型由数字高程模型和卫星图片数据构成。数字高程模型包含地表海拔高度信息,构成星球的骨架,而卫星图片数据构成星球的血肉,两者相结合生成了我们看到栩栩如生的三维星球。通过网络浏览星体时,随着用户浏览角度和位置的变化,从WMS服务器下载的图片会按指定的算法与数字高程模型结合一起,生成用户看到的影像。如图2所示。
  2 三维模型建模介绍
  2.1 三维建模介绍
  WorldWind本身不提供三维建模工具,因其采用了direct3D技术,只能加载directX格式(.x)三维模型文件。用户建模可以使用 3DSMAX、AutoCAD等成熟的建模商业软件,也可以使用Google公司提供的建模软件:GoogleSketchUp快速创建三维模型,该软件支持导入常用 3D格式的文件:*.3ds/*. max/*.dwg/*.dxf,编辑后导出为 *.skp格式,然后可以通过格式转换插件导出成.x格式模型文件。
  2.2 WorldWind三维模型加载接口
  WorldWind加载三维模型参数以XML文件形式存储,其格式范例如下:
  
  tiny
  160.0
  
  40
  

  
  116
  

  2
  Data\\Model\iny.x
  
  0.0
  -90.0
  90.0
  

  10000.0
  10
  

  WorldWind程序提供了一个三维模型类ModelFeature,用以解析相关三维模型加载的XML文件,并应用到地理信息平台中。ModelFeature继承自渲染对象基类RenderObject,因此在程序初始化配置时将三维模型对象加载后,在主程序渲染函数中能自动进行渲染。
  3 WorldWind平台三维模型加载问题及改进策略
  WorldWind程序只是提供了.x文件的加载接口,简单实现三维模型的显示,实际使用过程中发现三维模型的加载还存在一些问题,下面重点对这些问题进行分析并提出解决策略。
  3.1 模型的倒置镜像对称问题
  具体现象为模型文件加载后,显示在地理平台上为原模型的镜像对称模型。
  原因分析:一般制作三维模型采用的是左手坐标系,而WorldWind显示采用了右手坐标系,因此地理平台上显示出原模型的对称镜像。
  解决策略:通过对ModelFeature类中direct3D设备转换矩阵初始化时进行一次对称矩阵变换可将加载坐标系变换回左手坐标系。变换矩阵如下:■
  3.2 大规模加载模型时的低效问题
  具体表现为大规模加载模型时内存消耗明显上升,加载速度变慢。
  原因分析:WorldWind维模型是