2012-02-28 73 views
5

從Openstreetmap數據渲染3D地圖可能很漂亮cumbersome使用開源3D引擎渲染來自Openstreetmap數據的地圖?

但是如果這些要求比渲染世界上任何一個城市都要求更低的要求呢?

如果我只需要渲染某個特定邊界的城市,該怎麼辦?不應該有很多的多邊形要渲染,特別是如果我選擇渲染屏幕上實際看到的那些建築物和道路(我聽說這種技術被用於遊戲開發)。

我希望實現類似this的東西,但可以爲高度近似但沒有紋理的建築物設置簡單的框。所以,基本上我只需要一個基於OSM的道路網絡和代表3D建築物的簡單箱子。

因此,該計劃可能是以下幾點:

  • 提取OSM數據到.osm文件;
  • 將「高度」數據添加到此文件中的每個建築物(手動);
  • 使用某種3D引擎渲染.osm文件(需要定製解析器)的地圖3D視圖。

這個計劃是否可行?是否有任何開源3D引擎可以使用/自定義從.osm文件渲染OSM映射?是否存在任何Linux兼容(OpenGL?)3D引擎,可以[可能]定製渲染OSM映射?

+0

我會對使用渲染街道並能夠旋轉/傾斜的OpenGl渲染器感興趣。你成功了嗎? – Patrick 2012-12-09 18:16:53

+0

帕特里克,我已經暫停了這個項目,因爲它涉及很多事情要「手工」完成。 – skanatek 2012-12-12 07:26:20

回答

1

請注意,在大多數地區OpenStreetMap只有很多地方,道路和其他東西,但不是單獨的建築物。我上次檢查時就是這樣,但這取決於你感興趣的區域。

據我所知,現在沒有現成的方法來做到這一點,但如果你只是想要簡單的東西不應該那麼複雜。簡要說明:

1 - 從osm xml文件中提取腳印多邊形數據。

2 - 將項目轉換爲您選擇的笛卡爾座標系,例如使用PROJ.4,因爲osm座標爲lat-long。

3 - 三角形以避免非凸多邊形。

4 - 展開您的三角形多邊形,爲每個邊界邊緣生成一個四邊形。最後,您可以將生成的模型插入到您最喜歡的3d引擎中,例如OpenSceneGraph,或者使用OpenGL自己渲染它們。

之後,你想添加更多東西,如紋理,模型細節,它越複雜。

3

你可能想看看OSM2World。這是一個轉換器應用程序,以各種文件格式讀取OSM數據並計算3D模型,同時考慮到建築物的高度,屋頂形狀和材料屬性以及各種其他細節。它可以使用內置的OpenGL查看器顯示場景,或者將模型導出爲.pov或.obj等格式,後者可以被幾乎所有的開源模型和引擎讀取。

如果在該地區的建築物是良好的映射,場景是這樣的:

OSM2World rendering

還有的3D development活動OpenStreetMap的社區概況,展示了許多其他工具。