Repository navigation
Conversation
|
Thanks for submitting this pull request! The maintainers of this repository would appreciate if you could update the CHANGELOG.md based on your changes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Type
Motivation and Context
With a small near clipping distance, some camera poses produce oversized, blurry Gaussian splats that obscure a large part of the scene. The attached reproduction uses
near_plane = 0.1and the publicly availableracoonfamily.spzsample. The problem is view dependent; simply opening the model from its default camera position does not reliably reproduce it.For offscreen Gaussians close to the camera plane, evaluating the perspective-projection Jacobian at their original centers can produce excessively large projected covariances and tile footprints. The existing per-splat tile cap bounds the work by dropping splats that exceed the limit, but it does not limit the covariance calculation itself. This can also remove splats whose footprints still overlap the visible image.
Description
Clamp the horizontal and vertical view-space ratios used to evaluate the Jacobian to an expanded field of view (
1.3 * tan(FOV / 2)), following the original 3DGS covariance projection implementation.Only the Jacobian evaluation position is adjusted. Screen-space centers, near/far culling, and depth sorting continue to use the original Gaussian centers. The existing per-splat tile cap and global tile-entry capacity checks remain in place.
The intended result is to reduce the oversized splats and unnecessary tile coverage caused by offscreen Jacobian evaluation. This change does not provide full near-plane clipping of the Gaussian volume or guarantee that legitimately large close-up splats will remain below the tile cap.
Reproduction
Build and run the
examples/cpp/GaussianSplat.cppexample on Windows.Use Niantic's
racoonfamily.spzsample from SPZ v3.0.0. Direct download.Set
config.near_plane = 0.1f;in the example. Use the same setting in the baseline and modified builds.Run the example with identical rendering options in both builds:
These arguments select SH degree 2, minimum input opacity 0, and density-compensation antialiasing disabled. Keep the example's
test_cubevisible in both runs.Match the 3D render viewport to
768 x 744pixels, then copy the following JSON and click View > Paste. The paste action restores the camera parameters but does not resize the render viewport from the JSON'swidthandheightfields.{ "eye": [ -0.29762446880340576, 0.30022227764129639, -2.4783945083618164 ], "far_plane": 3499.651611328125, "field_of_view": 60.0, "height": 744, "lookat": [ 1.0593240261077881, 1.1534355878829956, 4.2481122016906738 ], "near_plane": 0.10000000149011612, "up": [ -0.41435691714286804, 0.90955936908721924, -0.031782753765583038 ], "width": 768 }Capture the baseline and modified results with the same model, camera, viewport, tile limits, and rendering options. Rebuild the shader resources for each run so the comparison uses the intended shader version.
Model identification:
E:/workspace/research/Open3D/out/build/windows-release/spz/src/ext_spz/samples/racoonfamily.spz.2e068d893730955c09aee324ff170c559f71c0e8758c1b14c3811a5969333cfe.Before and After
Before
After
Validation
glslangValidator -V --target-env vulkan1.3 -gVSfrom Vulkan SDK 1.4.350.0.Checklist
python util/check_style.py --applyto apply Open3D code style.