I am developing React-Cesium Js app(custom WebPack) followed by Node Js(express) backend where users can draw polygon shapes on the earth and place their 3D models inside that polygons. That 3D models are glb/gltf files uploaded by every user via form, compressed with Draco ((gltf-pipeline) and saved to s3 bucket, than loaded in viewer using ModelGraphics along with position, rotation, url from s3 bucket etc. Users, after upload can also manipulate those models by changing position(coordinates, height) and rotation inside their polygons and save them.
The problem I have here is that users can add up to 100MB model size which even compressed with Draco is still large, and when there are 10 models loaded in viewer I experience a lot of lagging and performance issues while rendering scene, on camera movement etc.
What would be the best way to load those models to improve performance as much as I can? I have read about 3D tilesets (conversion using Cesium ion), found some libraries that can help conversion of gltf/glb files to tilesets(I know that those libraries are not recommended), but still not sure how to solve this problem. Users can upload infinity number of Models which will drastically worsen the performance of the app.
If I use cesium ion API endpoint to upload my glb assets(models) for conversion to tilesets, can I use my s3 bucket to save those tilesets, or I have to use Ion’s storage? How long does it take to process those glb files to tiles? How that Cesium Ion exactly works(very very briefly)? Also are there any real world examples how to solve this case? If one day I decide to use Photorealistic 3D Tiles from Google Maps Platform will that solution still work? Thanks in advance