Unity GIS Terrain Loader 2.4 中文文档
描述GIS地形加载器(GIS Terrain Loader)是一款运行时-编辑器插件,支持将地理数据直接导入Unity引擎。它不仅能加载真实世界的地形数据,还能兼容从各类GIS软件或外部地形生成工具(如GlobalMapper、QGIS、WorldMachine、ArcGIS、SAS.Planet等)导出的自定义地形数据。GIS地形加载器通过加载栅格(Raster)、矢量(Vector)和数字高程
注: 2.4版本不支持WebGL ,2.5以上版本 或者pro版才支持
一. 概述
(一). 描述
GIS地形加载器(GIS Terrain Loader) 是一款运行时-编辑器插件,支持将地理数据直接导入Unity引擎。它不仅能加载真实世界的地形数据,还能兼容从各类GIS软件或外部地形生成工具(如GlobalMapper、QGIS、WorldMachine、ArcGIS、SAS.Planet等)导出的自定义地形数据。
GIS地形加载器通过加载栅格(Raster)、矢量(Vector)和数字高程模型(DEM) 数据快速创建地形,使海量数据的导入与修改变得高效便捷。
(二). 功能描述
- 导入数字地形模型(DTM)数据,生成精确的地形景观。
- 导入GIS矢量线数据,生成用于道路、河流、铁路、小径等地形样条线(Landscape Splines)。
- 导入栅格(纹理)数据,为Unity地形添加贴图。
(三). 支持的数据格式
1. DEM(数字高程模型)数据:
*.Flt
:浮点栅格文件*.Ter
:Terragen地形文件*.Tif
(16/32位)及分块Tiff:GeoTiff文件*.Asc
:Arc ASCII网格格式*.Raw
:Unity高度图数据*.Png
(灰度图):灰度像素文件*.Las
:激光雷达点云格式*.Hgt
:航天飞机雷达地形任务(SRTM)数据*.Bil
:波段按行交叉(BIL)图像文件*.Bin
:二进制浮点文件
2. 栅格(纹理)数据:
*.Jpg
、*.Png
3. 矢量数据:
*.Osm
:OpenStreetMap信息*.Shp
:ESRI几何数据
技术规格
GIS地形加载器不依赖Unity从互联网在线源(如数据提供商)直接下载数据,而是加载本地GIS数据文件,因此完全属于离线工具。
二. 快速入门
(一). GIS地形加载器编辑器窗口
- 在Unity菜单中选择 「Tools(工具)→ GIS Tech → GIS Terrain Loader」 ,打开GIS地形加载器窗口。
- 将位于 「GIS Tech/GIS Terrain Loader/Resources/GIS Terrains」 文件夹中的DEM文件拖拽至 “Terrain File”(地形文件) 字段。
- 点击 「Generate Terrain」(生成地形) 按钮。
GIS地形加载器将自动加载DEM、栅格和矢量数据,并生成对应的地形。
(二).Runtime GIS 地形加载器
- 打开位于 「GIS Tech/GIS Terrain Loader/Scenes」 文件夹中的 “Runtime GIS Terrain Loader Demo Scene” (运行时GIS地形加载器演示场景)。
- 点击 “Load Terrain File” (加载地形文件)按钮。
- 选择 地形分辨率(Terrain Resolution) ,并点击 “Generate Terrain” (生成地形)按钮。
三. Editor GIS 地形加载器
• GIS地形加载器(编辑器窗口)
我们已在GIS地形加载器(编辑器/运行时)的每个字段中添加了工具提示,以帮助用户理解各元素的功能。
1. 工具栏
- "下载示例" :提供可被GIS地形加载器生成的DEM文件示例下载链接
- "帮助" :跳转至论坛页面,用于功能咨询或问题反馈
- "重置" :将所有参数恢复为默认值
2. DEM地形文件
- DEM地形字段:载入数字高程模型文件
- 文件读取模式:支持完整文件读取或通过坐标读取局部区域
3. 高程模式、缩放与尺寸
-
地形高程模式:
- 真实世界高程:生成地形时保持上下纬线平均长度的真实比例
- 夸张值:手动设置地形高度系数(取值范围[0-1])
-
地形尺寸模式:
- 自动检测:GTL自动读取支持文件的真实地形尺寸(宽度/长度)
- 手动设置:可自定义地形尺寸(单位:千米),适用于PNG/Raw等非地理文件或未加载DEM时
-
启用水下地形:读取负值(海平面以下地形)
-
限制地形高程:手动设置最小/最大高程值(推荐用于规避极端值)
-
地形缩放:调整生成地形的缩放比例(默认值1,1,1),大型地形建议使用0.5f/0.1f/0.01f等小数值
4. 地形偏好设置
-
高度图分辨率:控制地形高度图的像素精度
-
细节分辨率:用于放置草皮和细节网格的地形单元数量(数值越低性能越好)
-
每块分辨率:单个地形块(mesh)的细分单元数(推荐值16,适用于超远视距细节对象)
-
基底贴图分辨率:当视距超过基底贴图距离时,地形复合纹理的显示精度
-
像素容差:地形贴图与生成地形之间的映射精度(数值越高精度越低,但渲染开销更小)
-
基底贴图距离:地形纹理保持完整精度的最大显示距离(提升远景地形的渲染性能)
-
地形材质模式:
- 自定义模式:可更换主地形材质(适用于HDRP管线)
5. 地形纹理系统
- 纹理模式:(注意:生成的地形区块数量将依据纹理文件夹中的贴图分块数自动匹配)
• 无纹理模式:
-
生成无贴图地形(选择此模式时无需准备纹理文件夹)
- 自定义地形颜色:可手动指定地形颜色(仅在此模式下可用)
• 带纹理模式:
-
根据纹理文件夹中的贴图自动生成带纹理地形
-
纹理加载模式:
-
自动检测:GTL将自动读取纹理文件夹中的贴图分块数量
-
手动模式:
- 当需要修改"TerrainName_Textures"文件夹中的贴图分块数时启用
- 需手动输入地形区块数量,GTL将根据设定值自动分割/合并现有贴图
- (警告:处理超大尺寸贴图时可能因内存错误导致崩溃)
- GTL会保留原始纹理文件夹并创建新副本
-
-
• 混合贴图模式:
- 使用Splat Map(混合贴图)技术为地形着色
6. 地形平滑处理
-
启用/禁用高度平滑:用于柔化地形轮廓,减少海拔突变产生的锯齿感
-
启用/禁用表面平滑:适用于存在阶梯状断层、带状色阶或未优化高度数据的地形
- 平滑强度:数值越高平滑效果越显著(1为最低平滑度)
7. 矢量数据生成
- 矢量类型:选择数据源(OSM或ShapeFile)
- 树木生成:从矢量文件加载并生成植被
- 草地生成:从矢量文件加载并生成草地
- 道路生成:从矢量文件加载并生成道路(可选Unity线渲染或EasyRoad3D插件)
- 建筑生成:从矢量文件加载并生成建筑物
8. 地形生成控制
- 清除现有地形:启用后自动删除场景中已生成的地形
- 生成地形按钮:点击启动地形生成流程
四. 准备与导入GIS数据至Unity
地形文件排序规范
地形文件必须按以下顺序排列:
地形文件命名规范
DEM文件
- 必须包含高程数据的核心文件(无固定命名要求)
栅格数据(纹理)
- 需存放在名为 "DEM文件名_Textures" 的文件夹内
(示例:若DEM文件名为Alps.flt,则纹理文件夹应命名为Alps_Textures)
矢量数据
- 使用OpenStreetMap/ShapeFile格式文件
- 需命名为 "DEM文件名_VectorData"
(功能说明:用于生成树木/草地/道路/建筑等矢量要素)
纹理文件命名规则
-
配置文件路径:
GIS Tech/GIS Terrain Loader/Resources/TextureSourceDic/TextureSourceDic.json
-
技术特性:
- 该JSON文件定义了GTL可识别的纹理命名格式
- 支持动态扩展新格式(如Globalmapper的瓦片命名规则:
Tile__{x}__{y}
)
-
文件命名与加载规则
GTL将根据以下规范从纹理文件夹读取并应用贴图:
- 命名要求:所有纹理必须按照示例规范重命名(如
Tile__{x}__{y}.jpg
) - 加载逻辑:系统自动匹配文件名并对应分配到相应地形区块
- 命名要求:所有纹理必须按照示例规范重命名(如
-
加载示例
投影文件(.Prj)设置规范
支持的投影类型
- 地理坐标系(Geographic Lat/Lon)
- 通用横轴墨卡托(UTM)
- 兰伯特(Lambert)
配置要求
- 非地理坐标系文件需提供.prj投影文件
- 地理坐标系文件(默认WGS84)无需额外配置
(操作指引详见示例目录:Example_ASC/Example_FromLidar
)
矢量数据配置规范
多源矢量数据加载
GTL支持混合加载多种矢量数据格式(OSM/ShapeFile等),操作流程如下:
-
文件放置
- 将所有OSM/SHP文件放入
DEM文件名_VectorData
文件夹 - 无需手动分类(系统自动通过生成器智能过滤)
- 将所有OSM/SHP文件放入
-
技术特性
- 自动识别各矢量数据类型(道路/建筑/植被等)
- 支持批量加载(文件数量无硬性限制)
注:矢量数据文件夹需与DEM文件保持同名+_VectorData
后缀(例:Alps.flt
对应Alps_VectorData
文件夹)
ShapeFile
+ OSM files
GIS数据导入路径规范
编辑器模式(Editor Mode)
- 必须将所有地形数据导入至:
GIS Tech/GIS Terrain Loader/Resources/GIS Terrains
文件夹
(注:此为Unity编辑器专用路径)
运行时模式(Runtime Mode)
-
可选存储位置:
StreamingAssets
文件夹(推荐)- 任意自定义路径
(支持动态加载外部存储设备数据)
生成地形数据的存储位置
所有通过GIS地形加载器生成的地形数据将自动保存至:
Generated GIS Terrains
文件夹
五. 地形表面与高度平滑处理
解决的问题
GIS地形加载器提供专业级地形平滑处理功能,可有效解决以下常见地形生成问题:
- 锯齿状边缘(Jaggies)
- 阶梯状断层(Terraces)
- 色带分层(Banding)
- 未优化的原始高度数据
(图示说明:展示1025分辨率高度图的处理对比效果)
平滑强度控制
-
数值调节:
- 数值越高 → 平滑效果越显著
- 设为1 → 保持最小平滑度
-
技术提示:
- 过度平滑会导致地形特征丢失
- 高频细节(如岩石纹理)会随平滑强度增加而衰减
(操作建议:根据项目需求在细节保留与视觉平滑间取得平衡)
矢量数据与预制件系统
简介
GIS地形加载器(GTL)提供完整的矢量数据转化功能,可通过OSM/ShapeFile矢量文件生成:
支持生成的3D要素类型
- 自然要素:草地、树木
- 人工构筑物:道路、建筑
技术特性
-
预制件架构
- 全部采用基于ScriptableObject的可定制预制件
- 开放类型库管理(支持增删改查操作)
-
参数化配置
- 自由调整各类要素参数
- 支持真实世界比例还原
(操作提示:通过编辑器界面可实时修改生成要素的密度、尺寸等属性)
预制件创建菜单
路径:
GIS Terrain Loader → Create Vector Prefab
操作流程:
-
在Unity编辑器顶部菜单栏选择该路径
-
从下拉菜单中选择需要生成的预制件类型:
- 植被(树木/草地)
- 道路网络
- 建筑群
预制件文件夹
树木预制件配置指南
创建流程
- 菜单导航:
Unity编辑器顶部菜单栏选择GIS Terrain Loader → Create Vector Prefab → Tree
- 生成位置:
新建的树木预制件将自动存储在项目资源/Trees
文件夹内
技术特性
- 自动继承矢量数据中的树种分布参数
- 支持LOD(多细节层次)配置
- 可批量生成不同树种变体
(操作提示:通过Inspector面板可调整树木密度、尺寸等生物群落参数)
- Tree ScriptableObject parameters
树木预制件参数详解
1. 树木类型 (Tree Type)
- 功能:定义植被种类(具体配置详见下节说明)
2. 树木密度 (Tree Density)
- 作用:控制矢量多边形区域内树木的平均分布数量
- 技术逻辑:基于多边形面积自动计算单位面积植被量
3. 基准缩放系数 (Tree Scale Factor)
- 功能:调整已定义树种的全局尺寸
- 注意:仅对
Tree Type
中指定的模型生效
4. 随机缩放系数 (Tree Random Scale Factor)
- 功能:为同区域树木添加尺寸随机性
- 效果值:
0
=完全统一尺寸1
=最大随机差异(推荐0.2-0.5增强自然感)
5. 树木预制件库 (Tree Prefab)
-
内容:该区域可生成的所有树木预制件列表
-
工作流:
- 拖拽预制件至列表
- 系统按比例自动分布
(生态模拟建议:组合使用密度/随机系数参数可创建更自然的植被分布效果)
建筑预制件配置说明
创建步骤
- 菜单操作:
在Unity编辑器顶部导航至GIS Terrain Loader → Create Vector Prefab → Building
- 生成路径:
新建建筑预制件将自动存入项目资源/Buildings
文件夹
核心特性
- 自动加载机制:
系统自动识别Buildings
文件夹内所有预制件
(无需手动添加至列表) - 矢量数据适配:
自动匹配OSM/ShapeFile中的建筑轮廓数据
工作流提示
- 建筑群生成规模与原始GIS数据精度正相关
- 支持LOD组配置优化渲染性能
(技术说明:此模块专为大规模城市建模设计,建议搭配"Building Type"参数使用)
- Building ScriptableObject parameters
建筑预制件参数详解
1. 建筑类型 (Building Type)
- 功能:定义建筑分类标准(详见下节说明)
2. 屋顶类型 (Roof Type)
-
选项:
- 穹顶式 (Dome)
- 平顶式 (Flat)
-
应用:自动适配不同建筑风格的屋顶结构
3. 高度调节 (Height)
- 功能:自定义建筑垂直尺度
- 技术:支持米制单位输入或按楼层数换算
4. 材质系统
- 外墙材质 (Wall Materials) :设置建筑立面纹理
- 屋顶材质 (Roof Materials) :独立配置屋顶贴图
- 特性:支持PBR材质流程
5. UV贴图控制 (Wall and Roof Tilling)
-
功能:精确调节纹理映射比例
-
工作流:
- 基准值=1.0(原始UV比例)
- 增大数值提高纹理重复密度
(城市设计建议:组合使用高度随机化与材质变体可增强建筑群自然感)
道路预制件系统
道路生成功能
-
双模式支持:可在编辑器模式和运行时模式下生成道路网络
-
操作步骤:
-
勾选
生成道路
选项 -
选择道路生成方式:
EasyRoad3D
(需安装该插件)Unity简单线渲染器
-
预制件创建
- 菜单路径:
GIS地形加载器 → 创建矢量预制件 → 道路
- 生成位置:
新建的道路预制件将自动存储在项目资源/Roads
文件夹中
技术说明
- 自动加载机制:系统会自动识别
Roads
文件夹内的所有道路预制件(无需手动添加到列表) - 数据兼容性:支持OpenStreetMap和ShapeFile格式的矢量道路数据
(注:使用EasyRoad3D插件时需确保已导入项目资源包)
- Road ScriptableObject parameters
道路预制件参数配置
道路类型 (Road Type)
- 功能:定义道路分类标准(具体配置详见下节说明)
材质模式 (Material mode)
-
自动模式:
- 从
Resources/Environment/Roads/Materials
路径自动加载材质 - 根据ScriptableObject名称智能匹配ES3/LineRenderer材质
- 从
-
自定义模式:
- 手动指定道路材质
道路材质 (Road Material)
- 作用:当选择自定义模式时,GTL将使用此处指定的材质
道路参数
- 宽度 (Road width) :设置道路的物理宽度(单位:米)
- 颜色 (Road Color) :定义道路的基础色调
(技术说明:自动模式下的材质命名需与ScriptableObject名称保持严格一致)
重要技术说明
EasyRoad3D 使用须知
-
前置要求:
- 必须已下载并导入EasyRoad3D资源包至项目
- 运行时生成3D道路需使用EasyRoad3D专业版
常见错误处理
情况1:首次集成报错
-
问题特征:初次导入EasyRoad3D包时出现编译错误
-
解决方案:
-
确保启用图示标注的代码段(参考文档配图)
-
手动添加编译宏:
- 路径:
编辑 → 项目设置 → Player
- 在
脚本编译符号
字段添加:EASYROAD3D
- 路径:
-
(操作提示:错误截图可查阅文档第17页配图示例)
手动配置说明
添加编译符号步骤
-
打开设置面板
通过Unity顶部菜单选择:编辑 → 项目设置 → Player
-
配置编译符号
在Player设置
面板中:- 定位到
Scripting define symbol
输入框 - 手动添加(二选一):
✓EASYROAD
✓EASYROAD3D
- 定位到
-
完成设置
保存后Unity将自动重新编译项目
(技术说明:此操作用于强制激活EasyRoad3D的代码编译路径,解决首次导入时的符号缺失问题)
技术配置说明
情况2:移除EasyRoad3D时的处理
-
操作流程:
-
当从项目中移除EasyRoad3D资源包时
-
需手动删除
Player设置
中的编译符号:- 进入:
编辑 → 项目设置 → Player
- 在
脚本编译符号
字段删除:
•EASYROAD
•EASYROAD3D
- 进入:
-
道路材质自定义
-
配置路径:
@GIS Tech/GIS Terrain Loader/Resources/Environment/Roads
- 支持修改所有道路材质资源
草地预制件系统
创建草地模型
- 菜单路径:
GIS地形加载器 → 创建矢量预制件 → 草地模型
- 生成位置:
新建文件将存储在Grass/Models
文件夹
技术特性
-
基于ScriptableObject架构
-
参数体系与Unity原生Detail系统完全兼容
- 支持密度/大小/颜色等标准属性配置
(注:草地模型数据可通过矢量文件属性批量生成)
草地预制件创建指南
操作步骤
- 创建路径
通过Unity菜单选择:GIS地形加载器 → 创建矢量预制件 → 草地预制件
- 生成位置
新建的预制件将自动存储在:项目资源/Grass
文件夹
技术实现
-
数据结构:基于ScriptableObject的智能预制件
-
数据绑定:
自动关联GIS类型标识与草地模型数据- 支持从矢量文件读取植被分布参数
- 可批量生成不同生态区域的草地变体
(注:通过Inspector面板可调整密度/尺寸等生物群落参数)
草地参数配置
核心参数
- 草地类型:(详见下节说明)
- 分布密度:控制同类型区域内的植被分布密度
- 预制件库:为该区域配置随机生成的草地模型集合
六. 自定义预制件类型与GIS属性
• GIS属性系统
通过GIS应用程序可轻松创建并配置矢量数据属性。本节将详解矢量数据库的定制方法。
GIS矢量数据基础
-
数据结构:
- 由点/线/面要素构成的地理数据集
- 每个要素(Feature)包含:
✓ 空间坐标信息
✓ 属性描述数据
-
核心特性:
- 不仅记录物体空间位置
- 同时存储物体特征属性(如树种/高度等)
操作示例:创建树木区域
使用工具:GlobalMapper
步骤:
-
绘制树木分布矢量面
-
在要素属性面板中添加:
- 树种类型
- 树龄层级
- 植被密度等属性字段
(技术说明:导出的OSM/Shapefile将保留所有属性数据供GTL读取)
当点击要素信息时,会显示该属性面板:
此时,文件已可导出为OSM格式或Shapefile格式。
自定义GTL脚本配置指南
属性读取配置流程
-
打开脚本目录
定位至:GIS Tech/GIS Terrain Loader/Scripts/GISTerrainLoaderVector/GISTerrainLoaderVectorFilter
-
编辑枚举类
修改GISTerrainLoaderTableKeyEnum.cs
文件:- 在枚举结构中添加新增的属性字段名
- 保存编译后即可被GTL识别
(操作图示:参见文档第22页的代码修改示例)
脚本定制步骤
树木类型枚举配置
- 打开脚本文件
导航至项目中的:GISTerrainLoaderFilterTags.cs
类文件 - 修改TreeType枚举
在枚举结构中添加新的树种标识符:
(操作提示:需确保枚举值与GIS矢量数据中的"type"字段完全一致)
矢量数据过滤配置流程
ShapeFile属性过滤设置
-
打开加载器脚本
定位至:GISTerrainLoaderShapeFileLoader.cs
-
修改过滤函数
在文件内的数据加载函数中:// 在属性过滤处添加新字段(示例) if (feature.Attributes.ContainsKey("树种类别")) { var treeType = feature.Attributes["树种类别"]; // 添加自定义处理逻辑 }
(关键配置点:需保持字段名与ShapeFile属性表完全一致,包括大小写)
对于OSM文件:在GISTerrainLoaderOSMFileLoader.cs文件中执行相同操作。
if (BaseTags.ContainsKey(TableTagKeyEnum.Leisure) ||
BaseTags.ContainsKey(TableTagKeyEnum.Landuse))
{
FiltredTreesData.Ways.Add(wayDic.Key, wayDic.Value);
FiltredGrassData.Ways.Add(wayDic.Key, wayDic.Value);
}
最后一步:创建树木预制件并将其类型设为"forest",然后添加到预制件列表中。
We can do the same steps for other vector prefabs!
七. PDAL插件说明
-
通过PDAL生成地形
GTL通过PDAL管道从带有地理参考的LAS文件生成地形。如果项目中不需要使用LAS文件,可以直接删除plugins文件夹中的pdal库而不会影响其他功能(此功能仅限GTL 2.4及以上版本)。
-
PDAL插件激活
PDAL插件以压缩文件形式存放在plugins文件夹中,激活该库需要执行以下步骤:
- 将Lidar.rar解压到plugins文件夹
- 返回Unity并打开PlayerSettings
- 在Scripting Define Symbols字段添加:GISTerrainLoaderPdal
- Unity将自动重新编译项目
- 重启Unity后即可设置LAS文件生成地形
八. 地形容器参数
• 地形元数据
地形生成后,可通过检查器查看其元数据面板
• 修改地形参数
若需修改多区块地形的参数,无需逐个区块手动调整,可直接通过容器对象脚本或检查器统一修改所需参数
高度图导出
GTL支持将生成的地形高度图导出为以下格式:
- Raw格式(8-16位)
- PNG/JPG灰度图
九. 运行时GIS地形加载器
简介
打开位于《GIS Tech/GIS Terrain Loader/Scenes》文件夹中的"Runtime GIS Terrain Loader Demo Scene"场景,点击"Load Terrain File"按钮,选择地形分辨率后点击"Generate terrain"生成地形。
使用摄像机查看生成的地形。
可通过检查器修改地形参数(参数与GTL编辑器中的相同)。
如何使用运行时GTL脚本
-
在场景中创建新的GameObject
-
添加RuntimeTerrainGenerator.cs脚本
-
添加GISTerrainLoaderRuntimePrefs.cs脚本
-
创建自定义脚本(GenerateSimpleTerrain.cs)
-
添加以下代码
/* Unity GIS Tech 2020-2021 */
using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine;
namespace GISTech.GISTerrainLoader
{
// In this demo example we will load/Generate terrain from
// StreamingAsset folder
public class GenerateSimpleTerrain: MonoBehaviour
{
public KeyCode GenerateKey;
private string TerrainFilePath;
private RuntimeTerrainGenerator RuntimeGenerator;
private GISTerrainLoaderRuntimePrefs RuntimePrefs;
private Camera3D camera3d;
void Start()
{
camera3d = Camera.main.GetComponent<Camera3D>();
TerrainFilePath = Application.streamingAssetsPath + "/GIS Terrains/PNG
Demo/ASTER30m.png";
RuntimePrefs = GISTerrainLoaderRuntimePrefs.Get;
RuntimeGenerator = RuntimeTerrainGenerator.Get; }
void Update()
{ if(Input.GetKeyDown(GenerateKey)) GenerateTerrain(TerrainFilePath);
} private void InitializingRuntimePrefs(string TerrainPath) {
RuntimeGenerator.Error = false;
RuntimeGenerator.enabled = true;
RuntimeGenerator.FilePath = TerrainPath;
RuntimeGenerator.RemovePrevTerrain = true;
//Load Real Terrain elevation values
RuntimePrefs.TerrainElevation = TerrainElevation.RealWorldElevation;
//Note that GTL Can not Detect Real PNG dimensions so we need to set them manually
RuntimePrefs.terrainDimensionMode = TerrainDimensionsMode.Manual;
RuntimePrefs.terrainDimensions = new Vector2(15, 15);
RuntimePrefs.heightmapResolution = 513;
RuntimePrefs.textureMode = TextureMode.WithTexture;
}
private void GenerateTerrain(string TerrainPath)
{
if (!string.IsNullOrEmpty(TerrainPath) &&
System.IO.File.Exists(TerrainPath))
{
InitializingRuntimePrefs(TerrainPath);
StartCoroutine(RuntimeGenerator.StartGenerating());
} else
{
Debug.LogError("Terrain file null or not supported.. Try againe"); return;
}
}
}
}
经纬度坐标获取与设置
设置Unity世界空间位置的方法:
var Newposition = GeoRefConversion.LatLonToUWS(DVector2 latlon, TerrainContainerObject container); myGameobj.Transform.position = Newposition;
获取游戏对象经纬度和高程的方法:
public DVector3 GetLatLonElevation(Vector3 position, TerrainContainerObject container)
{ var LatLonPos = GeoRefConversion.UnityWorldSpaceToLatLog(position, container);
var Pos = new DVector3(LatLonPos.x, LatLonPos.y,
Math.Round(GeoRefConversion.GetRealWorldHeight(container, position), 2));
return Pos;
}
如何使用投影系统
(如何获取UTM坐标而非地理经纬度坐标?)
//Set Projection Type
RuntimePrefs.Projection = Projections.UTM;
//Get Object unity world space position var ObjPos= myGameobj.Transform.position; string utmPos = GetPosition(ObjPos, RuntimePrefs.Projection) ;
//Debug or set string to UI text
Debug.Log(utmPos);
//Function to Get position in the selected projection private string GetPosition(Vector3 SpacePos,Projections proj)
{
var LatLon = GeoRefConversion.UWSToLatLog(SpacePos, Scale);
return GeoRefConversion.ConvertLatLonTO(LatLon, proj); ; }
十. 支持的投影系统
十一. 故障排除
o 新生成地形分辨率/精度不足:
- 提高高度图分辨率
- 增加新地形数量
o 出现错误提示"Terrain Dimensions: 0 X 0 Km",无法检测地形尺寸,加载区域边界为:P1 - {12018159.109,5037755.431}P2 - {12018159.109,5037755.431}
此问题由不支持的坐标系导致
o 项目构建后出现粉色材质:
独立构建时若未使用地形着色器需手动添加:
路径:“Player Settings -> Graphics -> Built-in Shader Settings”
添加:
- Nature/Terrain/Diffuse
- Nature/Terrain/Specular
- Nature/Terrain/Standard
o 地形变形(尺寸正确但高度异常):
检查地形元数据面板中的最小/最大高程值,如不正确需启用"limit terrain elevation mode"并设置正确高程范围[m]
十二. 使用限制
- 处理大量地形时可能因内存错误崩溃
- 建议:
• 生成单个高分辨率地形或多个小地形(分辨率≤128)
• 推荐使用小尺寸纹理节省内存 - 不支持OpenGL
- 未在Unity Mac测试
- 不支持地形流式加载
十三. 技术支持
问题咨询(24小时内回复):
邮箱:SalahKe2008@Gmail.com
十四. 相关链接
- Asset Store页面:
https://assetstore.unity.com/packages/tools/integration/gis-terrain-loader-147632 - 示例数据:
https://assetstore.unity.com/packages/tools/integration/gis-terrain-loader-data-exemples152552 - 支持论坛:
https://forum.unity.com/threads/released-gis-terrain-loader.726206/ - YouTube频道:
https://www.youtube.com/channel/UCEQQEpPvbUqHksoxSB8_cQ/videos?view_as=subscriber
十五. 教程
• 下载免费GIS数据
本教程视频将演示如何下载GIS数据(栅格、DEM和矢量)以用于GIS地形加载器。
视频链接:https://youtu.be/0WIfOIO7ByY
程序化地形贴图混合教程
本视频教程将展示通过GIS地形加载器添加纹理的三种方法:
- 使用纹理:从指定文件夹加载真实世界影像纹理
- 无纹理:不分配任何纹理(可选"自定义地形颜色")
- 混合贴图:根据可自定义高度应用纹理
视频链接:https://youtu.be/vhL1q3krPC0
LiDAR转Unity地形教程(LAS转DEM)
本视频教程将演示如何通过GIS地形工具将LiDAR点云数据(LAS文件)转换为Unity地形。
视频链接:https://youtu.be/78ZRL8x6MBE
WorldMachine到Unity
在这个教程视频中,您将学习如何使用GIS Terrain Loader将Terragen文件从WorldMachine导入到Unity 3D(编辑器和运行时)。
视频链接:https://youtu.be/liO8lNqE6Jw
QGIS和SAS Planet到Unity
在这个教程视频中,您将学习如何使用GIS Terrain Loader将GeoTIFF文件从QGIS和栅格数据从SAS.Planet导入到Unity,以生成Unity地形(编辑器和运行时)。
视频链接:https://youtu.be/bIuXQltiyfI
更多推荐
所有评论(0)