3d 路网几何的程序建模并在 Unity 上呈现

Procedural modeling of 3d road network geometry and present it on Unity

编辑:正如评论所说,这个问题太复杂了,所以我只希望得到集中在这个问题的某个部分的答案。欢迎提出您的任何想法。

我正在从事一个项目,我应该在其中分析 GIS(矢量)数据以提取道路特征,例如大尺度的轴和边界 城市道路网络,然后 根据这些特征程序生成 3D 道路模型表示 , objective 是一个 3d 可编辑道路网络Unity 中的几何形状,我可以轻松调整其中每条道路的 position/width/height...(当然,我们可以立即获得适当的反馈,就像我们在 [=28= 中看到的那样]SimCity或者City:Skyline,也就是说,我们可以在Unity中设置程序建模参数,直接查看它如何影响结果几何)。

由于我对 GIS、Unity 和 Maya 等这些东西还很陌生,我想知道您是否知道正确的工作流程是什么?你有推荐的工具来做这些吗?特别是,我应该在哪里以及在哪一步编写程序建模算法?因为似乎 Unity 只是一个 rending/gaming 工具,不能自己构建复杂的模型,所以也许我必须在将其导入 Unity3D 之前构建几何体,但我可以只调整模型并在 unity 中获得即时反馈吗如果我这样做?

根据我的假设,我想我需要:

如果是,哪个 tool/platform 适合每个步骤?

非常感谢!

有可用的 Unity 扩展可以生成道路。我研究过的几个例子:

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

我提到的两个选项都在 Unity 中将 GIS 坐标转换为 Unity-space。 Unity 运行功能齐全的 C# 代码,能够构建复杂的几何体。显然这需要计算时间,因此您需要在计算时间和性能之间进行权衡。但是,您应该只需要构建一次几何体(或者至少在每个 edit/modification 之后只构建一次),而不是每帧。在我的使用中,我在 SketchUp 中为建筑物建模并将它们导入 Unity,然后使用 Mapbox 实用程序将它们的位置映射到正确的位置(海拔和 lat/long 坐标)。您可以对 Maya 模型做类似的事情。

您需要做的一些事情取决于:

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