如何開始寫一個virtual globe軟體,類似於google earth那樣?

先說明一下背景:

C++ 熟悉,平時工作的主力語言,代碼經驗還算豐富。

3D開發, 準備學習,開始入門。

GIS 知識, 完全外行。

興趣使然,目前打算做一個類似於google earth那樣的軟體, 就我目前的想法,是考慮做成單機版(衛星影像數據存在本地),以後有精力可以做成網路版。

目前迷茫的問題有:

1:手寫引擎還是使用商業引擎。 virtual globe肯定會涉及到大規模的地形場景實時渲染,這方面完全小白, 不知道方向在哪裡。

2: 數據製備問題。 衛星影像數據都比較龐大, 要一下讀取所有數據肯定不行。 我知道google earth用了瓦片技術, 這就涉及到數據製備。 我的想法是將衛星影像數據,高程數據進行預處理, 保存為一種方便使用的文件格式。 客戶端讀取後再進行三維顯示。 這方面也覺得有不少困難, 因為三維技術,GIS方面自己都不了解, 數據製備從何做起, 完全沒思路。

請教有這方面開發經驗的知友能不能介紹一下基本思路, 分享一些相關的學習資源


作為老牌開源渲染引擎OpenSceneGraph的堅定不移的支持者以及核心貢獻者,安利一下osgEarth:

osgEarth. Terrain on demand.

簡單來說:

1、它構建於開源的渲染引擎OSG之上,自身也遵循類LGPL協議開源,適合初學者學習,甚至適合用來完成一些小型和研究型的項目(在國內也不乏這麼做的人以及公司)

2、OSG本身已經能夠很好地用於大規模地景數據的分塊和LOD調度渲染,在集成顯卡上也會運行流暢。而osgEarth基於靜態四叉樹調度方案做了一些創新,使得數據的動態快速更新成為可能(傳統的四叉樹方案在更新數據時必須離線重新製作這一塊地景金字塔)

3、支持多種網上免費地形和影像數據系統,例如Bing,Yahoo和OSM,可以直接載入在線的金字塔數據和實時渲染。當然也支持您自己獲取的在線或者磁碟金字塔數據。

4、支持Windows,Linux與Mac OSX系統,支持Android和IOS移動平台……(很多OSG本來就有的特性就不一一介紹了)

5、圖文標籤,測量通視,貼地矢量繪製,等等很多osgEarth獨立提供的功能特性也不一一介紹了

當然了,OSG不是Unity,社區專業性強,入門不易。儘管它完全開源、商業應用無限制,也被證實在各行各業都得到了廣泛使用,但是要參透其中的精髓,還是需要付出不亞於自己從0開始摸索的代價的。


有很多類似的軟體,localspace viewer就是國產的一個免費小軟體,可以載入在線影像和本地影像。開源的有world wind ,osgearth


曾經練手寫過一個。數據是抓Google的。要是有什麼問題直接問我就好。


推薦閱讀:

3d引擎開發需要那些技能儲備?
求實時渲染基本演算法好書推薦?
如何判定一點是否在給定頂點的不規則封閉區域內?
WPF 使用 OpenGL 4.5 繪圖太卡?
渲染的時候是不是頂點數目越少越好?

TAG:軟體開發 | GIS地理信息系統 | OpenGL | 3D遊戲開發 | Direct3D |