Getting started¶
Building¶
Requirements: CMake ≥ 3.24, a C++20 compiler, the
Vulkan SDK (loader, headers, glslc) and git.
On macOS, a Vulkan driver such as MoltenVK or KosmicKrisp is needed at
runtime.
git clone https://github.com/fortmeier/klartraum-studio.git
cd klartraum-studio
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
Klartraum itself is fetched from GitHub, including its submodules.
KLARTRAUM_GIT_TAG picks the branch or commit (default: develop). To build
against a local checkout instead:
cmake -S . -B build -DFETCHCONTENT_SOURCE_DIR_KLARTRAUM=/path/to/klartraum
The first build takes a while, because Klartraum builds protobuf for its ONNX support.
Running¶
./build/klartraum_studio # live Gaussian splatting graph
./build/klartraum_studio --example autoencoder # image file -> encoder -> decoder -> preview + PNG
./build/klartraum_studio --example splat-autoencoder # offscreen splatting -> encoder -> decoder -> preview
./build/klartraum_studio --example combined-scenes # raccoon scene + transformed lantern, merged and rendered live
./build/klartraum_studio --example animated-scenes # the same on the GPU, the lantern swinging over time
./build/klartraum_studio my.ktgraph.json # open a saved graph
./build/klartraum_studio --backend compute --spz path/to/scene.spz --profile
The same examples are in File → New from Example.
The studio can be started from any directory. Relative input paths (scenes, images, models) are tried against the working directory, then the graph file’s directory, then the Klartraum sources, so the bundled samples always resolve. Relative output paths are relative to the graph file, or to the working directory for an unsaved graph.
The examples¶
- autoencoder
Loads
data/lantern.jpg, runs Klartraum’s sample encoder and decoder (data/onnx/simple_encoder.onnx,simple_decoder.onnx, 1×3×128×128 → 1×128×16×16 → 1×3×128×128) and shows the reconstruction. Press Run (F5);autoencoded.pngis written next to the graph file.- splat-autoencoder
The same autoencoder, fed by a Gaussian splatting rendered into an offscreen target.
- combined-scenes
Merges the raccoon scene with
data/lantern.spz, placed on the lawn by a Transform (CPU) node. The scenes are combined on the CPU and uploaded once; moving a scene only re-assembles and re-uploads.- animated-scenes
Places the lantern on the GPU instead. Its yaw comes from Time → Sine → Upload Number, and Transform (GPU) and Merge (GPU) update the Gaussians every frame without rebuilding the graph.