SuperMap Hi-Fi 3D SDK for Unreal 读取矢量面进行多区域地形开挖

目录

一、前言

二、创建蓝图接口

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(底面纹理)。

相关推荐
chaoyuanl1 分钟前
超元力玻璃剧场:裸眼3D、8K高清与悬空栈桥的成熟文旅解决方案
大数据·人工智能·3d·xr·vr
苏州福兰克1 小时前
运行裸眼3D显示器对电脑显卡配置有什么要求?
3d·计算机外设·电脑
Martina_032115 小时前
AI生成的3D模型打印后沿层纹开裂?用6步检查方向、壁厚与填充
图像处理·人工智能·数学建模·3d·自然语言处理·游戏策划·1024程序员节
Solange__21 小时前
在线3D预览器、Blender和游戏引擎怎么选?按5类任务比较格式、隐私与编辑性
人工智能·游戏·3d·游戏引擎·blender·1024程序员节·关卡设计
暴走约伯2 天前
【VFX工具链源码拆解 02】告别机械劳动(上):一键统改百个子粒子颜色与批量重命名
3d·unity·c#·材质
Solange__2 天前
AI世界模型、3D场景生成和游戏引擎怎么选?按5类任务比较交互、物理与导出
开发语言·人工智能·游戏·平面·3d·自然语言处理·游戏引擎
Solange__2 天前
物流园区怎么用AI生成3D调度预演?从道路底图、车辆转弯到网页评审
图像处理·人工智能·游戏·3d·ai·自然语言处理·关卡设计
言乐63 天前
通过 3D 动画直观演示球形瓶内可滑动半圆机构在倾倒时防粘盖、回正时刮膏体的运动学过程
python·3d·django·virtualenv·pygame
苏州福兰克3 天前
没有3D内容,裸眼3D显示器还能用吗?
3d·计算机外设
慧都CAD开发笔记3 天前
汽车零部件检测软件如何用统一接口直读多种 CAD:3D InterOp 的三类数据接入
3d·汽车