CesiumGS / cesium-unreal

Bringing the 3D geospatial ecosystem to Unreal Engine
https://cesium.com/platform/cesium-for-unreal/
Apache License 2.0
954 stars 297 forks source link

Unreal crashes when creating multiple ellipsoids in the same scene #1487

Closed magiclamb closed 2 months ago

magiclamb commented 4 months ago

This issue is outlines in this cesium forum post: https://community.cesium.com/t/compatability-with-cesium-functions-in-worldscape/33740

With the Cesium for Unreal 2.7.0 update which supports using non-WGS84 ellipsoids, we are really interested in creating multiple planets in one level to fly between them. However, in order for us to create two separate ellipsoids with their unique date assets, we need to be able to add multiple CesiumGeoreference's and may need the Cesium sunsky system be two separate blueprints as we wish to utilize a singular sun with multiple skys across different planets. Is this something that could be added to Cesium and if there is an interest in flying between planets and changing anchors and origin points? Thanks :)

kring commented 4 months ago

Hi @magiclamb, your use case makes sense and I was under the impression that it would work. Can you tell us more about the crash you're seeing?

chimik007 commented 3 months ago

Hi @magiclamb, your use case makes sense and I was under the impression that it would work. Can you tell us more about the crash you're seeing?

Hello! I am Chim, I created the visuals for potential solutions in utilizing multiple ellipsoids using Cesium. Here is how to reproduce the issue: Load in latest version of Unreal and Cesium for Unreal, Duplicate CesiumGeoreference and the crash will appear. Here is a direct crash log from me:

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000420

UnrealEditor_CesiumRuntime!TDelegateAccessHandlerBase::FWriteAccessScope::FWriteAccessScope() [D:\RocketSync\5.3.0-27405482+++UE5+Release-5.3\Working\Engine\Source\Runtime\Core\Public\Delegates\DelegateAccessHandler.h:139] UnrealEditor_CesiumRuntime!TBaseDynamicMulticastDelegate<FNotThreadSafeDelegateMode,void>::__Internal_AddUniqueDynamic() [D:\RocketSync\5.3.0-27405482+++UE5+Release-5.3\Working\Engine\Source\Runtime\Core\Public\Delegates\DelegateSignatureImpl.inl:1141] UnrealEditor_CesiumRuntime!ACesium3DTileset::ResolveGeoreference() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Cesium3DTileset.cpp:152] UnrealEditor_CesiumRuntime!UCesium3DTilesetRoot::_updateTilesetToUnrealRelativeWorldTransform() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Cesium3DTilesetRoot.cpp:66] UnrealEditor_CoreUObject UnrealEditor_CoreUObject UnrealEditor_CesiumRuntime!TMulticastScriptDelegate::ProcessMulticastDelegate() [D:\RocketSync\5.3.0-27405482+++UE5+Release-5.3\Working\Engine\Source\Runtime\Core\Public\UObject\ScriptDelegates.h:900] UnrealEditor_Engine UnrealEditor_Engine UnrealEditor_Engine UnrealEditor_CesiumRuntime!ACesiumGeoreference::PostEditChangeProperty() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\CesiumGeoreference.cpp:689] UnrealEditor_CoreUObject UnrealEditor_UnrealEd UnrealEditor_UnrealEd UnrealEditor_UnrealEd UnrealEditor_UnrealEd UnrealEditor_UnrealEd UnrealEditor_UnrealEd UnrealEditor_UnrealEd UnrealEditor_Engine UnrealEditor_LevelEditor UnrealEditor_Engine UnrealEditor_Engine UnrealEditor_UnrealEd UnrealEditor_UnrealEd UnrealEditor_UnrealEd UnrealEditor_Core UnrealEditor_Engine UnrealEditor_UnrealEd UnrealEditor_LevelEditor UnrealEditor_LevelEditor UnrealEditor_LevelEditor UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_Slate UnrealEditor_ApplicationCore UnrealEditor_ApplicationCore UnrealEditor_ApplicationCore UnrealEditor_ApplicationCore user32 user32 UnrealEditor_ApplicationCore UnrealEditor UnrealEditor UnrealEditor UnrealEditor UnrealEditor UnrealEditor kernel32 ntdll

j9liu commented 3 months ago

Hi @chimik007,

This sounds exactly like issue #1354. You should be able to circumvent this by creating a georeference via the Place Actors panel. Can you confirm that this works for you?

j9liu commented 2 months ago

Closing this due to inactivity. If the above doesn't work, please respond to this issue with more details. Thank you!