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 中获得即时反馈吗如果我这样做?
根据我的假设,我想我需要:
- 使用 Qgis 等 GIS 工具以 shapefile 格式导出路线图数据——通常是点和线
然后找个地方把它转换成空间坐标,然后做数学运算来提取道路特征
进行程序建模以获得 "dynamic" 模型
最后在Unity中渲染
如果是,哪个 tool/platform 适合每个步骤?
非常感谢!
有可用的 Unity 扩展可以生成道路。我研究过的几个例子:
- Easy Roads 3d
- 可以从 Open Street Maps (OSM) 导入
- 假设您需要使用 OSM 以外的来源,您可以将 GIS 数据转换为 OSM 格式并导入该格式
- 我自己对这个工具没有太多经验,但 Unity 社区论坛上有一些帖子,作者似乎反应很快。
- Mapbox Unity SDK。
我提到的两个选项都在 Unity 中将 GIS 坐标转换为 Unity-space。 Unity 运行功能齐全的 C# 代码,能够构建复杂的几何体。显然这需要计算时间,因此您需要在计算时间和性能之间进行权衡。但是,您应该只需要构建一次几何体(或者至少在每个 edit/modification 之后只构建一次),而不是每帧。在我的使用中,我在 SketchUp 中为建筑物建模并将它们导入 Unity,然后使用 Mapbox 实用程序将它们的位置映射到正确的位置(海拔和 lat/long 坐标)。您可以对 Maya 模型做类似的事情。
您需要做的一些事情取决于:
- 您需要在每次启动程序时动态生成道路
- 您最好将代码构建到 Unity 中以将 GIS 转换为 Unity 场景坐标并动态生成道路几何图形
- 您正在一次性导入道路网络,然后修改该静态网络。
- 构建一个工具来从您的 GIS 转换并生成道路几何图形作为一次性任务
- 您可能仍想使用 Unity,因为它包含许多用于处理矢量和生成几何图形的实用程序
编辑:正如评论所说,这个问题太复杂了,所以我只希望得到集中在这个问题的某个部分的答案。欢迎提出您的任何想法。
我正在从事一个项目,我应该在其中分析 GIS(矢量)数据以提取道路特征,例如大尺度的轴和边界 城市道路网络,然后 根据这些特征程序生成 3D 道路模型表示 , objective 是一个 3d 可编辑道路网络Unity 中的几何形状,我可以轻松调整其中每条道路的 position/width/height...(当然,我们可以立即获得适当的反馈,就像我们在 [=28= 中看到的那样]SimCity或者City:Skyline,也就是说,我们可以在Unity中设置程序建模参数,直接查看它如何影响结果几何)。
由于我对 GIS、Unity 和 Maya 等这些东西还很陌生,我想知道您是否知道正确的工作流程是什么?你有推荐的工具来做这些吗?特别是,我应该在哪里以及在哪一步编写程序建模算法?因为似乎 Unity 只是一个 rending/gaming 工具,不能自己构建复杂的模型,所以也许我必须在将其导入 Unity3D 之前构建几何体,但我可以只调整模型并在 unity 中获得即时反馈吗如果我这样做?
根据我的假设,我想我需要:
- 使用 Qgis 等 GIS 工具以 shapefile 格式导出路线图数据——通常是点和线
然后找个地方把它转换成空间坐标,然后做数学运算来提取道路特征
进行程序建模以获得 "dynamic" 模型
最后在Unity中渲染
如果是,哪个 tool/platform 适合每个步骤?
非常感谢!
有可用的 Unity 扩展可以生成道路。我研究过的几个例子:
- Easy Roads 3d
- 可以从 Open Street Maps (OSM) 导入
- 假设您需要使用 OSM 以外的来源,您可以将 GIS 数据转换为 OSM 格式并导入该格式
- 我自己对这个工具没有太多经验,但 Unity 社区论坛上有一些帖子,作者似乎反应很快。
- Mapbox Unity SDK。
我提到的两个选项都在 Unity 中将 GIS 坐标转换为 Unity-space。 Unity 运行功能齐全的 C# 代码,能够构建复杂的几何体。显然这需要计算时间,因此您需要在计算时间和性能之间进行权衡。但是,您应该只需要构建一次几何体(或者至少在每个 edit/modification 之后只构建一次),而不是每帧。在我的使用中,我在 SketchUp 中为建筑物建模并将它们导入 Unity,然后使用 Mapbox 实用程序将它们的位置映射到正确的位置(海拔和 lat/long 坐标)。您可以对 Maya 模型做类似的事情。
您需要做的一些事情取决于:
- 您需要在每次启动程序时动态生成道路
- 您最好将代码构建到 Unity 中以将 GIS 转换为 Unity 场景坐标并动态生成道路几何图形
- 您正在一次性导入道路网络,然后修改该静态网络。
- 构建一个工具来从您的 GIS 转换并生成道路几何图形作为一次性任务
- 您可能仍想使用 Unity,因为它包含许多用于处理矢量和生成几何图形的实用程序