Commit 36c918f
authored
Add a Gaussian Splat and octomap rendering sample (#1247)
* Add a complex sample showing how to do a simplistic tool that shows a Voxel Point Cloud map using Octomap. Also demonstrates how to use ImGUI in a project with added functionality and positioning of rendered assets.
* Add Gaussian splat rendering and GLTF support to octomap sample
Extends the octomap sample with three view modes: Octomap, GLTF Regular, and GLTF Splats. Implements splat rendering pipeline with per-instance attributes and premultiplied alpha blending. Adds GLTF mesh rendering with vertex color support. Includes new shader files for splat geometry and fragment evaluation. Updates camera to FirstPerson type for WASD movement. Fixes cube winding order and improves command buffer recording. Adds proper license headers to all new and modified files.
* Reformat and reorganize includes in octomap sample
Standardizes code formatting with consistent indentation and brace style. Reorders includes alphabetically with core utilities first. Consolidates constructor initializer list to single line. Adjusts spacing and alignment throughout for consistency.
* Add explicit submodule update step to all workflow jobs
Ensures submodules are fully initialized and updated in each job by adding explicit `git submodule update --init --recursive` command after checkout, complementing the existing `submodules: "recursive"` checkout option.
* Fix indentation in .gitmodules for octomap submodule
Replaces spaces with tabs to maintain consistent formatting throughout the .gitmodules file.
* Add octomap file for complex render sample
* Restrict render_octomap sample to platforms with GLFW support
* Force Windows to build library as static to hopefully fix CI.
* Implement update_overlay method for render_octomap sample
Adds update_overlay method override that delegates to custom ImGUI implementation in render() function and executes additional UI callbacks when provided.
* Fix header guard naming and exclude octomap submodule from CI checks
Renames header guards in ImGUIUtil.h from ORB_SLAM3_IMGUI_H to IMGUI_UTIL_H to match the actual file name. Excludes samples/complex/render_octomap/octomap directory from CI workflow file checks.
* Add braces to single-statement conditionals and replace C-style casts with static_cast
Improves code style consistency by adding braces to all single-statement if blocks. Replaces C-style casts with appropriate static_cast and reinterpret_cast. Filters out third_party/glfw warnings from clang-tidy output in CI workflow.
* Fix indentation in render_octomap sample
Replaces leading spaces with tabs to maintain consistent formatting throughout the file.
* Refactor ImGUI input handling to use platform-agnostic framework events
Replaces GLFW-specific key handling with framework's KeyCode enum for platform-agnostic input. Renames handleKey to handle_key_event to match framework naming conventions. Updates modifier key state tracking to use ImGui's key state. Removes GLFW dependency and platform-specific conditionals from ImGUI implementation. Enables render_octomap sample on all platforms including Android, iOS, and Direct-to-Display.
* Update copyright year to 2026
Updates copyright headers across framework components and shaders from 2025 to 2026.
* Update copyright years in project files
Updated copyright headers across various project files to reflect the year 2026. This ensures consistency and compliance with licensing requirements.
* Update Gaussian splatting implementation to follow KHR_gaussian_splatting spec
Moves Gaussian splatting attributes from extension object to primitive attributes using KHR_gaussian_splatting namespace. Updates attribute parsing to check KHR_gaussian_splatting:ROTATION, SCALE, OPACITY, and SH_DEGREE_0_COEF_0 in primitive attributes first, with fallback to old draft extension properties and COLOR_0. Simplifies extension parsing logic and removes nested property structures. Updates code examples in tutorial documentation to reflect new attribute structure.
* clang-format
* fix the compile
* Update to latest KHR and use sample map.
* Update to show we do not need to use MoltenVK for rendering.
* clang-format fixes.
* Fix windows having 32bit limit on a static lib.
* Allow imgui to update with keyboard nav. fix name.size() >= 5 and add in built spv files so platforms that oddly don't auto build will work.
* Fix for keyboard navigation and numpad look handling
* clang-format
* address Sascha's nit on KHR_gaussian_splatting extension name (Diverges from what we do in GLTF_Loader in the framework, but it's a good idea).
* Expand README for Octomap sample to include usage, controls, rendering modes, and key implementation details.
* I forgot to add in the complex samples section to nav.adoc along with the rest of the documentation.
* address comment.
* Address feedback.
* Update Gaussian Splat documentation and implementation to include additional attributes and clarifications
- Add `:stem:` attribute for mathematical expressions in the documentation.
- Clarify SPZ compression details and the use of PLY as raw data storage.
- Adjust JSON examples to include new attributes (`antialiased` and `shDegree`).
- Switch to `SplatInstance` struct for interleaved data storage in the code.
- Expand explanations around projection math, blending, and premultiplied alpha use.
- Highlight mandatory depth sorting for correct rendering.
* Update to better describe how to add custom UI textures.
* clang-format
* Address Andreas' comments. Thanks! keep them coming!
* clang-format.
* try to resolve clang-format
* Remove ImGui from the complex render_octomap sample inlcuding the instruction.
Move to the Framework imgui
Address rest of Andreas' comments.
* Address Andreas' latest comments.1 parent 293e828 commit 36c918f
30 files changed
Lines changed: 3990 additions & 5 deletions
File tree
- .github/workflows
- antora/modules/ROOT
- framework
- samples
- complex
- render_octomap
- Tutorials
- images
- shaders/render_octomap/glsl
- third_party
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
| 28 | + | |
27 | 29 | | |
28 | 30 | | |
29 | 31 | | |
| |||
68 | 70 | | |
69 | 71 | | |
70 | 72 | | |
| 73 | + | |
| 74 | + | |
71 | 75 | | |
72 | 76 | | |
73 | 77 | | |
| |||
97 | 101 | | |
98 | 102 | | |
99 | 103 | | |
| 104 | + | |
| 105 | + | |
100 | 106 | | |
101 | 107 | | |
102 | 108 | | |
| |||
115 | 121 | | |
116 | 122 | | |
117 | 123 | | |
| 124 | + | |
| 125 | + | |
118 | 126 | | |
119 | 127 | | |
120 | 128 | | |
| |||
139 | 147 | | |
140 | 148 | | |
141 | 149 | | |
| 150 | + | |
| 151 | + | |
142 | 152 | | |
143 | 153 | | |
144 | 154 | | |
| |||
171 | 181 | | |
172 | 182 | | |
173 | 183 | | |
| 184 | + | |
| 185 | + | |
174 | 186 | | |
175 | 187 | | |
176 | 188 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
| 32 | + | |
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| |||
101 | 101 | | |
102 | 102 | | |
103 | 103 | | |
104 | | - | |
| 104 | + | |
105 | 105 | | |
106 | 106 | | |
107 | 107 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
141 | 141 | | |
142 | 142 | | |
143 | 143 | | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
144 | 148 | | |
145 | 149 | | |
146 | 150 | | |
| |||
- README.md-7
- scenes/Buggy/README.md-8
- scenes/Buggy/glTF-Embedded/Buggy.gltf-15.8k
- scenes/Buggy/screenshot/screenshot.png
- scenes/morpheus_team/LICENSE.txt-29
- scenes/morpheus_team/lego_ball_phone/mlp.json-616
- scenes/morpheus_team/lego_ball_phone/shape0.gltf-140
- scenes/morpheus_team/lego_ball_phone/shape0.mtl-6
- scenes/morpheus_team/lego_ball_phone/shape0.obj-3
- scenes/morpheus_team/lego_ball_phone/shape0.pngfeat0.png
- scenes/morpheus_team/lego_ball_phone/shape0.pngfeat1.png
- scenes/morpheus_team/lego_boba_fett_phone/mlp.json-616
- scenes/morpheus_team/lego_boba_fett_phone/shape0.gltf-140
- scenes/morpheus_team/lego_boba_fett_phone/shape0.mtl-6
- scenes/morpheus_team/lego_boba_fett_phone/shape0.obj-3
- scenes/morpheus_team/lego_boba_fett_phone/shape0.pngfeat0.png
- scenes/morpheus_team/lego_boba_fett_phone/shape0.pngfeat1.png
- scenes/morpheus_team/lego_monster_truck_phone/mlp.json-616
- scenes/morpheus_team/lego_monster_truck_phone/shape0.gltf-140
- scenes/morpheus_team/lego_monster_truck_phone/shape0.mtl-6
- scenes/morpheus_team/lego_monster_truck_phone/shape0.obj-3
- scenes/morpheus_team/lego_monster_truck_phone/shape0.pngfeat0.png
- scenes/morpheus_team/lego_monster_truck_phone/shape0.pngfeat1.png
- scenes/morpheus_team/lego_tractor_phone/mlp.json-616
- scenes/morpheus_team/lego_tractor_phone/shape0.gltf-140
- scenes/morpheus_team/lego_tractor_phone/shape0.mtl-6
- scenes/morpheus_team/lego_tractor_phone/shape0.obj-3
- scenes/morpheus_team/lego_tractor_phone/shape0.pngfeat0.png
- scenes/morpheus_team/lego_tractor_phone/shape0.pngfeat1.png
- scenes/octMap.bin
- scenes/octmap_and_splats/EPA_Mission_Start_metadata.json+21
- scenes/octmap_and_splats/octMap.bin
- scenes/octmap_and_splats/orbMap.bin
- scenes/octmap_and_splats/savedMap_v1.2.0.bin
- scenes/octmap_and_splats/savedMap_v1.2.0.gltf+1
- scenes/octmap_and_splats/savedMap_v1.2.0_cell_-1_-1_-1.gltf+282
- scenes/octmap_and_splats/savedMap_v1.2.0_cell_-1_-1_0.gltf+282
- scenes/octmap_and_splats/savedMap_v1.2.0_cell_-1_0_-1.gltf+282
- scenes/octmap_and_splats/savedMap_v1.2.0_cell_-1_0_0.gltf+283
- scenes/octmap_and_splats/savedMap_v1.2.0_cell_0_-1_-1.gltf+282
- scenes/octmap_and_splats/savedMap_v1.2.0_cell_0_-1_0.gltf+282
- scenes/octmap_and_splats/savedMap_v1.2.0_cell_0_0_-1.gltf+282
- scenes/octmap_and_splats/savedMap_v1.2.0_cell_0_0_0.gltf+283
- scenes/octmap_and_splats/savedMap_v1.2.0_splats_c-1_-1_-1.bin
- scenes/octmap_and_splats/savedMap_v1.2.0_splats_c-1_-1_0.bin
- scenes/octmap_and_splats/savedMap_v1.2.0_splats_c-1_0_-1.bin
- scenes/octmap_and_splats/savedMap_v1.2.0_splats_c-1_0_0.bin
- scenes/octmap_and_splats/savedMap_v1.2.0_splats_c0_-1_-1.bin
- scenes/octmap_and_splats/savedMap_v1.2.0_splats_c0_-1_0.bin
- scenes/octmap_and_splats/savedMap_v1.2.0_splats_c0_0_-1.bin
- scenes/octmap_and_splats/savedMap_v1.2.0_splats_c0_0_0.bin
- scenes/pica_pica_robot/license.txt-11
- scenes/pica_pica_robot/scene.bin
- scenes/pica_pica_robot/scene.gltf-1.8k
- scenes/primitives/LICENSE.md-15
- scenes/primitives/README.md-7
- scenes/primitives/primitives.gltf-611
- scenes/subpass_scene_opaque.gltf-2.7k
- scenes/subpass_scene_transparent.gltf-665
- scenes/terrain/LICENSE.md-15
- scenes/terrain/README.md-5
- scenes/terrain/terrain.gltf-121
- textures/transparent_glass_rgba.ktx
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
400 | 400 | | |
401 | 401 | | |
402 | 402 | | |
403 | | - | |
| 403 | + | |
| 404 | + | |
404 | 405 | | |
405 | 406 | | |
406 | 407 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| 38 | + | |
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
0 commit comments