hyperlogic / splatapult

A 3d gaussian splatting renderer in C++ and OpenGL
MIT License
89 stars 12 forks source link
3d-gaussian-splat 3d-gaussian-splatting 3d-graphics 3d-reconstuction gaussian-splatting opengl opengl-es openxr photogrammetry rendering virtual-reality vr

Splatapult

Splatapult logo

Splatapult Build

A program to display 3d gaussian splats files

splatapult [OPTIONS] ply_filename

Options

-v, --openxr launch app in vr mode, using openxr runtime

-f, --fullscreen launch window in fullscreen

-d, --debug enable debug logging

--fp16 Use 16-bit half-precision floating frame buffer, to reduce color banding artifacts

--fp32 Use 32-bit floating point frame buffer, to reduce color banding even more

--nosh Don't load/render full sh, this will reduce memory usage and higher performance

-h, --help show help

Desktop Controls

VR Controls

Config Files

If a "_vr.json" file is found, it will be used to determine the proper starting position, scale and orienation for vr mode. You can create your own _vr.json file by manipulating the scene via grab in vr mode, then press return to save.

Splatapult supports the same dir structure that Gaussian Splatting code will output. Which is as follows:

dir/
    point_cloud/
        iteration_30000/
            point_cloud.py
            point_cloud_vr.json
    input.ply
    cameras.json

input.ply contains the point cloud and cameras.json will contain the camera orientations from the SfM stage.

If the "cameras.json" file is found in the same dir as the ply_filename or it's parent dirs, it will be loaded. The 'n' and 'p' keys can then be used to cycle thru the camera viewpoints.

It will also support files downloaded from lumalabs.ai, but in this case there will be no point clouds or cameras.

dir/
    mycapture.ply
    mycapture_vr.json

Build Info

See BUILD.md for information on building Splatapult from source.