This page has been translated automatically.
视频教程
界面
要领
高级
实用建议
专业(SIM)
UnigineEditor
界面概述
资产工作流程
设置和首选项
项目开发
调整节点参数
Setting Up Materials
设置属性
照明
Landscape Tool
Sandworm
使用编辑器工具执行特定任务
如何擴展編輯器功能
嵌入式节点类型
Nodes
Objects
Effects
Decals
光源
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
编程
基本原理
搭建开发环境
使用范例
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
双精度坐标
应用程序接口
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
创建内容
内容优化
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

常問問題

本文旨在帮助您解决使用地形生成工具时出现的问题。

有一些一般提示可能有助于整体理解:

  • 打开编辑器控制台 (Windows -> Console)。如果出现问题,控制台消息可能有助于解释情况。

    Console errors

    控制台错误示例
  • 如果怀疑高度数据有问题,可以开启调试模式检查:Helpers -> Opacity World Normal
  • 不用担心人数三角形ObjectLandscapeTerrain 中。该对象的设计目的是使数百万个多边形不会对帧速率产生太大影响。
  • 清除缓存开始地形生成之前:单击 Sandworm 窗口左下角缓存地址行附近的 按钮。

ObjectTerrainGlobal 和 ObjectLandscapeTerrain 有什么区别?

目前,UNIGINE 有两个用于地形的对象:ObjectTerrainGlobal,长期使用,最近引入了 ObjectLandscapeTerrain,有很多改进。

这两个地形对象可以使用 Sandworm 工具生成。还有 Landscape 工具,但它只能生成 ObjectTerrainGlobal,因为在开发时,ObjectLandscapeTerrain 甚至都没有在计划中。

Sandworm 工具和 ObjectLandscapeTerrain 都是为了解决多年来积累的问题,并扩展功能而开发的。

如果您不熟悉地理参考数据并且不知道如何获取源文件,则开始使用 Sandworm 可能会更容易,因为它允许直接从 TMS 源获取数据。

我在哪里可以获取地理数据?

通常,对私人 TMS 服务器的访问不是免费的,但是,有捐赠支持的免费数据源。如果您没有心情搜索,可以查看列表在这里。请记住,每个服务器都有自己的功能并检查描述中的信息。

高地

For example, you can try the mapbox service. Register there in order to obtain your own token and access, for more details see this page.

免费访问限制了每分钟的请求数,但这不会影响整个工作流程,并且足以进行一般概述。

注册后,您将收到一个由各种符号组成的字符串的令牌。在等号(=)后添加这个token到如下URL:https://api.mapbox.com/v4/mapbox.terrain-rgb/{z}/{x}/{y}.pngraw?access_token=YOUR_ACCESS_TOKEN,并在Sandworm中使用这个URL来获取对应级别的数据。

注意
为避免锯齿(阶梯伪影),请将高度数据导出为 32 位纹理。

意象

以下是可用于一般概述的图像 TMS 服务器示例:

  • https://khms2.google.com/kh/v=871?x={x}&y={y}&z={z} - Google Maps 数据
  • http://a.tile.openstreetmap.org/{z}/{x}/{y}.png — 带有图例的 OSM 地形数据

向量

As a free source of vector data that can be used for a basic overview, you can check https://www.openstreetmap.org and use https://extract.bbbike.org/ as an aggregator for it.

提供上述链接和来源作为概览的快速入门。如果您手头没有任何地理参考数据,您可以使用它们和 Sandworm 文档。从第三方工具导出数据本身就是一个巨大的研究课题,并且比使用我们的工具需要更多的时间。

我应该选择哪个投影以使表面变形最小?

不幸的是,不存在全拟合的通用投影,因为每个投影都是弯曲区域的平面表示,并且点离投影的中心(原点)越远,数据损坏程度就越高。你可以找到更多关于维基百科或搜索有关预测的其他解释。应根据手头的源数据或项目要求选择输出投影。

您可以使用https://epsg.org/ 为所选区域找到误差最小的最佳拟合投影。

如何使用https://epsg.org/:

转到 EPSG Dataset -> Map Search,设置区域边界并单击 Search。您将收到一个表格,按类型对其进行排序(单击 TYPE 标题)并选择一个标记为 Projected 的数据源。

同样,首先,您可以使用 EPSG:3857 — 这是 Google, OpenStreetMap, Navitel 等服务广泛使用的投影。

可以手动设置导出区域吗?

无法在编辑器中设置点的精确坐标。但是,您可以手动编辑导出区域点:在文本编辑器中打开您的*.sworm项目并输入您需要的坐标。

未按要求放置高度图/图像图块。如何在地图上正确定位?

如果您的数据没有地理参考,它不会位于地图上(检查编辑器控制台,也会有一条消息)。

是否正在加载瓷砖?

瓷砖越详细,加载它们所需的时间就越多。 Generating Preview 弹出窗口会给你一个提示——它在下载数据时显示在 Sandworm 的右下角。此外,在编辑器控制台中,加载磁贴时会显示一条类似于 "ImportCacheTile 465.162000 ms" 的消息。

我们建议首先尝试使用低 Zoom 值。这将使您对添加的数据有一个整体的了解,然后您可以增加 Zoom 的值并单击 ReimportZoom 值越高,数据越详细(从服务器下载所需的时间越长)。如果数据太重,您会看到通知。

有时相邻的瓷砖颜色不同。有什么解决方法吗?

当您从 TMS 服务器获取数据时,可能会发生这种情况。更好的数据通常要花钱。

您可以尝试更改某个区域的 Zoom。另一种解决方案是使用其他 TMS 源制作插图:例如,您使用 Zoom = 10 生成整个区域,对于问题区域 - 创建另一个图层,为其使用另一个源,并设置 Zoom = 14(给定的缩放值只是一个例如,尝试你自己的价值观)。

生成结果错误。 / 只生成了部分区域。

检查输出投影设置是否正确。

如果数据在所选输出投影之外,则不会用于地形生成 - 只会生成位于内部的部分。相应的消息也将显示在编辑器控制台中。

快速检查:在不定义 Export Area 的情况下重新生成项目(选择 Export Area 选项并单击“参数”选项卡中的 Press to Clear 按钮)。 Sandworm 将仅生成数据可用的区域。

预览生成还有助于定义您是否有缺失区域的数据。如果您取消了预览生成,请通过右键单击图层并选择 Generate Preview 来重新启动它。

只有一部分生成的地形在视口中可见。

更改相机可见距离:在编辑器窗口中,单击所选相机的齿轮图标并增加 Far 值。您可以设置最大值,即 900000

调整 ObjectLandscapeTerrain 的可见距离。它在编辑器设置中设置:Windows -> Settings -> Landscape -> Visibility Distance。您可以将其设置为 inf

Setting visibility distance for Landscape Terrain

当我点击运行时,我看到加载世界后黑屏,虽然场景中有摄像头。

场景默认包含一个启用了 Main Player 参数的相机。此参数定义在世界运行时显示摄像机的图像。为您要在运行时控制的相机启用此参数,例如 Sandworm 相机 - 它在地形正上方生成,并禁用所有其他相机。

是否有内置的昼夜循环系统(有星空),取决于当前的经纬度?

我们有这个任务的 IG 插件。该插件在IG模板中默认启用,您可以阅读更多这里这里.

如何使用地理坐标定位对象?

对于 ObjectTerrainGlobal,您可以在编辑器中使用 Geodetic Pivot — 作为其子对象添加的每个对象都可以使用在 latitude/longitude. 中设置的地理坐标定位在地形上

至于ObjectLandscapeTerrain,定位工具还在开发中,同时可以使用第三方源转换坐标,比如https://products.aspose.app/gis/transformation 。

以下是工作流程的说明:

  • 将对象和原点坐标转换为世界坐标(注意输入和输出投影)。

    Source coordinates of the object

    对象的源坐标(来自谷歌地图的屏幕截图)


    Source coordinates of the origin

    原点的源坐标(Sandworm 中的导出区域参数)


    Transforming coordinates using aspose.app

    使用 aspose.app 变换坐标


  • 从物体位置取原点位置:Object.X — Origin.X; Object.Y — Origin.Y

    Calculating the world coordinates

    计算世界坐标
  • 将结果用作世界中对象的 X 和 Y 坐标。

    Object positioned in the world

    对象定位在世界上

开发人员还可以通过代码使用 Geodetics Plugin 和定位对象。

IG 插件有worldToGeodetic()方法和 GeodeticsTransformer 类来定位对象。

不生成地形。 / 编辑器突然关闭。

生成地形是一项非常耗费资源的操作。对于广阔而细致的景观,您可能需要大量可用的 RAM。

我们建议使用 64 Gb RAM(至少 32 Gb)。

禁用微轮廓该工具还可以节省多达 6 Gb RAM。这可以通过运行编辑器来完成外部论据"-microprofile_enabled 0",或在编辑器中禁用它安慰.

如果在生成地形时出现崩溃,逐步一层一层添加并生成可以帮助发现数据问题。或者至少删除矢量数据层,因为它可能非常消耗。

最新更新: 2022-03-10
Build: ()