Uživatelská příručka

Kapitola 8 — Exportní formáty

Výběr exportního formátu v Simple módu — šest kartiček formátů: PLY, SPZ, glTF, .splat, Orbit Video, Web Viewer
Výběr exportního formátu v Simple módu — šest kartiček formátů (PLY, SPZ, glTF, .splat, Orbit Video, Web Viewer). Expert mód zobrazuje stejný výběr jako hustší mřížku s více cíli.
Sekce exportu s mřížkou formátů — devět dlaždic s údajem o velikosti: PLY 2,2 MB (vybráno), cPLY 142 KB, SOG 89 KB, SPZ 216 KB, glTF 2,1 MB, .splat 279 KB, Video Zero KB, Wiggle Zero KB, Web 378 KB; pod tím tlačítko „Export PLY (3DGS Standard)“ a „Upload to SuperSplat…“
Sekce exportu s mřížkou formátů — devět dlaždic s údajem o velikosti: PLY 2,2 MB (vybráno, modře orámováno), cPLY 142 KB, SOG 89 KB, SPZ 216 KB, glTF 2,1 MB, .splat 279 KB, Video Zero KB, Wiggle Zero KB a Web 378 KB; pod tím modré tlačítko „Export PLY (3DGS Standard)" a položka „Upload to SuperSplat…"

Co je na obrázku vidět: Údaj o velikosti pod každou dlaždicí formátu se počítá živě z aktuálního počtu Gaussianů a overheadu formátu — není napevno zadaný. Ze stejné scény tak vzniknou 2,2 MB PLY, 142 KB cPLY, 89 KB SOG, 216 KB SPZ, 2,1 MB glTF a 279 KB .splat; Web má 378 KB, protože je tam navíc vestavěný prohlížeč přímo v souboru. Video a Wiggle zobrazují „Zero KB", protože velikost se určí až po zakódování. Vybraná dlaždice je orámovaná modře, a tlačítko pod ní přebírá její název — zde „Export PLY (3DGS Standard)". Pod nadpisem je řádek „Leveling the floor turns the view at once; the chosen orientation and format apply when saving".

Dokončený trénink vytvoří Gaussian Cloud — soubor několika set tisíc až milionů 3D Gaussových rozdělení, které společně rekonstruují scénu. Tato kapitola popisuje deset způsobů, jak tento soubor zapsat na disk. Šest z nich jsou čistě 3D datové formáty (PLY, Compressed PLY, SPZ, SOG, glTF, .splat), jeden sdružuje soubor spolu s hotovým HTML prohlížečem (Web Viewer), jeden vyrenderuje MP4 soubor z orbitální kamerové jízdy (Orbit Video), a dva neexportují žádný obsah Gaussianů, ale pouze výsledek SfM (kamerové pozice a hrubý bod-mrak) k opětovnému použití v jiných trénovacích pipeline (transforms.json + COLMAP workspace).

Osm z těchto způsobů je k dispozici v sekci exportu jako dlaždice — transforms.json a COLMAP workspace jsou pouze v menu. Kromě toho obsahuje mřížka devátou dlaždici Wiggle, a pod tlačítkem exportu je Upload to SuperSplat…, které místo do souboru pošle scénu přímo do editoru SuperSplat na webu.

Který formát je kdy ten správný, závisí na cíli. Pro archivaci plných dat bez ztráty kvality se použije PLY. Pro webové prohlížeče na vlastní stránce zpravidla stačí .splat nebo vestavěný Web Viewer. Pokud musí být soubor minimální, vyplatí se SPZ nebo SOG. Pro opětovné použití výsledku SfM v Nerfstudiu, Postshotu nebo Brushi jsou transforms.json a COLMAP workspace ty správné cesty.

Všechny exportní funkce jsou v menu „Export" a v Simple módu na posledním kroku průvodce. Většina formátů je plně sandbox-kompatibilní a funguje ve verzi z App Storu. Pouze SOG vyžaduje externí binárku (cwebp), která ve verzi z App Storu není nutně přítomna — podrobnosti viz E4.

E1 — PLY (.ply)

KDE

Panel nabídek → Export → 3D Formats → Export PLY… (⌘E). Simple mód: krok průvodce Export → dlaždice formátu „PLY". Velikost: typicky 100 % (referenční hodnota). Kompatibilní s: SuperSplat, PolyCam, všechny 3DGS prohlížeče.

TECHNICKY

PLY je kanonický formát pro ukládání 3D Gaussian Splatting. RadianceKit zapisuje binární soubor s Little-Endian pořadím bajtů se standardizovaným 3DGS property layoutem: na jeden Gaussian třísložková pozice, tři vždy na nulu nastavené normály, tři DC-SH koeficienty (f_dc_0..2) pro základní RGB barvu, poté až 45 dalších SH koeficientů (f_rest_0..44) v transponovaném channel-major uspořádání definovaném v Kerbl-2023 paperu (nejdřív všechny koeficienty R kanálu, pak všechny G, pak všechny B), následuje logit opacita (surové pre-sigmoid hodnoty), tři škály v log prostoru a wxyz kvaternion rotace. Maximální exportovaný SH stupeň se oříznou na minimum z uživatelova přání a skutečně naučeného stupně; výchozí hodnota je 3 (45 zbytkových koeficientů). Před zápisem se velikost payloadu počítá jako 64bitové celé číslo, aby se zachytilo přetečení u extrémně velkých souborů. Soubor se zapisuje atomicky, což u velkých souborů krátkodobě zabere dvojnásobek místa na disku.

E2 — Compressed PLY (.ply)

KDE

Panel nabídek → Export → 3D Formats → Export Compressed PLY…. Simple mód: dlaždice formátu „Compressed PLY". Velikost: cca 10–20 % oproti PLY (5- až 10-násobná komprese). Kompatibilní s: SuperSplat, PlayCanvas Engine, webové prohlížeče.

TECHNICKY

Varianta formátu PLY od PlayCanvas s chunked kvantizací. Gaussiany se seskupí do 256kusových chunků. U každého chunku se ukládají min/max meze pro pozici, škálu a barvu odděleně v hlavičce; jednotlivé Gaussiany odkazují na své hodnoty relativně k těmto mezím a jsou komprimovány na 32 bitů: pozice a škála s 11-10-11bitovým packingem, rotace jako 2-10-10-10bitový „smallest-three" kvaternion, barva jako 8-8-8-8 RGBA. Vyšší SH koeficienty se kvantizují pouze na 8 bitů na složku (tři bajty na koeficient a Gaussian). Formát samotný je stále ASCII-hlavičkové PLY, a tedy zásadně validovatelný nástroji PLY, ale vertex-vlastnosti jsou deklarovány jako uint pole. SH stupeň je ve výchozím nastavení 0 (žádné zbytkové koeficienty), aby se maximalizovala komprese — vyšší SH stupně lze zvolit explicitně.

E3 — SPZ (.spz)

KDE

Panel nabídek → Export → 3D Formats → Export SPZ…. Simple mód: dlaždice formátu „SPZ". Velikost: cca 10 % oproti PLY (o 90 % menší). Kompatibilní s: Niantic Scaniverse, Niantic Spatial Fields, MetalSplatter.

TECHNICKY

Formát SPZ v2 od Niantic. Pozice se balí jako 24bitová fixed-point čísla (to dává cca 0,25 mm rozlišení), škály jako 8bitová kvantizace v log prostoru, rotace jako 8bitový smallest-three (ve v2 se ukládá pouze xyz, w se v dekodéru odvozuje z normy kvaternionu), opacity jako sigmoidizované 8bitové hodnoty. DC-SH se ukládá pomocí SPZ-specifického vzorce (dc_raw * 0.15 * 255 + 0.5 * 255), vyšší SH pásma s 5 bity (pásmo 1) resp. 4 bity (pásma 2-3) na koeficient. Celý zabalený binární blok se poté komprimuje standardním gzipem (RFC 1952), což dává gzipovaný kontejnerový formát s magickými bajty 1f 8b. RadianceKit k tomu volá systémový gzip, protože Applovo vestavěné zlib API vytváří proprietární Apple framing, který by nebyl kompatibilní se čtečkami SPZ ve Spatial Fields nebo MetalSplatter. Systémový gzip lze spustit i uvnitř sandboxu macOS.

E4 — SOG (.sog)

KDE

Panel nabídek → Export → 3D Formats → Export SOG…. Simple mód: dlaždice formátu „SOG". Velikost: cca 5–6 % oproti PLY (15- až 20-násobná komprese — nejmenší možnost). Kompatibilní s: PlayCanvas Engine, editor SuperSplat.

TECHNICKY

„Spatially Ordered Gaussians" — formát od PlayCanvas, který ukládá soubor GPU-ready ve více bezztrátových WebP obrázcích. Nejdřív se všechny Gaussiany prostorově setřídí pomocí 3D Mortonova kódu (30bitové Z-pořadí, po 10 bitech na osu), což obrázkům poskytuje pozdější cache-locality v rendereru. Poté se pozice symetrickou log transformací (pro lepší dynamický rozsah) kvantizují na 16bitové hodnoty a rozdělí do dvou RGBA obrázků (means_l.webp pro spodních 8 bitů, means_u.webp pro horní). Rotace se kódují jako smallest-three s 3×8 bity plus 2bitovým módem do jednoho RGBA obrázku (mód se ukládá do alfa jako 252 + largest). Škály a DC-SH se kvantizují pomocí codebooku s 256 položkami (rozděleného na základě percentilů přes všechny hodnoty), indexy putují do scales.webp a sh0.webp. Pět obrázků plus meta.json s codebooky a mezemi se zabalí do ZIP souboru (vlastní enkodér, protože sandbox blokuje systémový zip) a uloží s příponou .sog.

Pozor, sandbox: SOG je jediná varianta formátu, která vyžaduje externí binárku. Fáze WebP enkodéru volá cwebp z /usr/local/bin/cwebp nebo /opt/homebrew/bin/cwebp. Pokud se žádná binárka cwebp nenajde, kód spadne zpět na hrubé PNG kódování — ale: PNG fallback nefunguje v SuperSplatu. Ve verzi z App Storu se dostupnost vyhodnocuje podle varianty buildu; ve vývojářské variantě musí být cwebp nainstalovaný přes Homebrew (brew install webp).

E5 — glTF (.glb)

KDE

Panel nabídek → Export → 3D Formats → Export glTF…. Simple mód: dlaždice formátu „glTF". Velikost: srovnatelná s PLY. Kompatibilní s: prohlížeči glTF s rozšířením KHR_gaussian_splatting (návrh standardu Khronos).

TECHNICKY

Zapisuje samostatný binární soubor .glb (bez samostatné bin-file přílohy) podle specifikace rozšíření KHR_gaussian_splatting. Pozice se ukládají jako regulérní glTF POSITION vertex data (float3), všechny ostatní atributy (rotace jako float4, škála jako float3, opacity jako float, SH koeficienty jako float3 × shCoeffCount) jsou v dodatečných vertex atributech a odkazují se přes rozšíření. Důležité: glTF používá pravotočivý souřadný systém Y-up, COLMAP/3DGS pracuje s Y-down/Z-forward. Exportér proto aplikuje otočení o 180 stupňů kolem osy X — pozice se přepíšou jako (x, -y, -z), kvaterniony se upraví na (w, x, -y, -z). To dává geometricky správné, pravotočivé (nikoli zrcadlené) zobrazení v prohlížečích glTF. JSON a binární chunky se dorovnávají na 4bajtové zarovnání, jak vyžaduje standard GLB.

E6 — Splat (.splat)

KDE

Panel nabídek → Export → 3D Formats → Export .splat…. Simple mód: dlaždice formátu „.splat". Velikost: přesně 32 bajtů na Gaussian. Kompatibilní s: gsplat.js, webové prohlížeče (referenční implementace antimatter15), většina prohlížečových 3DGS dem.

TECHNICKY

Formát .splat od antimatter15 — 32 bajtů na Gaussian, žádná hlavička, žádná indirekce. Rozvržení na položku: 3 × float32 pozice (světové souřadnice), 3 × float32 škála (exp-transformovaná z log prostoru interního bufferu), 4 × uint8 RGBA barva (DC-SH koeficient škálovaný pomocí SH_C0 = 0.282... a oříznutý na [0,255]), 4 × uint8 kvaternion (w,x,y,z, normalizovaný a kódovaný jako 128 + 128*q do rozsahu bajtů). Ukládá se pouze DC-SH — vyšší SH pásma se zahazují. To dělá formát extrémně kompaktní, ale stojí to view-závislé barevné změny, které se objevují při odleskách nebo spekulárních highlightech. Pořadí zápisu je přesně indexové pořadí souboru (žádné prostorové třídění), webové prohlížeče jako gsplat.js z toho při renderování vycházejí.

Web Viewer otevřený ve Firefoxu — Bjoernův Bouquet splat vyrenderovaný s okolními kamerovými markerovými koulemi, lišta prohlížeče s panely nahoře viditelná, žádné CDN/serverové nastavení nutné
Web Viewer otevřený ve Firefoxu — Bjoernův Bouquet splat vyrenderovaný s okolními kamerovými markerovými koulemi, lišta prohlížeče s panely nahoře viditelná, žádné CDN/serverové nastavení nutné. Samostatný soubor flowers-01.html otevřený přímo z Finderu dvojklikem ve výchozím prohlížeči — vestavěný WebGL2 program vyrenderuje Gaussian Cloud okamžitě, bez sítě nebo serveru. Černé markery kolem kytice jsou trénovací kamery, volitelně zobrazitelné. Tažení myší otáčí, kolečko zvětšuje/zmenšuje.

E7 — Web Viewer (.html)

KDE

Panel nabídek → Export → Media → Export Web Viewer…. Simple mód: dlaždice formátu „Web Viewer". Velikost: splat data zakódovaná v base64 (≈ 4/3 overhead) + cca 5 KB HTML/JS shell. Kompatibilní s: každým moderním prohlížečem s WebGL2 (všechny desktopy, iOS 15+, Android 5+).

TECHNICKY

Sdružuje Gaussian Cloud spolu s plně inline napsaným WebGL2 rendererem do jednoho souboru .html. Neexistují žádné CDN závislosti, žádný WASM, žádný druhý soubor. Soubor se interně nejdřív zakóduje jako binárka .splat (stejná 32bajtová logika jako E6), poté se vloží jako base64, poté se dekóduje pomocí atob v prohlížeči. Vestavěný renderer provádí vlastní WebGL2 třídění, ovládání orbitu myší a CPU třídění na snímek; celý JS kód (shadery, matematika, smyčka) je vidět v HTML výstupu. Konvence os na hranici mezi úložištěm a rendererem je přesně stejná jako v E5: pozice (x, -y, -z), kvaternion (w, x, -y, -z). Volitelně lze zobrazit branding overlay (přepínač free tieru). Protože je vše inline, funguje soubor i přímo z protokolu file:// — k testování není potřeba lokální webový server.

Jednotlivý snímek extrahovaný z flowers-01.mp4 — Bjoernova kytice v profilovém renderu, bílá plošina s viditelnými kamerovými markery, černé pozadí — typický snímek orbitální kamerové jízdy cca 5s do videa
Jednotlivý snímek extrahovaný z flowers-01.mp4 — Bjoernova kytice v profilovém renderu, bílá plošina s viditelnými kamerovými markery, černé pozadí (výchozí pozadí viewportu, měnitelné v nastavení). Kamera obíhá scénu po parametrické dráze (elevace + vzdálenost pevné, yaw rotuje), typická délka 6–10 sekund při 30 nebo 60 fps. Rozlišení snímku škálovatelné od 480p do 8K podle zvoleného přednastavení videa.

E8 — Orbit Video (.mp4/.mov)

KDE

Panel nabídek → Viewport → Record Turntable Video NEBO Panel nabídek → Export → Media → Export Orbit Video…. Simple mód: dlaždice formátu „Orbit Video" s posuvníkem délky 3–30 s. Velikost: závisí na délce, rozlišení, bitrate. Kompatibilní s: všemi platformami (H.264 a HEVC jsou standardem Apple).

TECHNICKY

Vyrenderuje Gaussian Cloud podél parametrické orbitální kamerové jízdy a zakóduje každý snímek přes AVAssetWriter do souboru MP4 nebo MOV. Konfigurace orbitu řídí počet otáček, vzdálenost, elevaci, FOV, délku a ease-in/out faktor. Export Orbit Video běží přes VLASTNÍ render stupeň RadianceKitu s plným SH vyhodnocením — pixelově shodně s in-app viewportem (WYSIWYG). U každého snímku se matice přizpůsobení světa (vypočítaná rendererem, aby otočila interní souřadnice do Y-up orbitálního světa) násobí kamerou, poté se aplikuje zrcadlení pro konverzi kamery (Orbit Y-up → COLMAP Y-down). Offscreen render target se přes IOSurface převede na CVPixelBuffer pro enkodér. Enkodér podporuje H.264 a HEVC, konfigurovatelnou bitrate a rozlišení od 480p do 8K. Před prvním snímkem čeká renderer 200 ms, aby bylo dokončeno počáteční třídění splatů. Tento export je vázaný na GPU — při 8K a milionech Gaussianů se doba renderu na snímek pohybuje v řádu několika sekund, takže celkové doby renderování 10–30 minut pro 6s video jsou možné.

E9 — SfM Transforms (transforms.json)

KDE

Panel nabídek → Export → Photogrammetry → Export SfM (transforms.json)…. Velikost: typicky 1–10 KB (pouze pozice + intrinsics, žádné obrázky, žádné Gaussiany). Kompatibilní s: nerfstudio, Brush, gsplat, OpenSplat, Meshroom, všechny moderní feed-forward 3DGS trenéry.

TECHNICKY

Zapisuje formát nerfstudio transforms.json se seznamem kamerových pozic plus sdílenými intrinsics. U každé kamery se invertuje view matice (interně v RadianceKit: World-to-Camera v konvenci COLMAP), poté se zrcadlí kameralokální bázové vektory Y a Z, aby se konvertovaly do konvence nerfstudio (styl OpenGL, kamera se dívá podél -Z, +Y je nahoře). Finální matice 4×4 se ukládá jako row-major vnořené pole hodnot double do pole transform_matrix každého snímku. Intrinsics se ukládají na nejvyšší úrovni (ohnisková vzdálenost x/y, hlavní bod x/y, šířka/výška obrázku, camera_model = "OPENCV", plus koeficienty zkreslení k1, k2, p1, p2) — kromě případu, kdy exportér rozpozná více různých sad intrinsics, pak se zapisují na jednotlivé snímky. Cesty k obrázkům se ukládají jako images/<filename> relativně k JSON souboru; uživatel musí vytvořit sourozeneckou složku images/ s tréninkovými fotkami.

E10 — COLMAP Workspace (sparse/0/)

KDE

Panel nabídek → Export → Photogrammetry → Export SfM (COLMAP Workspace)…. Velikost: tři binární soubory dohromady typicky 4–8 MB — points3D.bin dominuje (jeden řádek na 3D bod řídkého bod-mraku), images.bin a cameras.bin jsou obě výrazně pod 100 KB. Kompatibilní s: samotný COLMAP, Nerfstudio, Postshot, Meshroom, všechny nástroje, které očekávají adresář COLMAP sparse/.

TECHNICKY

Zapisuje standardní COLMAP layout sparse/0/ se třemi binárními soubory: cameras.bin, images.bin, points3D.bin. Referencí pro formát je oficiální dokumentace COLMAP. cameras.bin obsahuje deduplikovaný seznam intrinsics (kamery s identickými intrinsics + velikostí obrázku se sloučí do jedné položky); použitý model kamery je OPENCV (model 4), s fx/fy/cx/cy plus čtyřmi koeficienty zkreslení k1/k2/p1/p2. images.bin uvádí u každého obrázku pozici jako kvaternion wxyz plus translaci, následuje ID kamery a název souboru; neukládají se žádné 2D-3D korespondence. points3D.bin obsahuje řídký bod-mrak SfM s pozicí, barvou (0-255 RGB) a výchozími hodnotami pro reprojekci a délku trasy. Vše se zapisuje v Little-Endian pořadí. Zpětný import do RadianceKit funguje přes menu File → „Import COLMAP/Metashape Workspace…" (viz Q3 v kapitole SfM Backend).

Který formát kdy?

CílFormát
Webový prohlížeč na vlastní stránceE7 Web Viewer (.html)
Webový prohlížeč s gsplat.jsE6 Splat (.splat)
Opětovné použití v pipeline Postshot / NerfstudioE9 transforms.json + E10 COLMAP Workspace
Úprava v SuperSplatE1 PLY nebo E2 Compressed PLY
Niantic Scaniverse / Spatial FieldsE3 SPZ
Maximální kompreseE4 SOG (vyžaduje cwebp)
Marketingové / sociální videoE8 Orbit Video
Další úpravy scény onlineTlačítko „Upload to SuperSplat…" pod mřížkou formátů

Rychlé srovnání

FormátPříponaSandboxVelikost (1M Gauss)Nejlepší využití
E1 PLY.plyano~250 MBArchiv, nejvyšší kompatibilita
E2 Compressed PLY.plyano~40 MBWeb + SuperSplat
E3 SPZ.spzano (gzip-spawn)~40 MBNiantic + Mobile
E4 SOG.sogpodmíněně (cwebp)~20 MBMaximální komprese
E5 glTF.glbano~250 MBKhronos pipeline
E6 Splat.splatano~32 MBgsplat.js Web-Viewer
E7 Web Viewer.htmlano~45 MBSamostatný soubor pro prohlížeč
E8 Orbit Video.mp4/.movanoproměnliváSocial/Marketing
E9 SfM Transforms.jsonano~5 KBPředání pozic
E10 COLMAP WorkspaceAdresářano~4–8 MBPředání pozic binárně

Sloupec s velikostí obsahuje hrubé orientační hodnoty pro 1 milion Gaussians se stupněm SH 3. Skutečné hodnoty se liší podle komprimovatelnosti scény; stupeň SH 0 zmenšuje PLY/glTF o faktor 4.