3DTileset for Unreal
3DTileset for Unreal
插件(Cesium for UE4
的阉割版)可以在 UE4
坐标系统下直接加载 3DTileset
数据(局部坐标,脱离大的世界坐标系)。
FileSystem
Demo
代码生成
使用代码在编辑器模式下向关卡中添加Actor
,故可以通过 Slate UI
交互方式向编辑器中添加3DTileset
数据。
const std::string name="3DTileset";
const std::string file_url="file:///E:/code/3d-tiles-samples/tilesets/TilesetWithDiscreteLOD/tileset.json";
UWorld* pCurrentWorld = GEditor->GetEditorWorldContext().World();
ULevel* pCurrentLevel = pCurrentWorld->GetCurrentLevel();
AActor* pNewActor = GEditor->AddActor(
pCurrentLevel,
AH3DTileset::StaticClass(),
FTransform(),
false,
RF_Public | RF_Transactional);
AH3DTileset* pTilesetActor = Cast<AH3DTileset>(pNewActor);
pTilesetActor->SetActorLabel(UTF8_TO_TCHAR(name.c_str()));
if (!file_url.empty()) {
pTilesetActor->SetUrl(UTF32_TO_TCHAR(file_url.c_str()));
}
测试数据
(Documentation/data/TilesetWithDiscreteLOD/tileset.json
{
"asset": {
"version": "1.0"
},
"geometricError": 500,
"root": {
"transform": [
96.86356343768793,
24.848542777253734,
0,
0,
-15.986465724980844,
62.317780594908875,
76.5566922962899,
0,
19.02322243409411,
-74.15554020821229,
64.3356267137516,
0,
1215107.7612304366,
-4736682.902037748,
4081926.095098698,
1
],
"boundingVolume": {
"box": [
0,
0,
0,
7.0955,
0,
0,
0,
3.1405,
0,
0,
0,
5.0375
]
},
"geometricError": 1,
"refine": "REPLACE",
"content": {
"uri": "dragon_low.b3dm"
},
"children": [
{
"boundingVolume": {
"box": [
0,
0,
0,
7.0955,
0,
0,
0,
3.1405,
0,
0,
0,
5.0375
]
},
"geometricError": 0.1,
"content": {
"uri": "dragon_medium.b3dm"
},
"children": [
{
"boundingVolume": {
"box": [
0,
0,
0,
7.0955,
0,
0,
0,
3.1405,
0,
0,
0,
5.0375
]
},
"geometricError": 0,
"content": {
"uri": "dragon_high.b3dm"
}
}
]
}
]
}
}