先写想法:
想做个简单的地形漫游,于是考虑在ww直接开发,或找个控件形式的开发组件。
最大的期望有:
1. 支持google的sketchup,快速智能三维建模
2. 设计模式做好点,最好先做成组件形式,然后开发应用程序
3. 性能再好点,对于索引技术,内存管理等等
4. 客户端独立版本 和客户服务器端耦合版本的优化
5. 放点服务器的资料。
.net平台
1.WorldWind
知名度很高,介绍也很全。链接在这里NASAWorld Wind
目前分为.net版本和java版本。
开发语言:c#.java
渲染方式:DirectX,Opengl(Java)
WorldWind的优势
WorldWind的软件架构应该来说还是很不错的,很优秀。开放的设计,使得Worldwind的扩展非常方便和快捷,目前已有上百种各式各样的插件,很多插件都很有意思和实用。使用.net和java,研究它的工作原理变的相对容易。
相对来说.net版本的容易深入些。java版的严格面向对象方法的使用,使得java版的精简,但深入起来不如.net容易。
以前交流的时候,我经常会推荐WorldWind。很好很强大。
这里以.net版进行说明。
下面的缺陷不能掩盖WorldWind的光彩。
WorldWind的缺陷
总体架构设计没太大问题。主要在内部的几点
1.速度慢。几个原因导致worldwind在实际使用中存在速度慢的问题.
a)影像数据组织混乱。由于worldwind在系统设计时面向的就是各个行业各种数据的集成。因此他设计时的兼容,导致同一地区数据获取重复(占内存资源)、不同数据获取服务器速度不一致影响。
b)c#异常。捕获异常占用了worldwind大部分时间。导致显示、数据获取时严重的停顿。
c)SRTM的动态生成。如果你想像取图工具一样把SRTM下载下来,那简直不可能。
d)QueueDownload实际运作时,一旦出现异常和错误,将导致数据下载停顿。需要重新调整视角。而貌似多线程的下载,实际效果并不明显。这就导致显示出现停顿。
2.三维支持能力稍差。
尤其是在模型的支持方面,虽然有个ModelFeature类来进行三维显示。这里有问题:
a)不支持LOD,虽然.x文件设计时能支持,不过显然ModelFeature不支持。
b)模型显示漂移。当你放大到最详细时,会发现模型左右上下晃动。
c)模型未按tile形式组织。Cache、内存、释放等方式都存在问题。
3.矢量支持
worldwind的矢量处理显示类比较混乱。效果也不是太好。
4.KML支持
通过一个插件能够支持KML,不过想达到googleearth的添加等功能,还需要做很多工作。
5.内存泄露
按理,c#不会存在内存泄露。出现问题的地方是QuadTile.Dispose,D3D的纹理没有进行清除。使得资源占用越来越大,速度越来越慢
6.DEM显示缺陷
每个Tile之间未作平滑处理,经常会出现深坑、断档。
7.影像黑边
大多数基于worldwind的软件,可以看到影像边缘很明显的黑边、锯齿。究其原因,是Jpg压缩,出现黑色渗透交融导致黑边锯齿。 两种解决办法,a)边缘地带采用png。b)严格的数据组织。
WorldWind的国内应用
可以说,国内很多高手都解决了上述的问题,并且发扬WorldWind的优势。典型代表EVGlobe等等。很不容易,从某种角度上来说,确实是自主研发。
非.net平台
2.OSSIMPlanet
链接:ossimplanet
开发语言:c++
渲染方式:opengl
相比WorldWind而言,名气并太大。虽然推荐时,我一般不推荐它,但他确实是另外一个很强大的开源数字地球。我不推荐它的原因是:
1)基于c++。光研究了解它就要花好多成本,这并不太适合国内公司和单位。门槛高,时间长,见效慢。
2)相关资料少。它涉及到太多的大型开源库,而国内翻译的资料相对少很多。不像WorldWind,拿套源代码就能开干。
但我很喜欢它,作为技术人员来说,我推荐大家去看。很多乐趣和知识在里面。很优雅,很内涵,值得收藏。
OSSIMPlanet优势
1)基于OSG(Open Scene Graph),一个很庞大很工业很成熟的开源软件。这点很吸引我。国内很多公司采用,如西安赛能。地址:http://www.3snews.net/html/71/www.openscenegraph.org
仅OSG就能列出非常多的文章,使用OSG的好处不胜列举。要描述清楚需要花很多篇幅。这里我们就带过。
2)平滑快速高效的显示效果。
3)作为平台来说,他涵盖的内容很全,比如你可以用OSG做出媲美TerraBuilder的软件。用GDAL+OSG支持绝大多数矢量、影像、模型文件。
4)完美的模型支持。不用说LOD,连整个城市装入一点问题没有。在很早以前,有个叫做VTP的虚拟城市开源软件。
5)专业化,确实很专业。
6)脚本支持。通过采用OSG的osgInterper(这部分实在是太美妙了),能快速绑定Python,Lua,JavaScript,Ruby。
7)想了解更多的优势,还是自己去下个来看吧。
OSSIMPlanet缺陷
从技术角度来讲,OSSIMPlanet的缺陷几乎没有。不过,上面说过了,想基于它形成自己的产品和解决方案,要花很多投入和资金。因此它的硬伤就是,不适合商业化。
OSSIMPlanet国内应用
几年前,我和一个开发工作室聊过。他们采用的是OSG以及基于OSG开发的数字地球,参考了ossimplanet但未直接使用。因此,国内应用,没有。
这个工作室产品名为VirtualTerran。后来貌似变成了mapok(不确定,知道的请联系我)
3.Gps3D
地址:http://www.3snews.net/html/71/www.mgix.com/gps3d/
这款开源软件应该来说更侧重于gps功能。当然也包含了三维地球的部分功能。
开发语言:c++
渲染方式:Opengl
这个开源软件很小巧也很实用。作为技术参考来说,非常不错。可以参考的部分是经纬度转三维坐标,WMS、WFS的远程调用以及Tile的三维显示。
缺点就不多说,毕竟方向不一致,不能以平台来要求它。
4.Earth3D
地址:http://www.3snews.net/html/71/www.earth3d.org
这款开源软件适合初步研究三维地球。它显示了三维地球,并显示了国界线。
开发语言:c++
渲染方式:Opengl
作为初步研究,还是不错的。毕竟起点的第一步就是如何显示三维地球并贴上MODIS数据。它还能显示国界线。很不错的参考。
5.其他更多的开源软件
目前为止,我发现的开源软件就是以上4种,如果你知道更多,请告诉我。
总结:
1.WorldWind最成熟,最适合商业化.
2.技术最优OSSIMPlanet
其他.net平台下开源(免费)三维 GIS (地形,游戏)平台资料
Axiom:开源3D游戏引擎,是著名的开源引擎OGRE的.NET版本。源代码完全用c#构造,主要为图形部分。
RealmForge:开源3d游戏引擎,图形部分采用Axiom、并组合并重写其他一些网络、人工智能等模块,完全由C#构造。
还有google earth,
Axiom
The Axiom 3D Engine is an open-source, cross-platform 3D graphics rendering engine for .NET and Mono. The engine is a high-performance C# port of the powerful OGRE engine. Its flexible component-oriented architecture allows easy extension and provides full support for both DirectX and OpenGL. The engine is also cross platform supporting both Windows and Linux operating systems.
RealmForge:
The .NET 3D game engine predecessor to Visual3D.NET (www.visual3d.net), which is a framework and toolset for the visual design and development of 3D games, simulations, and interactive environments using C#, .NET 2.0, and XNA.
irrlicht
The Irrlicht Engine is an open source high performance realtime 3D engine written and usable in C++ and also available for .NET languages. It is completely cross-platform, using D3D, OpenGL and its own software renderer, and has all of the state-of-the-art features which can be found in commercial 3d engines.
We've got a huge active community, and there are lots of projects in development that use the engine. You can find enhancements for Irrlicht all over the web, like alternative terrain renderers, portal renderers, exporters, world layers, tutorials, editors, language bindings for java, perl, ruby, basic, python, lua, and so on. And best of all: It's completely free.
非.net平台
ORGE:评价非常高开源3D游戏引擎。使用c++构建,主要为图形部分。
TerraVision
http://www.ai.sri.com/digitalearth/index.shtml
http://www.ai.sri.com/tvgeo/download_full.shtml
https://sourceforge.net/projects/terravision
http://www.ai.sri.com/tvgeo/
TerraVisionTM is an Open Source distributed, interactive terrain visualization system developed by SRI International. It allows users to navigate, in real time, through a 3-D graphical representation of a real landscape created from elevation data and aerial images of that landscape. There are many terrain visualization tools on the market, but here are some of the features that make TerraVisionTM unique:
New: Full Open Source hosted on SourceForge.
TerraVisionTM can browse huge datasets, in the order of terabytes.
All data can be distributed over multiple servers across the Web.
3-D VRML and GeoVRML models can be overlaid, e.g. buildings, wind vectors, etc.
TerraVision can access OGC Web Map Servers (WMS) [More]
Datasets of different size, resolution, source, and coordinate system are supported.
New: TerraVision Server on Internet2.
Available for free for Windows, Linux, and SGI platforms.
New: Version 6.0 released