This is more of a strategy question more than a tactical question - hence not adding a playground link.
I have a scene generated in blender and exported to GLTF(200MB in size) that I’d like to use in production. However, downloading a 200MB size file crammed with textures, meshes, etc. seems to be too much. Rather I’d like to break it up and download them piecemeal. I’m considering following 4 options but not sure which one is the best. Does anyone here who has shipped largish scenes in production help me by pointing me to the right direction on what option to use?
Like https://playground.babylonjs.com/#09UU1A#3 . Ship GLTF file with no textures. Create materials and assign to meshes on the fly. Store the albedo, lightmap on remote server.
Pros: Smaller file sizes where textures can be read in parallel asynchronously
Cons/: Requires a bunch of material building and writing manual boilerplate code. Why not let the scene editing software like blender do the work for you.
Ship GLTF with baked textures and load as is - fat file. blender - How is the file size of a 3D .gltf model determined? - Stack Overflow
Cons/: File size that is shipped in one go is large
Ship GLTF / GLB file where the textures are URI links to remote server. I have 0 idea how to do this from blender. Looks like i might have to manually edit the gltf file - but that is just too complex IMHO since models can be real large (200MB) in my case…so opening the gltf file in text editor to update it is not an option
However GLB with remote asset URLs seems to indicate that doing this may cause other problems such as limited ability to validate, etc. Perhaps this is an ok tradeoff.
Cons/: URL can change so the gltf json need to be updated.
I really have no idea how they are doing it but it seems to me that in this link shorturl.at/fHLM2 they are breaking up the massive GLB file in to tiny little sectors and then loading them from CDN. However, each of these files are not self contained glb themselves that can be downloaded and inspected.
I might be missing something basic here so please feel free to point me to relevant document that I might’ve missed.