Releases: mkkellogg/GaussianSplats3D
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
dynamicScene
parameter toViewer
anddynamicMode
parameter toSplatMesh
as a hint so that they won't make any optimizations that assume a static scene. -
Updated splat data access methods in
SplatMesh
so that by default they only apply scene transformations ifdynamicMode
isfalse
. -
Added new API for accessing individual splat scenes. Each of the following methods returns a
SplatScene
object 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.scene
parameter toViewer.threeScene
to 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
false
forsharedMemoryForWorkers
to 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:
RenderableViewer
changed 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
blockSize
andbucketSize
so that they can be customized for a given scene - General internal cleanup
v0.1.5: Support .splat to .ksplat conversion
- Support converting
.splat
files to.ksplat
format - Cleanup of compression code
v0.1.4: Support importing standard .splat files
- Breaking change: Rename extension for custom compressed splat scene file format from
.splat
to.ksplat
- Interpret files with
.splat
extension as the commonly used format created by antimatter15
v0.1.3: Renderable drop-in viewer
- Added
RenderableViewer
, a wrapper forViewer
that can be added to a Three.js scene like other Three.js renderables (Mesh, Object3D, etc...) - Added the ability to load multiple splat scenes simultaneously via
RenderableViewer.addScenesFromFiles()
orViewer.loadFiles()
.