Releases: mkkellogg/GaussianSplats3D
Releases · mkkellogg/GaussianSplats3D
Release v0.4.6: Minor updates
- Fixed renderer dimensions bug discovered by @hybridherbst: #357
- Add optional headers parameter to
addSplatScene()
andaddSplatScenes()
as suggested by @jesse-small in this PR: #354 - Add 2D kernel regularization parameter for
Viewer
as suggested by @jkulhanek in this PR: #338 - Fixed an issue where root transforms were not applied correctly in dynamic scenes
Release v0.4.5: More memory optimizations
- Improved the memory efficiency of load-time splat data optimizations
- Exposed internal
optimizeSplatData
parameter which controls whether or not splat data optimizations are performed. Defaults totrue
. Splat data optimizations will improve run-time performance, but require longer load times and increased memory overhead during scene load. They will be performed only if a scene is not progressively loaded. - Changed
plyInMemoryCompressionLevel
toinMemoryCompressionLevel
and applied it to all file types. Default is now 0 instead of 2. - Added
webXRSessionInit
parameter for passing WebXR initialization options to the viewer (Thanks for the suggestion @arthurlebourg - Added
Viewer
parameter to control scene reveal rate:sceneFadeInRateMultiplier
. Default is 1.0. - Added
Viewer
parameter to specify the precision for the distance map used in the splat sort algorithm:splatSortDistanceMapPrecision
. Defaults to 16 (16-bit). Increasing this value is helpful for reducing sorting artifacts in scenes with large dimensions, but it will also decrease performance. - Added function
Viewer.setActiveSphericalHarmonicsDegrees()
to set the spherical harmonics degree at run-time. - Added
SplatMesh.computeBoundingBox()
- Couple of bug fixes for
ArrowHelper
andfetchWithProgress()
pointed out by @PeterZhizhin - Fixed bug where viewer controls don't get disposed properly. Thanks @v2img for the heads up!
- Fixed progressive loading bug that caused a render of more splats than had been processed and resulted in visual artifacts.
Release v0.4.4: General updates
- Clean up
Viewer.dispose()
behavior as well as abort behavior for splat scene loading functions - Small improvements to the way 8-bit spherical harmonics compression is implemented
- Allow splat scenes to be transformed like ordinary three.js objects, demo can be found in
demo/dynamic_dropin.html
Release v0.4.3: 2D Gaussian Splatting
- Support 2D Gaussian splatting scenes: https://surfsplatting.github.io/, activate with
Viewer
parametersplatRenderMode: GaussianSplats3D.SplatRenderMode.TwoD
- Fixed rendering bug with spherical harmonics in scenes with large number of splats
- Fixed scaling bug with spherical harmonics
- Properly apply scene opacity and visibility when scene is loaded
- Fixed bug where call to remove splat scene would never complete if there was only one splat scene loaded
- Fix double
dispose()
call inViewer.removeSplatScene()
- Added
Viewer.removeSplatScenes()
Release v0.4.2: General updates
-
Updates targeting memory usage:
- Add ability to set the compression level of a
.ply
that's loaded into memory for rendering (not export to.ksplat
) via theViewer
parameterplyInMemoryCompressionLevel
. Previously it would be stored as an uncompressedSplatBuffer
, but now the compression level can be chosen and valid values are the same as when exporting to.ksplat
: 0, 1, or 2. Default is 2. - Add option to free intermediate splat data after a scene is loaded via the
Viewer
parameterfreeIntermediateSplatData
. When true, the intermediate splat data that is the result of decompressing splat bufffer(s) and is used to populate the data textures will be freed. This will reduces memory usage, but if that data needs to be modified it will need to be re-populated from the splat buffer(s). Default is false. - Reduced amount of memory needed by the sorting worker
- Add ability to set the compression level of a
-
Add ability to import reduced-memory version of INRIA
.ply
files (more info here: https://repo-sam.inria.fr/fungraph/reduced_3dgs/) -
Split spherical harmonics into multiple textures for large scenes
-
Add ability to toggle splat scene visibility or set the opacity of individual splat scenes.
-
Fixed bug preventing
Viewer.addSplatScene()
orViewer.addSplatScenes()
from working after scenes have already been added. -
Fixed sorting crash on iOS < 17.0 where SIMD is not supported in web assembly modules
-
Fixed bug with progressively loading dynamic scenes
Breaking changes:
- Changed
Viewer.addSplatScene()
parameter:streamView
toprogressiveLoad
Release v0.4.1: Minor adjustment to 8-bit spherical harmonics compression
Update version to 0.4.1
Release v0.4.0: Spherical harmonics
- Added support for 1st & 2nd degree spherical harmonics
- Added
Viewer
constructor parameter to enable:sphericalHarmonicsDegree
. Default value is 0. - Updated
.ksplat
format to include spherical harmonics - Added new compression level for
.ksplat
files (2) that is identical to (1) except spherical harmonics are compressed to 8-bit - Various bug fixes
v0.3.9: General fixes & updates
- Fix WebXR stereo mode not rendering correctly
- Fix floating-point splat sort in orthographic mode
- Add parameter to control console logging
- General cleanup
Release v0.3.8: Minor bugfixes
Release v0.3.7: Updated visualization modes
- Support orthographic rendering, enabled via
Viewer.setOrthographicMode()
- Added
SplatMesh.setSplatScale()
to set the value by which splats are scaled in screen-space (default is 1.0) - Added
SplatMesh.setPointCloudMode()
to enable/disable point-cloud mode, where each splat is rendered as a filled circle - Added function to remove a splat scene:
Viewer.removeSplatScene()
- Fixed stuttering that would sometimes occur when progressively loading scenes with gpu-accelerated sort disabled.
- Fixed bug preventing the clearing of the screen before each render