From 86c6826cad5b329faa334faadc3193d3cdcf5cc3 Mon Sep 17 00:00:00 2001 From: "Adam N. Morris" Date: Tue, 4 Jun 2024 10:13:16 -0500 Subject: [PATCH] Very early draft of the gaussian splatting extension. --- .../Khronos/KHR_gaussian_splatting/README.md | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 extensions/2.0/Khronos/KHR_gaussian_splatting/README.md diff --git a/extensions/2.0/Khronos/KHR_gaussian_splatting/README.md b/extensions/2.0/Khronos/KHR_gaussian_splatting/README.md new file mode 100644 index 0000000000..7332d78c27 --- /dev/null +++ b/extensions/2.0/Khronos/KHR_gaussian_splatting/README.md @@ -0,0 +1,92 @@ + + +# CESIUM_gaussian_splatting + +## Contributors + +Jason Sobotka, Cesium +Aras P. + +## Status + +Draft + +## Dependencies + +Written against the glTF 2.0 spec. + +## Overview + +Gaussian splats are currently stored in mostly unstructured files. This extension is an attempt to bring them to glTF and offer a structured, efficient method for streaming and rendering them. + +This method uses textures to store data for efficient GPU loading. + +Data formats within textures: + * Positions (R10G10B10A2 good default), + * Rotations (always R10G10B10A2), + * Scales (R5G6B5 good default), + * Color+opacity (R8G8B8A8 is easy), + +## Sample + +Extending glTF node: + +``` +{ + "accessors": [ + { + "type": "VEC3", + "componentType": "FLOAT" // Enum + }, + { + "type": "VEC4", + "componentType": "UNSIGNED_BYTE", // Enum + "normalized": true + }, + { + "type": "VEC4", // quaternion + "componentType": "FLOAT" // could be quantized with KHR_mesh_quantization + EXT_meshopt_compression + }, + { + "type": "VEC3", + "componentType": "FLOAT" // could be quantized with KHR_mesh_quantization + EXT_meshopt_compression + } + ], + "meshes": [ + { + "primitives": [ + { + "mode": 0, // POINT CLOUD + "attributes": { + "POSITION": 0, + "COLOR_0": 1, + "_ROTATION": 2, + "_SCALE": 3 + }, + "extensions": { + "CESIUM_gaussian_splats": { + // May need to consider spherical harmonics in the future. Separate extension? + // Quantization scale for additional attributes goes here if needed + } + } + } + ] + } + ] +} +``` + +### JSON Schema + +TODO: Links to the JSON schema for the new extension properties. + +## Implementation Notes + +This doesn't specify any specific rendering techniques. This is purely for organizing the data in a structured manner. + +## Resources + +https://github.com/mkkellogg/GaussianSplats3D/issues/47#issuecomment-1801360116 \ No newline at end of file