鸡西市网站建设_网站建设公司_支付系统_seo优化
2026/1/6 9:13:59 网站建设 项目流程

目录

一、前言

二、创建蓝图接口

1.头文件中声明蓝图接口

2.读取矢量面相关代码

三、关卡蓝图示例


一、前言

目前产品已经支持多区域开挖的能力,在实际开发中如何使用已有的矢量面数据进行多区域开挖呢,比如面数据集、*.shp矢量数据、*.kml矢量数据等,本文将以面数据集为例,详细介绍下如何操作。

本文以12.0.1版本的SuperMap Hi-Fi 3D SDK for Unreal产品(以下简称UE插件)为例,在UE5.3项目中使用,仅供参考。

二、创建蓝图接口

创建一个蓝图接口,实现从矢量面数据集中读取多个面区域,并将其作为开挖区域应用到地形开挖分析中。

1.头文件中声明蓝图接口

在 SuperMap_ExcavationInstance.h 头文件中声明蓝图接口

2.读取矢量面相关代码

在 SuperMap_ExcavationInstance.cpp文件中添加读取矢量面相关代码,实现思路:

(1)解析数据源信息,打开SuperMap数据源文件,查询指定数据集中的三维区域几何数据;

(2)将查询到的几何数据转换为三维区域对象(GeoRegion3D)

(3)将三维区域添加到场景的全局图像中作为挖方区域(仅在开启地形图层模式时执行)

void ASuperMap_ExcavationInstance::Test() { TArray<Geometry*> arrGeometry; FString strName = TEXT("NewRegion3D@D:/DataSource.udbx"); FString leftS, rightS; strName.Split("@", &leftS, &rightS); DataSource dataSource = SuperMapSDK::UnrealEngine::Data::DataSource(); Gamebool result = dataSource.Open(rightS); if (result) { Dataset* pDataset = dataSource.GetDataset(leftS); if (pDataset != NULL) { arrGeometry = pDataset->Query(); } dataSource.Close(); } for (int i = 0; i < arrGeometry.Num(); i++) { GeoRegion3D* pGeoRegion3D = (GeoRegion3D*)arrGeometry[i]; if (m_bIsTerrainLayer) { FString strTag = FString::Printf(TEXT("TerrainExcavation_%d"), i); GlobalImage* pGlobalImage = RealspaceView::GetSingleton()->GetSceneControl()->GetScene()->GetGlobalImage(); pGlobalImage->AddExcavationRegion(pGeoRegion3D, strTag); } } }

三、关卡蓝图示例

BuildExcavation 函数:

参数说明
Target

Super Map Excavation Instance 对象引用函数

Excavation是否开挖

SelectLayer 函数:

参数说明
Target

Super Map Excavation Instance 对象引用函数

str Layer Name开挖图层名
Is Select

是否选择图层

开挖效果:

如需添加开挖贴图可以添加贴图蓝图接口:SetSideTexture(侧面纹理)、SetTopTexture(底面纹理)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询