Product configurator - handling many assets to load

I would like to build a product configurator. For now, meshes and textures take about 15MB (basic default configuration.
Some product configuration needs to load new geometries some needs to load new textures to switch. Some need both.

If I will have 30 configurations to load then 15MB will turn easily to 80MB and all would be very heavy to load as one go (especially on mobiles).

My idea is to load the default configuration in the beginning and all additional assets load when a visitor wants to change that part in the configurator.

Question is:
What solutions do you recommend on occasions like that?

  1. Is there any way to load additional assets (loading meshes and textures with preloading) when a scene with basic configuration is already loaded?

  2. Is there any way for LOD (level of detail) for meshes which depend on the device category (mobile or not mobile - it`s possible to detect it through a browser)? Is there any way to load texture sizes which depend on the device category (load for mobiles smaller sizes and for desktops higher sizes)? For example, for mobiles, it should exclude higher textures and meshes from the project to load not only necessary assets.

It`s all a lot of work to do. I wonder what is already on board of PlayCanvas and what I should code from scratch.

Thanks for your kind help.

I think there is an answer to my question: Tutorials | Learn PlayCanvas

It depends on how everything is used but in general, you can unload assets to free up VRAM (especially textures, they usually take the most VRAM) as you switch between configurations.

  1. It is possible but you have to code it yourself. I would have the first scene as a preloader that works out what assets are needed based on URL params or something else. You could extend the preloader screen till this has finished as well if desired using a custom loading script. However, most developers prefer doing the opposite to have a more interesting preloading scene.

  2. Iā€™m afraid not out of the box. You will have to code this yourself.

1 Like