全网最细:基于卫星数据创建真实Unity地形


变更记录

  • 2024-9-10 文章发布;

前言

使用Unity+Real World Terrain插件根据真实卫星数据快速创建高质量的地形、网格、Gaia 图章和 RAW 文件,适用于大场景、大背景的制作。

一、高程、影像数据与Unity地形的关系

高程数据DEM全称数字高程模型,是通过有限的地形高程数据实现对地面地形的数字化模拟(即地形表面形态的数字化表达),实际上,它是一种数字阵列信息模型(x,y,z),描述地理空间中的地形高低起伏,通过表示模型和渲染后,成为人们看到的地形图,也可以简单理解为高度图,即Elevation
高程图示意
影像数据全称卫星遥感图像,也叫卫星图或影像图,是借助卫星向用户反馈真实的地球地表面貌图像,影像图不带高度信息

在这里插入图片描述
高程图提供Unity地形的起伏数据,影像图提供Unity地形的贴图数据,两者的叠加融合形成完成的Unity地形文件

在这里插入图片描述

二、Real World Terrain简介

Real World Terrain是一款Unity地形插件,可根据真实地球高程数据生成地形、网格、Gaia 图章和 RAW 文件,并根据 Open Street Map 中的数据生成建筑物、道路、河流、草地、树木。

  • 兼容Unity 2017.4 LTS 及更高版本;
  • 渲染管线:Built-InURPHDRP
  • 高度贴图精度:ArcGIS 分辨率每像素最高 10 米;Bing Maps 分辨率每像素最高 10 米;Mapbox精度未知;SRTM v4.1 分辨率每像素最高 90 米;SRTM30 分辨率每像素最高 30 米。
  • 卫星影像供应商:ArcGIS、DigitalGlobe、Map Quest、Mapbox、Mapy.CZ、Nokia Maps (here.com)、Virtual Earth (Bing Maps)、Open Street Map、Sentinel-2
  • 支持自定义 url下载卫星影像瓦片数据;
  • 卫星图像分辨率为每像素最大 0.25 米;
  • 支持创建:Unity Terrains、网格、Gaia 图章、RAW 文件;
  • 支持为每种地形生成常规纹理和 Huge Texture(最高 26624x26624px);
  • 支持基于 Mapbox 矢量生成地形图层。
  • 支持基于 Open Street Map 创建建筑、道路、河流、树木等对象;
  • 支持直接从 Google Maps 上选择区域的工具。

官方说明文档地址:https://infinity-code.com/documentation/real-world-terrain.html
UnityAssetStore地址:https://assetstore.unity.com/packages/tools/terrain/real-world-terrain-8752#releases
Real World Terrain 4.9.4(latest)资源包下载:CSDN

二、Real World Terrain导入与调用

使用UnityHub创建新工程,编辑器版本需大于Unity 2017.4 LTS,渲染管线根据需要选择,以本文选择URP模板,输入项目名称,点击创建。

在这里插入图片描述
在编辑器【Project】栏选中【Assets】,右击【Import Package】-【Custom Package】选择Real World Terrain 4.9.4.unitypackage,点击导入。

在这里插入图片描述
编辑器弹出的【Import Unity Package】面板,点击【All】选中所有资源,点击【Import】导入,等待编辑器响应。

在这里插入图片描述

Real World Terrain插件导入成功后,编辑器【Assets】栏里会多新增文件【Infinity Code】,即为导入成功。

在这里插入图片描述
点击编辑器控制栏【Windows】-【Infinity Code】-【Open Real World Terrain】即可调出控制面板,可将面板拖曳与【Inspector】栏合并,方便观察操作。

在这里插入图片描述
在这里插入图片描述

三、主要功能解析

3.1 区域控件Area

  • 支持采用十进制【decimal】或通用横轴墨卡托【UTM】形式设置选取坐标,通过区域左上角和右下角的坐标,框定区域范围。在【Top-Left】【Bottom-Right】输入你要生地地形区域的经纬度坐标。可以使用本插件提供的地图选点工具Real World Terrain Helper或者去在线地图拾取坐标点。

在这里插入图片描述
在这里插入图片描述

  • Use Anchor - 是否使用锚点坐标。如果是,则区域中的零点位置将具有指定的坐标。
  • 从上到下依次为:①插入在地图选点工具中复制的坐标;②打开地图选点工具帮助程序;③辅助设置当前经纬度的最佳参数;④在浏览器中打开您当前位置的 Open Street Map

在这里插入图片描述

  • 地图选点工具Real World Terrain Helper
    插件提供了一个重要的地图选点工具——Real World Terrain Helper,基于这个地图选点工具,用户可以快速筛选要下载的地图区域。在插件控件面板点击【Run the helper】调出地图选点工具界面。
    ①卫星数据显示模式:卫星影像图/街道图/地形图;
    ②地图选点:点击调出区域选框,可以拖动节点来调整区域大小,鼠标左键拖曳地图,ctrl+鼠标左键拖曳区域选框;
    ③高程数据源切换:SRTM、SRTM30、Bing Maps、MapBox
    ④框选区域左上与右下的经纬度坐标,通过两点确定区域;
    ⑤添加POI点至地图,ctrl+鼠标左键拖动POI点;
    ⑥复制框选区域经纬度坐标,支持一键粘贴至Unity编辑器。
    在这里插入图片描述
    在这里插入图片描述
    在插件控件面板点击【Insert the coodinates from the cliboard】,可以将地图选点区内复制的区域经纬度坐标进行粘贴。

在这里插入图片描述

3.2 地形控件Terrains

  • Result(结果类型):正在创建的对象的类型,包括以下四种:
    ·Terrain标准 Unity 地形(创建对象后,可以使用Unity地形工具来处理地形);
    · 网格Mesh
    · Gaia Stamp(另一经典Unity地形插件Gaia支持的地形格式);
    ·RAW 文件。

在这里插入图片描述

  • Count terrains: 按经度和纬度划分的新 terrain 的数量;

  • Align Water Line:如果禁用,则地形在最小高程处的 Y 轴将为零,如果启用,则 terrain 在海平面上的 Y 轴为零(零高程)

  • Size type:确定创建的地形大小:
    ·Real world sizes实际大小: 宽度等于上纬线和下纬线长度的平均值,高度等于子午线的长度,推荐
    ·Mercator sizes墨卡托大小: 一度纬度和经度的大小是固定的;
    ·Fixed size固定大小: 每个地形或网格将具有固定的指定大小。

  • Scale: 新区域的缩放因子;

  • Elevation range 最大标高: 新区域的最大高度;
    ·Auto Detect自动检测 - 自动确定最大高度,推荐
    ·Fixed Value固定值;
    ·Real World Value真实世界值 - 最大高度为 15,000 米。

  • GenerateUnderwater:勾选后,Max underwater depth 为当高度贴图没有值时使用的值,通常是大海、海洋、湖泊,使用绝对深度,例如-30

  • Height Map Resolution 高度贴图分辨率: 地形高度贴图的像素分辨率,分辨率越高,生成的地形高度越精准

  • Detail Resolution细节分辨率 :可用于将细节放置到 Terrain 瓦片上的单元格数,将此值平方以生成单元格网格,分辨率越高,地形细节越高,表现效果越好

  • Resolution Per Patch单个补丁(网格)中的单元数:该值的平方形成单元格网格,并且必须是细节分辨率的除数;

  • Base Map Resolution 底图分辨率:当从大于 Basemap Distance (底图距离) 的距离查看地形时,要在地形上使用的复合纹理的分辨率,实际上就是远看时最高层级影像未加载时图像的模糊程度,分辨率越高,远景图像越清晰

3.3 数据源控件Elevation Provider

  • SRTM:无需API key即可使用;
  • SRTM 30:需要 earthdata.nasa.gov 的登录名/密码;
  • 必应地图: 需要的 Bing 地图 API 密钥;
  • MapBox: 需要 Mapbox API 密钥(公共令牌)。
    注:这些平台貌似无法提供国内高程数据,部分数据下载需要科学上网。
  • 精度:
    ·ArcGIS 分辨率每像素最高 10 米;
    ·Bing Maps 分辨率每像素最高 10 米;
    ·Mapbox未知;
    ·SRTM v4.1 分辨率每像素最高 90 米;
    ·SRTM30 分辨率每像素最高 30 米。

在这里插入图片描述

3.4 材质控件Texture

注意:若不勾选材质控件,生成的地形将是白模

  • Result Type:纹理结果的类型:
    ·Regular Texture:将为每个地形生成一个纹理,并将其设置为第一个地形图层。
    · Huge Texture:将为每个地形生成一个巨大的纹理(最大 26624x26624 像素),为了显示,将创建 Huge Texture 材质并将其设置为地形材质,(重要说明:使用 Huge Texture 时,不能使用 Terrain Layers)。
    ·Terrain Layers:地形图层将根据 Mapbox 中的矢量瓦片数据生成,可以灵活配置每个层和标签的生成规则。

  • 材质分辨率:分辨率越大,贴图越清晰

  • Provider :将要下载的 texture 的源,来自不同提供商的纹理在质量、最大细节和使用条件方面各不相同;

  • Fromat:贴图的格式;

  • Max level:贴图纹理的卫星影像层级,层级越高,贴图越精密,清晰。

在这里插入图片描述

四、操作示例

使用地图选点工具——Real World Terrain Helper选择区域,复制经纬度坐标点,点击【Insert the coodinates from the cliboard】粘贴经纬度坐标至编辑器,高程数据源【Elevation】选择【SRTM】SRTM无需申请API key就能调用),勾选【Textures】(不勾选生成的地形不带贴图和材质),其余配置全部默认,点击【Start】生成地形数据。

在这里插入图片描述

生成的地形文件为Unity标准地形文件,可以通过【Inspector】-【Terrain】面板进行地形调整。

在这里插入图片描述

地图选点工具中设置的POI点在Unity编辑器内表现为一个方形Cube,可以用于目标点定位。

在这里插入图片描述


OVER