Repository files navigation

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

  • wasd - move
  • q, e - roll
  • t, g - up, down
  • arrow keys - look
  • right mouse button - hold down for mouse look.
  • gamepad - if present, right stick to rotate, left stick to move, bumpers to roll
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • n - jump to next camera
  • p - jump to previous camera
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation of the world into a vr.json file.

VR Controls

  • left stick - move
  • right stick - snap turn
  • f - show hide floor carpet.
  • single grab - translate the world.
  • double grab - rotate and translate the world.
  • triple grab - (double grab while trigger is depressed) scale, rotate and translate the world.
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation/scale of the world into a vr.json file.

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.ply
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.

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

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

  • wasd - move
  • q, e - roll
  • t, g - up, down
  • arrow keys - look
  • right mouse button - hold down for mouse look.
  • gamepad - if present, right stick to rotate, left stick to move, bumpers to roll
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • n - jump to next camera
  • p - jump to previous camera
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation of the world into a vr.json file.

VR Controls

  • left stick - move
  • right stick - snap turn
  • f - show hide floor carpet.
  • single grab - translate the world.
  • double grab - rotate and translate the world.
  • triple grab - (double grab while trigger is depressed) scale, rotate and translate the world.
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation/scale of the world into a vr.json file.

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.ply
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.

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

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

  • wasd - move
  • q, e - roll
  • t, g - up, down
  • arrow keys - look
  • right mouse button - hold down for mouse look.
  • gamepad - if present, right stick to rotate, left stick to move, bumpers to roll
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • n - jump to next camera
  • p - jump to previous camera
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation of the world into a vr.json file.

VR Controls

  • left stick - move
  • right stick - snap turn
  • f - show hide floor carpet.
  • single grab - translate the world.
  • double grab - rotate and translate the world.
  • triple grab - (double grab while trigger is depressed) scale, rotate and translate the world.
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation/scale of the world into a vr.json file.

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.ply
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.

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

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

  • wasd - move
  • q, e - roll
  • t, g - up, down
  • arrow keys - look
  • right mouse button - hold down for mouse look.
  • gamepad - if present, right stick to rotate, left stick to move, bumpers to roll
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • n - jump to next camera
  • p - jump to previous camera
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation of the world into a vr.json file.

VR Controls

  • left stick - move
  • right stick - snap turn
  • f - show hide floor carpet.
  • single grab - translate the world.
  • double grab - rotate and translate the world.
  • triple grab - (double grab while trigger is depressed) scale, rotate and translate the world.
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation/scale of the world into a vr.json file.

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.ply
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.

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

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

  • wasd - move
  • q, e - roll
  • t, g - up, down
  • arrow keys - look
  • right mouse button - hold down for mouse look.
  • gamepad - if present, right stick to rotate, left stick to move, bumpers to roll
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • n - jump to next camera
  • p - jump to previous camera
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation of the world into a vr.json file.

VR Controls

  • left stick - move
  • right stick - snap turn
  • f - show hide floor carpet.
  • single grab - translate the world.
  • double grab - rotate and translate the world.
  • triple grab - (double grab while trigger is depressed) scale, rotate and translate the world.
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation/scale of the world into a vr.json file.

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.ply
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.

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

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

  • wasd - move
  • q, e - roll
  • t, g - up, down
  • arrow keys - look
  • right mouse button - hold down for mouse look.
  • gamepad - if present, right stick to rotate, left stick to move, bumpers to roll
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • n - jump to next camera
  • p - jump to previous camera
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation of the world into a vr.json file.

VR Controls

  • left stick - move
  • right stick - snap turn
  • f - show hide floor carpet.
  • single grab - translate the world.
  • double grab - rotate and translate the world.
  • triple grab - (double grab while trigger is depressed) scale, rotate and translate the world.
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation/scale of the world into a vr.json file.

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.ply
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.

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

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

  • wasd - move
  • q, e - roll
  • t, g - up, down
  • arrow keys - look
  • right mouse button - hold down for mouse look.
  • gamepad - if present, right stick to rotate, left stick to move, bumpers to roll
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • n - jump to next camera
  • p - jump to previous camera
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation of the world into a vr.json file.

VR Controls

  • left stick - move
  • right stick - snap turn
  • f - show hide floor carpet.
  • single grab - translate the world.
  • double grab - rotate and translate the world.
  • triple grab - (double grab while trigger is depressed) scale, rotate and translate the world.
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation/scale of the world into a vr.json file.

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.ply
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.

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

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

  • wasd - move
  • q, e - roll
  • t, g - up, down
  • arrow keys - look
  • right mouse button - hold down for mouse look.
  • gamepad - if present, right stick to rotate, left stick to move, bumpers to roll
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • n - jump to next camera
  • p - jump to previous camera
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation of the world into a vr.json file.

VR Controls

  • left stick - move
  • right stick - snap turn
  • f - show hide floor carpet.
  • single grab - translate the world.
  • double grab - rotate and translate the world.
  • triple grab - (double grab while trigger is depressed) scale, rotate and translate the world.
  • c - toggle between initial SfM point cloud (if present) and gaussian splats.
  • y - toggle rendering of camera frustums
  • h - toggle rendering of camera path
  • return - save the current position and orientation/scale of the world into a vr.json file.

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.ply
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.

Releases

Packages

Used by

Contributors

Languages