Retrieving 3D Tile Feature URLs and refreshing

I’m currently using Line Trace By Channel to select models in my 3D Tile scene, and I see the URL path for the model on the Hit Component’s Static Mesh ‘name’ or string representation of the object. Is this accessible somehow? I would like to retrieve the URL of the model, and also refresh the model by unloading it from the scene, and requesting the model to be retrieved from the server again.

I’ve done this with CesiumJS using a drillPick and finding the instance of Cesium.Cesium3DTileFeature and grabbing the feature._content._resource._url string. Also refreshing was done by setting the expireDate to the current date. Are there any calls I can make to achieve the same goal?

Thanks!

From what I can tell there isn’t an easy way to get the path of the model, as the name truncates the path here cesium-unreal/Source/CesiumRuntime/Private/CesiumGltfComponent.cpp at main · CesiumGS/cesium-unreal · GitHub.

Another route I’m looking into is adding a new blueprint function which can access CesiumGltf::Model to get the model path from the extras “Cesium3DTiles_TileUrl” key, however as I’m debugging the code I noticed when the CesiumGltfPrimitiveComponent is created it stores pModel from the loadResult object (cesium-unreal/Source/CesiumRuntime/Private/CesiumGltfComponent.cpp at main · CesiumGS/cesium-unreal · GitHub) but this seemed to be not filled out. The same method also passes in the model as the first argument (cesium-unreal/Source/CesiumRuntime/Private/CesiumGltfComponent.cpp at main · CesiumGS/cesium-unreal · GitHub), so my questions is what is the difference between these two objects? Looking at the passed in model I can see the data I need, but looking at the one from loadResult looked to be empty (not null and calling IsValid returned true) in the debugger and actually crashed when I tried to access the extras map. Makes me think something deleted it before it was being used, or I’m misunderstanding the purpose of loadResult’s pModel

Hi @MikeUCFL,

What reason do you have for refreshing individual tiles in the tileset? It would help if you could describe your use case in more detail so we can suggest possible workarounds, since our plugins aren’t built with that functionality. Thank you!

The backend server gets updates that rewrites the underlying glb, so the only way I can think to get those updates is to refresh the entire model

Hi @MikeUCFL,

Thank you for explaining! I’m still confused about the reasons for having backend updates that rewrite the glb data. Typically, 3D Tiles is used for pre-processing massive amounts of 3D data so they can be streamed at runtime. Our loading software isn’t written with time-dynamic situations in mind. I think you have an interesting use case of rewriting content post-load and refreshing for changes at runtime.

I’m not sure I can provide a solution for you now, but more details about your use case would help us know why you need this functionality, and could even influence our roadmap in the future.