Jaxsplat is a powerful library for 3D Gaussian Splatting, optimized for JAX. Leveraging CUDA acceleration, it offers fully differentiable rendering of 3D data, making it an ideal choice for researchers and developers in the field of graphics and machine learning. Explore its capabilities and integrate it into your projects seamlessly.
Explore the capabilities of jaxsplat, a powerful library that implements 3D Gaussian Splatting using JAX. This cutting-edge, fully differentiable and CUDA-accelerated tool allows you to seamlessly render high-quality 3D visual outputs from Gaussian models, making it an invaluable resource for researchers and developers in the field of computer graphics and machine learning.
Features
- Differentiable Rendering: The primary function,
jaxsplat.render
, empowers users to render images while maintaining differentiability with respect to the input parameters, such as means, scales, quaternions, colors, and opacities. - Advanced Projection and Rasterization: Additional functionalities like
jaxsplat.project
andjaxsplat.rasterize
provide versatile solutions for projecting 3D Gaussians onto 2D planes and efficiently sorting and rasterizing them.
Quick Usage Example
A quick example of how to utilize the core rendering function is as follows:
img = jaxsplat.render(
means3d, # jax.Array (N, 3)
scales, # jax.Array (N, 3)
quats, # jax.Array (N, 4) normalized
colors, # jax.Array (N, 3)
opacities, # jax.Array (N, 1)
viewmat=viewmat, # jax.Array (4, 4)
background=background, # jax.Array (3,)
img_shape=img_shape, # tuple[int, int] = (H, W)
f=f, # tuple[float, float] = (fx, fy)
c=c, # tuple[int, int] = (cx, cy)
glob_scale=glob_scale, # float
clip_thresh=clip_thresh, # float
block_size=block_size, # int <= 16
)
Installation
To get started, make sure you have a working CUDA toolchain. You can easily install jaxsplat using pip directly from the source.
Documentation
For extensive documentation and guidance, check out the official jaxsplat documentation.
Examples
Explore various use cases and examples in the examples
folder, which includes snippets to train Gaussians on single images and more, showcasing the library’s potential:
$ python -m examples.single_image input.png
Technical Aspects
jaxsplat leverages enhanced versions of the kernels from the gsplat project, and it adapts techniques from the original INRIA implementation, making it easier to utilize within the JAX/XLA ecosystem.
Dive into jaxsplat to elevate your 3D rendering projects and harness the full potential of Gaussian Splatting in JAX!