Användarguide

Kapitel 8 — Eksportformater

Eksportformat-valg i Simple Mode — seks format-kort
Eksportformat-valg i Simple Mode — seks format-kort
Eksportformat-grid live efter 5K-iter-træning på flowers-buket — alle seks kort med dynamisk størrelsesberegning (PLY 742 KB valgt, SPZ 74 KB, glTF 708 KB,.splat 96 KB, Orbit Video ~Zero KB, Web Viewer 133 KB), Export History til højre med allerede gemt PLY
Eksportformat-grid live efter 5K-iter-träning på flowers-buket — alle seks kort med dynamisk størrelsesberegning (PLY 742 KB valgt, SPZ 74 KB, glTF 708 KB, .splat 96 KB, Orbit Video ~Zero KB, Web Viewer 133 KB), Export History til højre med allerede gemt PLY

Vad bilden visar (2 991 gaussians, SH degree 3, Bjoerns syntetiske Blender-buket som IP-clean test-sæt): Størrelsesangivelserne under hvert format-kort beregnes live ud fra aktuelt gaussian-antal og format-overhead — inte hårdkodet. Ud av 2 991 gaussians (SH degree 3) opstår 742 KB PLY, 74 KB SPZ (faktor ~10× mindre via kvantisering), 708 KB glTF (med KHR_gaussian_splatting-extension, därför næsten PLY-ækvivalent), 96 KB .splat (komprimeret 24-byte-pr.-gaussian-format). Orbit Video visar „~Zero KB", fordi størrelsen først kendes efter MP4-encoding. Web Viewer (133 KB) samler en selvstændig HTML-fil med indlejret WebGL-viewer og komprimerede splat-data — større end rent .splat på grund av viewer-overhead. Export History til højre lister allerede afsluttet PLY-eksport („training_20260527T211321Z.ply, 743 KB, 23:13") med format-pille og reveal-i-Hittar-action.

En afsluttet träning leverer en gaussian-cloud — en samling på några hundredtusinde til millioner av 3D-gauss-fordelinger, der tilsammen rekonstruerer scenen. RadianceKit kender ti måder at skrive denna sky til disk på. Seks av dem er rene 3D-dataformater (PLY, Compressed PLY, SPZ, SOG, glTF, .splat), et bundler skyen sammen med en færdig HTML-viewer (Web Viewer), et renderer en MP4-fil ud av en orbit-kamerakørsel (Orbit Video), og to eksporterer ingen gaussian-indhold, men kun SfM-resultatet (kamerapositioner og grov punktmoln) til genbrug i andre trænings-pipelines (transforms.json + COLMAP-workspace).

Hvilket format der är det rette hvornår, afhænger av målet. Til arkivering av de fulde data uden kvalitetstab tager man PLY. Til web-viewer på egen side rækker som regel .splat eller den indbyggede web-viewer. Om filen ska være minimal, betaler SPZ eller SOG sig. Til genbrug av SfM-resultatet i Nerfstudio, Postshot eller Brush er transforms.json og COLMAP-workspace de rigtige veje.

Alle eksportfunktioner ligger i menuen „Export" og i Simple Mode på det sista wizard-trin. De fleste formater er fuldt sandbox-konforme og virker i App Store-versionen. Kun SOG kræver en ekstern binary (cwebp), som inte nødvendigvis er til stede i App Store-buildet — detaljer se E4.

E1 — PLY (.ply)

VAR

Menulinjen → Export → 3D Formats → Export PLY… (⌘E). Simple Mode: wizard-trin Export → format-kort „PLY". Størrelse: typiskt 100 % (referenceværdi). Kompatibel med: SuperSplat, PolyCam, alle 3DGS-viewere.

TEKNISKT

PLY är det kanoniske lagringsformat for 3D Gaussian Splatting. RadianceKit skriver en binær Little-Endian-fil med det standardiserede 3DGS-property-layout: pr. gaussian trekomponent position, tre normaler altid sat til nul, tre DC-SH-koefficienter (f_dc_0..2) for basis-RGB-farven, därefter op til 45 yderligere SH-koefficienter (f_rest_0..44) i den i Kerbl-2023-papiret definerede transponerede channel-major-ordning (først alle R-kanal-koefficienter, så alle G, så alle B), efterfulgt av logit-opacitet (rå pre-sigmoid-värden), tre log-space-skaler og en wxyz-quaternion-rotation. Den maksimalt eksporterede SH-grad klampes til minimum av brugerønske og faktisk lært grad; default er 3 (45 rest-koefficienter). Før skrivning beregnes payload-størrelsen i 64-bit integer for at fange overflow vid ekstremt store skyer. Filen skrives atomisk, vilket vid store skyer kortvarigt optager dobbelt diskplads.

E2 — Compressed PLY (.ply)

VAR

Menulinjen → Export → 3D Formats → Export Compressed PLY…. Simple Mode: format-kort „Compressed PLY". Størrelse: ca. 10–20 % i forhold til PLY (5- til 10-gange komprimering). Kompatibel med: SuperSplat, PlayCanvas-engine, webbaserede viewere.

TEKNISKT

PlayCanvas-varianten av PLY-formatet med chunked kvantisering. Gaussians grupperes i 256-stykker-chunks. Pr. chunk lægges min/max-bounds for position, scale og color separat i headeren; de enkelte gaussians refererer deres värden relativt til dessa bounds og komprimeres til hver 32 bit: position og skala med 11-10-11-bit-pakning, rotation som 2-10-10-10-bit „smallest-three"- quaternion, farve som 8-8-8-8-RGBA. Højere SH-koefficienter kvantiseres med kun 8 bit pr. komponent (shCoeffCount * 3 uchar pr. gaussian). Selve formatet er stadig ASCII-header-PLY og därför principielt validerbart med PLY-værktøjer, men vertex-properties er erklæret som uint-felter. SH-grad er pr. default 0 (ingen rest-koefficienter) for at maksimere komprimeringen — højere SH-grader kan vælges eksplicit.

E3 — SPZ (.spz)

VAR

Menulinjen → Export → 3D Formats → Export SPZ…. Simple Mode: format-kort „SPZ". Størrelse: ca. 10 % i forhold til PLY (90 % mindre). Kompatibel med: Niantic Scaniverse, Niantic Spatial Fields, MetalSplatter.

TEKNISKT

Niantics SPZ-v2-format. Positioner pakkes som 24-bit-fixed-point (det giver ca. 0,25 mm upplösning), skaler som 8-bit-kvantisering i log-rum, rotationer som 8-bit-smallest-three (i v2 gemmes kun xyz, w afledes i decoderen av quaternion-normen), opaciteter som sigmoideret 8-bit-värden. DC-SH gemmes med en SPZ-specifik pakke-formel (dc_raw * 0.15 * 255 + 0.5 * 255), højere SH-bånd med 5 bit (bånd 1) henholdsvis 4 bit (bånd 2-3) pr. koefficient. Hele den pakkede binær-blob komprimeres därefter med standard-gzip (RFC 1952), vilket giver et gzipped-container-format med magic bytes 1f 8b. RadianceKit kalder hertil system-gzip, fordi Apples indbyggede zlib-API producerer proprietær Apple-framing, der inte ville være kompatibel med SPZ-readerne i Spatial Fields eller MetalSplatter. System-gzip kan stadig spawnes inden for macOS-sandboxen.

E4 — SOG (.sog)

VAR

Menulinjen → Export → 3D Formats → Export SOG…. Simple Mode: format-kort „SOG". Størrelse: ca. 5–6 % i forhold til PLY (15- til 20-gange komprimering — den mindste mulighed). Kompatibel med: PlayCanvas-engine, SuperSplat-editor.

TEKNISKT

„Spatially Ordered Gaussians" — et PlayCanvas-format, der gemmer skyen GPU-ready i flere lossless-WebP-bilder. Først sorteres alle gaussians rumligt via 3D-Morton-code (30-bit Z-order, 10 bit pr. akse), vilket giver bilderna senere cache-lokalitet i rendereren. Så kvantiseres positioner med symmetrisk log-transformation (for bedre dynamikomfang) til 16-bit-värden og splittes i to RGBA-bilder (means_l.webp for de nederste 8 bit, means_u.webp for de øverste). Rotationer kodes som smallest-three med 3×8-bit plus 2-bit-mode i et RGBA-bild (mode lander i alpha som 252 + largest). Skaler og DC-SH kvantiseres hver med en 256-indgangs-codebook (percentil-baserat fordelt over alle värden), indekserne lander i scales.webp og sh0.webp. De fem bilder plus en meta.json med codebooks og bounds pakkes i en ZIP-fil (custom-encoder, fordi sandboxen blokerer system-zip) og gemmes med endelsen .sog.

Sandbox-advarsel: SOG är den eneste format-mulighed, der kræver en ekstern binary. WebP-encoder-trinet kalder cwebp fra /usr/local/bin/cwebp eller /opt/homebrew/bin/cwebp. Om ingen cwebp-binary finns, falder koden tilbage på rå PNG-encoding — men: PNG-fallback fungerer inte i SuperSplat. I App Store-versionen evaluér tilgængeligheden ud fra build-varianten; i developer-varianten ska cwebp være installeret via Homebrew (brew install webp).

E5 — glTF (.glb)

VAR

Menulinjen → Export → 3D Formats → Export glTF…. Simple Mode: format-kort „glTF". Størrelse: sammenlignelig med PLY. Kompatibel med: glTF-viewere med KHR_gaussian_splatting-extension (Khronos-draft-standard).

TEKNISKT

Skriver en selvstændig .glb-binærfil (ingen separat bin-fil-vedhæftning) i overensstemmelse med KHR_gaussian_splatting-extension-specifikationen. Positioner gemmes som regulære glTF-POSITION-vertex-data (float3), alle andre attributter (rotation som float4, scale som float3, opacity som float, SH-koefficienter som float3 × shCoeffCount) ligger i yderligere vertex-attributter og refereres via extensionen. Vigtigt: glTF bruger højrehåndet Y-up-koordinatsystem, COLMAP/3DGS arbejder Y-down/Z-forward. Eksportøren anvender därför en 180-graders rotation om X-aksen — positioner skrives om med (x, -y, -z), quaternioner tilpasses til (w, x, -y, -z). Det giver en geometrisk korrekt, hændet (inte spejlvendt) gengivelse i glTF-viewere. JSON- og binærchunks paddes til 4-byte-alignment, som GLB-standarden kræver.

E6 — Splat (.splat)

VAR

Menulinjen → Export → 3D Formats → Export .splat…. Simple Mode: format-kort „.splat". Størrelse: præcis 32 bytes pr. gaussian. Kompatibel med: gsplat.js, webbaserede viewere (antimatter15-reference), de fleste browser-3DGS-demoer.

TEKNISKT

antimatter15-.splat-formatet — 32 bytes pr. gaussian, ingen header, ingen indirektion. Layout pr. post: 3 × float32 position (verdens-koordinater), 3 × float32 scale (exp-transformeret fra log-space i den interne buffer), 4 × uint8 RGBA-farve (DC-SH-koefficient skaleret med SH_C0 = 0.282... og klampet til [0,255]), 4 × uint8 quaternion (w,x,y,z, normaliseret og kodet som 128 + 128*q i byte-området). Kun DC-SH gemmes — højere SH-bånd kasseres. Det gör formatet ekstremt kompakt, men koster de view-afhængige farveændringer, der opstår vid refleksioner eller spekulære højlys. Skriverækkefølgen er præcis cloudens index-rækkefølge (ingen rumlig sortering), web-viewere som gsplat.js rendrer ud fra det.

Web Viewer åbnet i Firefox — Bjoerns buket-splat renderet med omgivende kamera-marker-kugler, browser-tab-bar synlig øverst, ingen CDN-/server-opsætning nødvendig
Web Viewer åbnet i Firefox — Bjoerns buket-splat renderet med omgivende kamera-marker-kugler, browser-tab-bar synlig øverst, ingen CDN-/server-opsætning nødvendig. Selvstændig flowers-01.html åbnet direkte fra Hittar vid dobbeltklik i standardbrowseren — det indlejrede WebGL2-program rendrer gaussian-cloud'en med det samme uden netværk eller server. De sorte markører omkring buketten er trænings-kamerorna, valgfrit indkoblelige. Mus-træk roterer, scroll zoomer.

E7 — Web Viewer (.html)

VAR

Menulinjen → Export → Media → Export Web Viewer…. Simple Mode: format-kort „Web Viewer". Størrelse: splat-data base64-kodet (≈ 4/3 overhead) + ca. 5 KB HTML/JS-shell. Kompatibel med: enhver moderne browser med WebGL2 (alle desktops, iOS 15+, Android 5+).

TEKNISKT

Bundler gaussian-cloud'en sammen med en fuldstændig inline skrevet WebGL2-renderer i en enkelt .html-fil. Der er ingen CDN-afhængigheder, ingen WASM, ingen anden fil. Cloud'en kodes internt først som .splat-binær (samme 32-byte-logik som E6), därefter base64-indlejret, därefter dekodet i browseren med atob. Den indbyggede renderer laver egen WebGL2-sortering, mus-orbit-styring og CPU-sortering pr. frame; hele JS-koden (shadere, matematik, loop) kan ses i output-HTML'en. Akse-konventionen på lagring-til-renderer-grænsen er præcis den samme som i E5: position (x, -y, -z), quaternion (w, x, -y, -z). Valgfrit kan et branding-overlay indkobles (free-tier-kontakt). Da alt er inline, fungerer filen också direkte fra file://-protokollen — ingen lokal webserver nødvendig til test.

Enkelt frame udtrukket fra flowers-01.mp4 — Bjoerns buket i profil-render, hvid platform med kamera-markører synlig, sort baggrund — typisk orbit-kamerakørsels-frame ca. 5s inde i video-kørslen
Enkelt frame udtrukket fra flowers-01.mp4 — Bjoerns buket i profil-render, hvid platform med kamera-markører synlig, sort baggrund (default-viewport-baggrund, kan ændres i Settings). Kameraet kredser om scenen på en parametrisk bane (elevation + afstand fast, yaw roterer), varighed typiskt 6–10 sekunder vid 30 eller 60 fps. Frame-upplösning skaérbar fra 480p til 8K via VideoPreset.

E8 — Orbit Video (.mp4/.mov)

VAR

Menulinjen → Viewport → Record Turntable Video ELLER menulinjen → Export → Media → Export Orbit Video…. Simple Mode: format-kort „Orbit Video" med varigheds-slider 3–30 s. Størrelse: afhænger av varighed, upplösning, bitrate. Kompatibel med: alle platforme (H.264 og HEVC er Apple-standard).

TEKNISKT

Rendrer gaussian-cloud'en langs en parametrisk orbit-kamerakørsel og enkoder hvert frame via AVAssetWriter til en MP4- eller MOV-fil. Orbit-konfigurationen styrer rotationshastighed (omdrejninger), afstand, elevation, FOV, varighed og ease-in/out-faktor. Pr. frame multipliceres verdens-tilpasningsmatricen (beregnet av rendereren for at dreje de interne koordinater ind i Y-up-orbit-verdenen) med kameraet, därefter anvendes den MetalSplatter-specifikke Y-spejling. Offscreen-render-target'et trækkes via IOSurface til en CVPixelBuffer for encoderen. Encoderen understøtter H.264 og HEVC, konfigurerbar bitrate og upplösning fra 480p til 8K. Før første frame venter rendereren 200 ms, så den indledende splat-sortering er afsluttet. Denne eksport er GPU-bound — vid 8K og millioner av gaussians ligger render-tiden pr. frame på flere sekunder, altså samlede render-tider på 10–30 minutter for 6 s video muligt.

E9 — SfM Transforms (transforms.json)

VAR

Menulinjen → Export → Photogrammetry → Export SfM (transforms.json)…. Størrelse: typiskt 1–10 KB (kun positioner + intrinsics, ingen bilder, ingen gaussians). Kompatibel med: nerfstudio, Brush, gsplat, OpenSplat, Meshroom, alle moderne feed-forward 3DGS-trænere.

TEKNISKT

Skriver nerfstudio-transforms.json-formatet med en liste over kamerapositioner plus delte intrinsics. Pr. kamera inverteres view-matricen (RadianceKit-internt: world-to-camera i COLMAP-konvention), därefter spejles kameralokale Y- og Z-basisvektorer for at konvertere til nerfstudio-konventionen (OpenGL-stil, kamera kigger langs -Z, +Y er op). Den endelige 4×4-matrix lander som row-major nested array av doubles i transform_matrix-feltet i hvert frame. Intrinsics gemmes på top-niveau (brændvidde x/y, hovedpunkt x/y, billedbredde/-højde, camera_model = "OPENCV", plus distortion-coefficients k1, k2, p1, p2) — bortset fra om eksportøren genkender flere olika intrinsics-sæt, så skrives de pr. frame. Billedstier skrives som images/<filename> relativt til JSON-filen; brugeren ska oprette en sibling-images/-mappe med træningsfotoene.

E10 — COLMAP Workspace (sparse/0/)

VAR

Menulinjen → Export → Photogrammetry → Export SfM (COLMAP Workspace)…. Størrelse: tre binærfiler sammen typiskt 4–8 MB — points3D.bin dominerer (én linje pr. 3D-punkt i sparse-cloud'en), images.bin og cameras.bin er hver markant under 100 KB. Kompatibel med: COLMAP selv, Nerfstudio, Postshot, Meshroom, alle værktøjer, der forventer et COLMAP-sparse/-katalog.

TEKNISKT

Skriver standard-COLMAP-sparse/0/-layoutet med tre binære filer: cameras.bin, images.bin, points3D.bin. Format-reference är den officielle COLMAP-dokumentation. cameras.bin innehåller den deduplikerede intrinsics-liste (kameraer med identiske intrinsics + billedstørrelse samles til en enkelt post); det anvendte camera-model er OPENCV (model 4), med fx/fy/cx/cy plus de fire distortion-coefficients k1/k2/p1/p2. images.bin lister pr. bild positionen som wxyz-quaternion plus translation, efterfulgt av kamera-ID og filnavn; ingen 2D-3D-korrespondancer gemmes. points3D.bin innehåller SfM-punktskyen med position, farve (0-255 RGB) og default-värden for reprojektion og track-length. Alt skrives i Little-Endian. Re-import i RadianceKit fungerer via File-menuen → „Import COLMAP/Metashape Workspace…" (se Q3 i SfM-backend-kapitlet).

Hvilket format hvornår?

MålFormat
Web-viewer på egen sideE7 Web Viewer (.html)
Web-viewer med gsplat.jsE6 Splat (.splat)
Pipeline-genbrug i Postshot / NerfstudioE9 transforms.json + E10 COLMAP Workspace
SuperSplat-redigeringE1 PLY eller E2 Compressed PLY
Niantic Scaniverse / Spatial FieldsE3 SPZ
Maksimal komprimeringE4 SOG (cwebp påkrævet)
Marketing-/social-videoE8 Orbit Video

Hurtig sammenligning

FormatEndelseSandboxStørrelse (1M gauss)Bedst til
E1 PLY.plyja~250 MBArkiv, højeste kompatibilitet
E2 Compressed PLY.plyja~40 MBWeb + SuperSplat
E3 SPZ.spzja (gzip-spawn)~40 MBNiantic + mobil
E4 SOG.sogbetinget (cwebp)~20 MBMaksimal komprimering
E5 glTF.glbja~250 MBKhronos-pipeline
E6 Splat.splatja~32 MBgsplat.js web-viewer
E7 Web Viewer.htmlja~45 MBStandalone browser-fil
E8 Orbit Video.mp4/.movjavariabelSocial/marketing
E9 SfM Transforms.jsonja~5 KBPose-overdragelse
E10 COLMAP WorkspaceKatalogja~4–8 MBPose-overdragelse binær

Størrelses-kolonnen er grove pejlemærker for 1 mio. gaussians vid SH-grad 3. Reelle värden varierer alt efter scenens komprimerbarhed; SH-grad 0 reducerer PLY/glTF med faktor 4.