C# 三维路网几何图形的程序建模及其在Unity上的实现 编辑:正如评论所说,这个问题太复杂了,所以我只希望得到关于这个问题某一部分的答案。欢迎你有任何想法。

C# 三维路网几何图形的程序建模及其在Unity上的实现 编辑:正如评论所说,这个问题太复杂了,所以我只希望得到关于这个问题某一部分的答案。欢迎你有任何想法。,c#,unity3d,qgis,procedural-generation,C#,Unity3d,Qgis,Procedural Generation,我正在从事一个项目,在该项目中,我将分析GIS(矢量)数据,以提取道路特征,如大规模城市道路网络中的轴和边界,然后根据这些特征,按程序生成三维道路模型表示,目标是一个统一的三维可编辑道路网几何体,我可以轻松调整位置/宽度/高度。。。对于其中的每条道路(当然,我们可以立即获得适当的反馈,如我们在SimCity或City:Skyline中看到的反馈,换句话说,我们可以统一设置程序建模参数,并直接查看它如何影响结果几何体) 因为我对GIS、Unity和Maya这类东西很陌生,我想知道您是否知道正确的工

我正在从事一个项目,在该项目中,我将分析GIS(矢量)数据,以提取道路特征,如大规模城市道路网络中的轴和边界,然后根据这些特征,按程序生成三维道路模型表示,目标是一个统一的三维可编辑道路网几何体,我可以轻松调整位置/宽度/高度。。。对于其中的每条道路(当然,我们可以立即获得适当的反馈,如我们在SimCityCity:Skyline中看到的反馈,换句话说,我们可以统一设置程序建模参数,并直接查看它如何影响结果几何体)

因为我对GIS、Unity和Maya这类东西很陌生,我想知道您是否知道正确的工作流是什么?你有推荐的工具来做这些吗?特别是,我应该在哪里以及在哪一步编写程序建模的算法?因为Unity似乎只是一个渲染/游戏工具,本身无法构建复杂的模型,所以可能我必须先构建几何体,然后再将其导入Unity3D,但如果我这样做,我是否可以调整模型并立即在Unity内部获得反馈

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

  • 使用Qgis等GIS工具以shapefile格式导出路线图数据——通常是点和线
  • 然后找个地方把它转换成空间坐标,然后做数学运算来提取道路特征

  • 进行程序建模以获得“动态”模型

  • 最后,统一呈现

如果是,哪种工具/平台适合每一步


非常感谢

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

    • 可以从开放式街道地图(OSM)导入
    • 假设您需要使用OSM以外的源,您可以将GIS数据转换为OSM格式并导入该格式
    • 我自己对这个工具没有太多的经验,但是Unity社区论坛上有一些帖子,作者似乎反应非常积极
    • 如果要求您使用GIS数据,您将无法使用此数据
    • 开源,因此您可以随时查看以了解转换是如何完成的
    • 有许多可用的钩子和几个教程演示了如何钩子到管道中,从传入数据中提取特征,并执行场景几何体的程序生成(请参见)。它背后的团队在回答问题方面非常有帮助
    • 我已经用这个工具做了一些工作,最大的缺点(对我来说)是它只能在运行时生成地图,也就是说,不能在编辑器中生成。这是由于对数据的许可限制
我提到的两个选项都在Unity中从GIS坐标转换到Unity空间。Unity运行功能齐全的C#代码,能够构建复杂的几何图形。显然,这需要计算时间,所以您需要在计算时间和性能之间进行权衡。但是,您应该只需要构建一次几何体(或在每次编辑/修改后至少构建一次),而不是每帧。在我的使用中,我在SketchUp中为建筑物建模并将其导入Unity,然后使用Mapbox实用程序将其位置映射到正确的点(高程和纵横坐标)。可以对Maya模型执行类似的操作

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

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

这是一个非常有趣的问题,我想知道答案,但我认为这不是问这个问题的好地方。如果这听起来很复杂,你可能在这里找不到好的答案。开始采取小步骤,如果小规模出现任何问题,请回来。