Releases: mkkellogg/GaussianSplats3D
v0.2.1: Scene transform bug fix
Small release containing a fix for a bug that caused scene transforms to be incorrectly applied.
v0.2.0: Real-time transformations
This update adds the ability to apply real-time transformations to splat scenes. Prior to this release, splat scenes could have a custom transformation applied when the scene was added to the viewer, after which the scene had to remain static.
Code changes
-
Added
dynamicSceneparameter toVieweranddynamicModeparameter toSplatMeshas a hint so that they won't make any optimizations that assume a static scene. -
Updated splat data access methods in
SplatMeshso that by default they only apply scene transformations ifdynamicModeisfalse. -
Added new API for accessing individual splat scenes. Each of the following methods returns a
SplatSceneobject by which the position, orientation, and scale of an individual splat scene can be modified in real time.SplatMesh.getScene(sceneIndex)Viewer.getSplatScene(sceneIndex)DropInViewer.getSplatScene(sceneIndex)
-
Added demo page with dynamic scenes example:
demo/dynamic_scenes.html
Breaking Changes
-
Updated splat scene loading functions to have more consistent names that better describe their purpose:
-Viewer.loadFile()changed toViewer.addScene()
-Viewer.loadFiles()changed toViewer.addScenes()
-DropInViewer.addSceneFromFile()changed toDropInViewer.addScene()
-DropInViewer.addScenesFromFiles()changed toDropInViewer.addScenes() -
Changed
Viewer.sceneparameter toViewer.threeSceneto avoid confusion with the concept of splat scenes
v0.1.11: Publish NPM package
Small set of updates to prepare for publication as an NPM package: @mkkellogg/gaussian-splats-3d
v0.1.10: Optional integer-based splat sort
This release makes the integer-based splat sort optional, and provides a Viewer parameter to control it: integerBasedSort, which defaults to true. If set to false, the floating-point version will be used. The integer-based version is faster, but does not handle larger scenes well.
v0.1.9: Optional shared memory usage and cancellable scene load
- Allow shared memory usage to be disabled by passing
falseforsharedMemoryForWorkersto the constructor forViewer. This forces data to be copied to and from the sorting web worker, but gets around the need to set special CORS headers to enableSharedArrayBuffer. - Allow splat scene downloads to be cancelled via a special promise,
AbortablePromise, that is returned by all scene loading functions (Viewer.loadFile(), etc.) and has anabort()method.
v0.1.8: General refactoring, cleanup and documentation
- Breaking change:
RenderableViewerchanged toDropInViewer - General cleanup and refactoring of code to improve organization and readability
- Added comments to many functions and classes (documentation work is still ongoing).
v0.1.7: Transform-aware splat data access via SplatMesh
The SplatMesh class now has splat data accessors that will automatically apply the transform the developer has specified for the corresponding splat file:
getSplatCenter()getSplatScaleAndRotation()fillSplatDataArrays()
Instead of returning the original value of these splat attributes as stored on disk, they will apply the transform that was specified when the splat scene was loaded (via Viewer.loadFile() or similar). The original value can still be accessed via the corresponding functions in SplatBuffer.
v0.1.6: Expose compression parameters
- Expose compression parameters
blockSizeandbucketSizeso that they can be customized for a given scene - General internal cleanup
v0.1.5: Support .splat to .ksplat conversion
- Support converting
.splatfiles to.ksplatformat - Cleanup of compression code
v0.1.4: Support importing standard .splat files
- Breaking change: Rename extension for custom compressed splat scene file format from
.splatto.ksplat - Interpret files with
.splatextension as the commonly used format created by antimatter15