首页 文章

使用开源3D引擎从Openstreetmap数据渲染 Map ? [关闭]

提问于
浏览
5

从Openstreetmap数据渲染3D Map 可能非常漂亮cumbersome .

但是,如果要求的要求低于渲染世界上任何城市的3D要求呢?

如果我只需要渲染某个受特定边界限制的城市,该怎么办?不应该渲染很多多边形,特别是如果我选择只渲染那些在屏幕上实际看到的建筑物和道路(我听说这种技术用于游戏开发) .

我希望实现像this这样的东西,但是对于具有近似高度且没有纹理的建筑物来说,只需要简单的盒子就可以了 . 所以,基本上我只需要一个基于OSM的道路网络和用3D表示建筑物的简单框 .

所以,计划可能如下:

  • 将OSM数据提取到.osm文件中;

  • 将"height"数据添加到此文件中的每个建筑物(手动);

  • 使用某种3D引擎从.osm文件(需要自定义解析器)渲染 Map 的3D视图 .

这个计划可行吗?是否有任何开源3D引擎可以使用/自定义从.osm文件渲染OSM Map ?是否存在可以[可能]自定义以呈现OSM Map 的任何Linux兼容(OpenGL?)3D引擎?

4 回答

  • 3

    请注意,在大多数地区,OpenStreetMap只有很多路段和其他东西,但不是单独的建筑物 . 这是我上次检查时的情况,但这取决于您感兴趣的区域 .

    据我所知,没有现成的方法可以做到这一点,但如果你只是想要简单的东西,那就不应该那么复杂了 . 简要描述;简介:

    1 - 从osm xml文件中提取脚印多边形数据 .

    2 - 投射到你选择的笛卡儿,例如使用PROJ.4,因为osm坐标是lat-long .

    3 -Triangulate以避免非凸多边形 .

    4 - 挤出三角形多边形,为每个边界边生成一个四边形 .

    5 - 最后,您可以将生成的模型插入到您喜欢的3d引擎中,例如OpenSceneGraph,或者使用OpenGL自行渲染它们 .

    在那之后,你想要添加的东西越多,如纹理,建模细节,它就越复杂 .

  • 1

    你可能想看看 OSM2World . 它是一个转换器应用程序,可以读取各种文件格式的OSM数据并计算3D模型,同时考虑建筑物的高度,屋顶形状和材料属性以及各种其他细节 . 它可以使用内置的OpenGL查看器显示场景,也可以将模型导出为.pov或.obj等格式,后者几乎可以被所有开源建模者和引擎读取 .

    如果该区域中的建筑物被良好映射,则场景如下所示:

    OSM2World rendering

    还有OpenStreetMap社区中3D development活动的概述,展示了其他几个工具 .

  • 2

    以下是一些开源项目,您可以根据自己的需求进行调整(见下文),大多数使用的是opengl,它们也可以满足您的需求 .

    我做了你想做的大部分工作 . 你可以看到它的一些屏幕截图here

  • 0

    许多城市都可以在线访问Real Estate records,包括建筑尺寸 .

相关问题