3d道路网络几何的过程建模,并在Unity上展示

时间:2018-08-13 11:36:53

标签: c# unity3d qgis procedural-generation

Edit:正如评论所说,这个问题太复杂了,所以我只希望得到针对该问题某一部分的答案。欢迎您提出任何想法。

我正在一个项目中,我应该分析GIS(矢量)数据以提取大规模城市道路网中的道路特征(如轴和边界) ,然后基于这些功能逐步生成3D道路模型表示,目标是在Unity中实现 3d可编辑道路网络几何图形,我可以轻松地调整位置/宽度/每条道路的高度...(并且当然会立即得到适当的反馈,例如我们在 SimCity City:Skyline 中看到的信息) em> ,换句话说,我们可以在Unity中设置过程建模参数,并直接查看它如何影响结果几何形状。

由于我对GIS,Unity和Maya之类的东西还很陌生,所以我想知道您是否知道正确的工作流程?您是否推荐用于执行这些操作的工具?特别是,我应该在哪里和哪个步骤编写过程建模算法?因为似乎Unity只是一个游戏/游戏工具,并且本身无法构建复杂的模型,所以也许我必须先将几何体导入到Unity3D中,然后我才能调整模型并立即获得Unity内部的反馈。这样做吗?

以我的假设,我想我需要:

  • 使用Qgis等GIS工具以shapefile格式(通常是点和线)导出路线图数据
  • 然后找到某个地方将其转换为空间坐标,并进行数学运算以提取道路特征

  • 进行过程建模以获取“动态”模型

  • 最后,将其呈现在Unity中

如果是,那么哪个工具/平台适合每个步骤?

非常感谢!

1 个答案:

答案 0 :(得分:1)

有一些可用的Unity扩展程序可以生成道路。我研究了几个示例:

  • Easy Roads 3d
    • 可以从开放街道地图(OSM)导入
    • 假设您需要使用OSM以外的其他来源,则可以将GIS数据转换为OSM格式并将其导入
    • 我本人对这个工具没有太多经验,但是Unity社区论坛上有一些话题,作者似乎反应很快。
  • Mapbox Unity SDK
    • 如果需要使用GIS数据,则将无法使用
    • 是开源的,因此您随时可以查看source来了解转换是如何完成的。
    • 有很多可用的钩子和一些教程,它们演示了如何钩入管道并从传入的数据中提取特征并执行场景几何的过程生成(请参见tutorials)。它背后的团队在回答问题方面非常有帮助。
    • 我已经使用此工具做了一些工作,最大的缺点(对我而言)是它只能在运行时生成地图,即不能在编辑器中生成。这是由于对数据的许可限制。

我提到的两个选项都是将GIS坐标转换为Unity中的Unity空间。 Unity运行全功能的C#代码,并能够构建复杂的几何图形。显然,这需要花费计算时间,因此您需要权衡性能。但是,您只需要构建一次几何图形(或在每次编辑/修改后至少构建一次),而不是每帧。在我的使用中,我已经在SketchUp中对建筑物进行建模并将其导入Unity,然后使用Mapbox实用程序将其位置映射到正确的位置(高程和纬度/经度坐标)。您可以使用Maya模型做类似的事情。

您需要执行的操作取决于:

  • 您每次启动该程序时都需要动态生成道路
    • 最好将代码构建到Unity中,以从GIS转换为Unity场景坐标并动态生成道路几何形状
  • 您正在一次性导入道路网络,然后修改该静态网络。
    • 构建一个可从GIS转换并生成道路几何形状的工具,作为一项一次性任务
    • 您仍然可能要使用Unity,因为其中包含许多实用程序来处理矢量和生成几何图形