[SOLVED] Gsplat loading progress

Guassian splats can be quite large so they can take a while to load. Im loading them dynamically with .loadfromUrl. It would be good if we had a better way to give the user some feedback as the splat is loading. this could be either-

  1. Progressively loading the points of a splat- Ive noticed some online web viewers do this, they either load splats progressively from the world 0 or randomly so that the splat slowly materialises.
  2. Giving us some sort of way of showing the percentage that an asset is loaded. When Ive searched it seems a few other people have requested this- not just for gsplats but for assets in general.

@slimbuck

I’d like this too @peej. I am considering just simply exposing the asset system’s XHR object so user can track progress. Would this work for you?

Can’t we just add:

asset.on('progress', (value) => {});
1 Like

@slimbuck yes that sounds like a flexible option and if thats the easiest way. Wills sugestion does sound simpler if its possible.

This is being addressed in engine v2 here.

1 Like

Nice! thanks Slimbuck!

How can we use this loading progress thing in the LOD.
since I am planning to show the gsplat scene only when the initial lod chunks are completed loading

please suggest me the solution

@Saurabh_Shukla Use this for LOD: GSplatComponentSystem | Engine API Reference - v2.14.3

you could initially setup lod system to perhaps load lod 3 or so, wait for this event, then show the rendering, and then adjust the lod limits to what you need, so the system will then load better quality, while the user can interact with it already.

@mvaligursky or @slimbuck

I tried to use both suggestions,

[Expose PLY load progress by slimbuck · Pull Request #7259 ·

GSplatComponentSystem | Engine API Reference - v2.15.1

in a test and neither didn’t worked, and I am receiving a log message saying that they didn’t exist, how can I fix it?

This is my code
3D Gaussian Splat Test | Code Editor

The docs I linked to exists and works in the engine, but you need to use unified gsplat component for it together with LOD format loading.

The system @slimbuck linked to works for SOG format without unified mode.

@mvaligursky
And so, in mine project the GS are in SOG format, so I used the slimbuck’s option and I saw the ‘progress’ in the _callbacks in gsplat component, but when I try to evaluate this.entity.gsplat.hasEvent(‘progress’) or use this.entity.gsplat.on(‘progress’ … it doesn’t work.

It is to work just on a asset loading after the initialization? Or in all situations?

This is the project
3D Gaussian Splat Test | Editor

This is question for @slimbuck , he would know how that works.
You coudl also still use SOG format, but turn on unified rendering, to see if the other option works in the meantime.

1 Like

@mvaligursky
Enabling the unified rendering worked!
Thanks for your attention.

1 Like