常問問題
本文旨在帮助您解决使用 Sandworm 地形生成工具时出现的问题。
有一些一般提示可能有助于整体理解:
-
打开编辑器控制台 (Windows -> Console)。如果出现问题,控制台消息可能有助于解释情况。
控制台错误示例 - 如果怀疑高度数据有问题,可以开启调试模式检查:Rendering Debug -> Opacity World Normal。
- 不用担心人数三角形在 ObjectLandscapeTerrain 中。该对象的设计目的是使数百万个多边形不会对帧速率产生太大影响。
- 清除缓存开始地形生成之前:单击 Sandworm 窗口左下角缓存地址行附近的 按钮。
ObjectTerrainGlobal 和 ObjectLandscapeTerrain 有什么区别?
目前,UNIGINE 有两个用于地形的对象:ObjectTerrainGlobal,长期使用,比较最近引入了 ObjectLandscapeTerrain,有很多改进。
这两个地形对象可以使用 Sandworm 工具生成。
Sandworm 工具和 ObjectLandscapeTerrain 都是为了解决多年来积累的问题,并扩展功能而开发的。
我在哪里可以获取地理数据?
通常,对私人 TMS 服务器的访问不是免费的,但是,有捐赠支持的免费数据源。如果您没有心情搜索,可以查看列表在这里。请记住,每个服务器都有自己的功能并检查描述中的信息。
高地
例如,您可以尝试mapbox 服务。在那里注册以获得您自己的令牌和访问,更多详细信息请参见 本页。
免费访问限制了每分钟的请求数,但这不会影响整个工作流程,并且足以进行一般概述。
注册后,您将收到一个由各种符号组成的字符串的令牌。在等号(=)后添加这个token到如下URL:https://api.mapbox.com/v4/mapbox.terrain-rgb/{z}/{x}/{y}.pngraw?access_token=YOUR_ACCESS_TOKEN,并在Sandworm中使用这个URL来获取对应级别的数据。
意象
以下是可用于一般概述的图像 TMS 服务器示例:
- http://a.tile.openstreetmap.org/{z}/{x}/{y}.png — 带有图例的 OSM 地形数据
向量
作为一个矢量数据的免费来源,您可以检查 https://www.openstreetmap.org 并使用 https://extract.bbbike.org/ 作为该数据的聚合器。
提供上述链接和来源作为概览的快速入门。如果您手头没有任何地理参考数据,您可以使用它们和 Sandworm 文档。从第三方工具导出数据本身就是一个巨大的研究课题,并且比使用我们的工具需要更多的时间。
不幸的是,不存在全拟合的通用投影,因为每个投影都是弯曲区域的平面表示,并且点离投影的中心(原点)越远,数据损坏程度就越高。您可以找到更多关于维基百科或搜索有关射影的其他解释。应根据手头的源数据或项目要求选择输出投影。
您可以使用https://epsg.org/ 为所选区域找到误差最小的最佳拟合投影。
-
转到 EPSG Dataset -> Map Search:
果网站不显示任何地图,考虑禁用广告屏蔽或使用VPN。 -
设置区域边界并单击 Search。您将收到一个表格,按类型对其进行排序(单击 TYPE 标题)并选择一个标记为 Projected 的数据源。
同样,首先,您可以使用 EPSG:3857 — 这是 Google, OpenStreetMap, Navitel 等服务广泛使用的投影。
瓷砖越详细,加载它们所需的时间就越多。 Generating Preview 弹出窗口会给您一个提示——它在下载数据时显示在 Sandworm 的右下角。此外,在编辑器控制台中,加载磁贴时会显示一条类似于 "ImportCacheTile 465.162000 ms" 的消息。
我们建议首先尝试使用低 Zoom 值。这将使您对添加的数据有一个整体的了解,然后您可以增加 Zoom 的值并单击 Reimport。 Zoom 值越高,数据越详细(从服务器下载所需的时间越长)。如果数据太重,您会看到通知。
当您从 TMS 服务器获取数据时,可能会发生这种情况。更好的数据通常要花钱。
您可以尝试更改某个区域的 Zoom。另一种解决方案是使用其他 TMS 源制作插图:例如,您使用 Zoom = 10 生成整个区域,对于问题区域 - 创建另一个图层,为其使用另一个源,并设置 Zoom = 14(给定的缩放值只是一个例如,尝试您自己的价值观)。
场景默认包含一个启用了 Main Player 参数的相机。此参数定义在世界运行时显示摄像机的图像。为您要在运行时控制的相机启用此参数,例如 Sandworm 相机 - 它在地形正上方生成,并禁用所有其他相机。
对于 ObjectTerrainGlobal,您可以在编辑器中使用 Geodetic Pivot — 作为其子对象添加的每个对象都可以使用在 latitude/longitude. 中设置的地理坐标定位在地形上
至于ObjectLandscapeTerrain,定位工具还在开发中,同时可以使用第三方源转换坐标,比如https://products.aspose.app/gis/transformation 。
以下是工作流程的说明:
-
将对象和原点坐标转换为世界坐标(注意输入和输出投影)。
对象的源坐标(来自谷歌地图的屏幕截图)原点的源坐标(Sandworm 中的导出区域参数)使用 aspose.app 变换坐标 -
从物体位置取原点位置:Object.X — Origin.X; Object.Y — Origin.Y。
计算场景(世界)中的坐标 -
将结果用作世界中对象的 X 和 Y 坐标。
对象定位在世界上
开发人员还可以通过代码使用 Geodetics Plugin 和定位对象。
IG 插件有worldToGeodetic()方法和 GeodeticsTransformer 类来定位对象。
生成地形是一项非常耗费资源的操作。对于广阔而细致的景观,您可能需要大量可用的 RAM。
我们建议使用 64 Gb RAM(至少 32 Gb)。
禁用Microprofile该工具还可以节省多达 6 Gb RAM。这可以通过运行编辑器来完成外部论据"-microprofile_enabled 0",或在编辑器控制台中禁用它。
如果在生成地形时出现崩溃,逐步一层一层添加并生成可以帮助发现数据问题。或者至少删除矢量数据层,因为它可能非常消耗。