Observed since 20 Oct, 19:39 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
A unified, extensible loader framework for efficient loading and processing of 3D Gaussian Splatting (3DGS) data.
This module provides a unified loader framework for 3D Gaussian Splatting (3DGS) data. It supports multiple data formats and exposes a consistent usage API, independent of the underlying format.
The loader layer is responsible only for data loading and parsing. It does not handle rendering, sorting, LOD, or interaction logic.
All loaders inherit from a shared base class Loader and follow the same public API.
Supported loaders include:
SplatLoader (.splat)SogLoader (.sog , .json , ArrayBuffer )SpzLoader (.spz , ArrayBuffer)KSplatLoader (.ksplat , ArrayBuffer)PlyLoader (.ply , ArrayBuffer)Because the interface is uniform, loaders can be swapped without changing application code.
import SplatLoader from './loaders/SplatLoader'
const loader = new SplatLoader({
workerLimit: 4, // Number of workers (0 = disabled)
workerBaseUrl: './', // Base URL for worker scripts
wasmBaseUrl: './', // Base URL for WASM assets (if required)
})
All loader types accept the same constructor options.
Note
SplatLoaderis a special case: it only providesload()andloadColumns(), and does not implementloadAsSplat()orparseAsSplat(), because the.splatformat is already the native splat representation.
const columns = await loader.loadColumns('scene.splat', {
onProgress: (percent) => {
console.log(`loading: ${percent}`)
},
})
const columns = await loader.parseColumns(dataBuffer)
const splat = await loader.loadAsSplat('***.ply', {
onProgress: (percent) => {
console.log(`loading: ${percent}`)
},
})
SplatLoaderconst splat = await loader.parseAsSplat(dataBuffer)
SplatLoaderconst attributes = await loader.loadAsAttributes('***.ply', {
onProgress: (percent) => {
console.log(`loading: ${percent}`)
},
})
positions: Float32Arrayscales: Float32Arrayrotations: Float32Arraycolors: Uint8Arrayconst attributes = await loader.parseAsAttributes(dataBuffer)
interface
GaussianSplatAttributes
{
numSplats: number
positions: Float32Array // xyz, length = numSplats * 3
scales: Float32Array // sx sy sz (linear), length = numSplats * 3
rotations: Float32Array // quaternion xyzw, length = numSplats * 4
colors: Uint8Array // rgba, length = numSplats * 4
}
loader.dispose()
Always dispose the loader when it is no longer needed to properly release worker and memory resources.
All loaders support worker-based parsing through WorkerPool, allowing heavy decoding
and parsing work to run off the main thread.
const loader = new SogLoader({
workerLimit: 4, // Enable worker-based parsing
})
Some loaders (notably SogLoader) rely on WebAssembly (WASM) modules for
decoding compressed data, such as WebP-encoded spherical harmonics.
The following files must be available at runtime:
/webp/
├─ wasm_webp.wasm
└─ wasm_webp.min.js
These files must be copied to a publicly accessible location.
const loader = new SogLoader({
workerLimit: 4,
wasmBaseUrl: './', // Base URL that contains the /webp directory
})
The loader resolves the WebP WASM script URL internally and passes it to the worker or main-thread parser as needed.
Download counts and popularity will appear here as the collector receives them.
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 19:39 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:10d43ebd42bd1c57a915214f49b26bb08275fd1862fbf7aee3ad296ca1a8f37c