三维开发及三维地形和地理信息系统的集成探索


三维开发及三维地形和地理信息系统的集成探索

 

一开始只是对于OSG的3D牛显示有比较好奇的心态,这只是初步映像,又有了Perform这种商用软件平台的应用经验,越来越对3D的自主开发感兴趣了。

 

对于一个没有一点地理信息经验的人,怎么才能实现一个3D地形场景,而且可以任意变化。怎么办?

1.      查资料,搜集信息:

ARCGIS可以实现,MALTIGEN CREATE 也可实现, OpenGL也可实现,Osg也可实现

2.      比较收集的资料优缺点:

  1. ArcGIS是国外的开发软件,但主要是基于2D的为主,3D为辅助,而且实时性差,开发权限受限制,移植性也不好。
  2. MALTIGEN CREATE 主要还是本身只是个国外的建模软件,而且有软件缺陷,超出一定内存,就会崩溃,而且也有版权的问题存在。
  3. OpenGL的实现,地形网格和纹理贴图,这些都能实现,而且还是开源的3D图形开发语言。只有一点,就是编写代码太过冗长。
  4. 使用OSG的好处是以C++为基础,继承和集成了OpenGL的一些API,归并和提炼出更高一层的图像开发语言。它在相机控制、图形着色,都有很好的凝练,而且还提供了特殊的地形处理类,但只是在地形使用和成像上提供了很好的帮助。问题是能得到随意的任意需改的地形?

3.      做出决策:

进过比较和思考,决定从OSG的着手,它是以C++为基础的,而且可以很好的集成其他C++面向对象的开放代码;同时又是3D图形开放源码语言,而且又继承和集成了OpenGL的一些API。

4.      根据自己的需求改进和创新:

经过比较考虑和发掘,发现OSG的地形处理和ArcGIS软件都使用了开源代码GDAL来处理DEM地形数据。针对这一点,我决定严格从GDAL出发来解决问题。

详细查看GDAL的使用环境和技能特点:它在处理2维图像上具有相当的权威性,而且还可以实现各种地理坐标系统和投影坐标系统的转换。

OSG的地形处理类中的DEM数据又恰好符合GDAL的特征,那么我就找到了地形处理的核心。结合OSG的地形处理,和GDAL的2维图像处理和坐标投影等功能,再综合其他的一些地形信息处理C++函数,我就实现了自主开发的实现三维地形和地理信息系统的集成平台。

世界地图3D:



结合数据库,中国省界城乡地名及水系地理信息系统:




在这个基础上还可容易的扩展的C++的一些其他库函数的集成:

a.曲线库:OpenNurbs

b.碰撞检测库:OsgBullet

c.爆炸特效粒子库:osgSpark

d.声音库:osgAudio

e.医学影像库:DCMTK

f.其它库:OsgWOrk、Boost、Cal3D、RVO2



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值