Handleiding

Hoofdstuk 2 — Inspector (Expert View)

Expertmodus leeg — links de Project Navigator met Images/Cameras/Log, kopregel „Images (0)” en dropzone „Drop images here / or tap + to import”, in het midden een lege Viewport, rechts de Inspector met zes ingeklapte secties (Presets, Cameras & Capture, Training, Progress, Look, Export), elk met kop en grijze fase-subregel; onderaan de statusregel „Idle” met groene start- en rode stopknop
Expertmodus leeg — links de Project Navigator met Images/Cameras/Log, kopregel „Images (0)" en dropzone „Drop images here / or tap + to import", in het midden een lege Viewport, rechts de Inspector met zes ingeklapte secties (Presets, Cameras & Capture, Training, Progress, Look, Export), elk met kop en grijze fase-subregel; onderaan de statusregel „Idle" met groene start- en rode stopknop

Lege Inspector vóór import: De linkerkolom toont de onderdelen Images, Cameras en Log, daaronder de kopregel „Images (0)" en de dropzone „Drop images here / or tap + to import". De Viewport in het midden is leeg. Rechts staat de Inspector met zes ingeklapte secties: Presets, Cameras & Capture, Training, Progress, Look en Export. Onder elke kop noemt een grijze regel wat de sectie doet en wanneer ze werkt — „Ready-made recipes — they replace the training settings" (Presets), „Before training · decides how camera positions are solved · applies to the next run" (Cameras & Capture), „Before training · drives scene build-up and optimization · applies to the next run" (Training), „Display only" (Progress), „After training · applies immediately · reversible any time" (Look) en „Leveling the floor turns the view at once; the chosen orientation and format apply when saving" (Export). Helemaal onderaan loopt de statusregel met de status „Idle" en de groene start- en de rode stopknop; rechtsboven staat de schakelaar Simple/Expert, hier op Expert.

Inspector met 35 geïmporteerde afbeeldingen — kopregel „Images (35)”, bestandsnamen IMG_0953.JPG oplopend, Viewport nog leeg, status „Idle”
Inspector met 35 geïmporteerde afbeeldingen — kopregel „Images (35)", bestandsnamen IMG_0953.JPG oplopend, Viewport nog leeg, status „Idle"

Inspector na import: De kopregel van de afbeeldingenlijst toont „Images (35)", daaronder staan de geïmporteerde opnamen met oplopende bestandsnamen vanaf IMG_0953.JPG. De afbeeldingen van deze testreeks hebben een resolutie van 4032×3024 pixels; de Auto-Render-Scale-logica leest deze resolutie uit en stelt een passende Render Scale voor. De Viewport is nog leeg, de statusregel staat op „Idle". De groene startknop linksonder is nu actief en start de training met de actieve Preset.

Inspector midden in training — titelbalk „RadianceKit — Training 23%”, in de Viewport de live-preview van een stoffen eend op een schapenvacht, voortgang 4,700/20,000 met ETA 1m9s, metrieklijn Loss 0.0109 / LR 2.0e-04 / SH 1 / Gaussians 16.0K, in de Inspector de opengeklapte groep CLASSIC met groen gemarkeerd „Balanced 20K iters”
Inspector midden in training — titelbalk „RadianceKit — Training 23%", in de Viewport de live-preview van een stoffen eend op een schapenvacht, voortgang 4,700/20,000 met ETA 1m9s, metrieklijn Loss 0.0109 / LR 2.0e-04 / SH 1 / Gaussians 16.0K, in de Inspector de opengeklapte groep CLASSIC met groen gemarkeerd „Balanced 20K iters"

Inspector tijdens training: De titelbalk toont de globale voortgang, hier „RadianceKit — Training 23%". De Viewport rendert de lopende reconstructie in realtime — een stoffen eend op een schapenvacht, al duidelijk herkenbaar (het update-interval van de live-preview staat in Settings → General → Training → Live Preview). Onder de Viewport lopen de voortgang („4,700/20,000", „ETA 1m9s") en de metrieklijn met Loss 0.0109, LR 2.0e-04, SH 1 en Gaussians 16.0K; linksonder staan de pauze- en stopknop. In de Inspector is de groep CLASSIC opengeklapt, „Balanced 20K iters" draagt het groene vinkje. Een „Modified"-badge verschijnt pas zodra een parameter afwijkt van de Preset — hier is er geen te zien. De sidebar „Log" verzamelt SfM- en Training-stage-events.

Inspector na afronding van de training — titelbalk „RadianceKit — Training Complete — 8,708 Gaussians”, links „Complete” met 8,708 Gaussians, Images 25 en Cameras 35, statusregel „Completed” bij 20,000/20,000, metrieklijn Loss 0.0075 / LR 0.0e+00 / SH 3 / Gaussians 9.7K, in de Viewport de voltooide reconstructie van de eend beeldvullend
Inspector na afronding van de training — titelbalk „RadianceKit — Training Complete — 8,708 Gaussians", links „Complete" met 8,708 Gaussians, Images 25 en Cameras 35, statusregel „Completed" bij 20,000/20,000, metrieklijn Loss 0.0075 / LR 0.0e+00 / SH 3 / Gaussians 9.7K, in de Viewport de voltooide reconstructie van de eend beeldvullend

Inspector na training: De titelbalk noemt het resultaat: „Training Complete — 8,708 Gaussians". In de linkerkolom staat „Complete" met datzelfde getal, plus Images 25 en Cameras 35 — 25 afbeeldingen omdat de Frame-Quality-dialoog tien onscherpe van de 35 opnamen heeft uitgesorteerd. De statusregel meldt „Completed" bij 20,000/20,000, de metrieklijn Loss 0.0075, LR 0.0e+00, SH 3 en Gaussians 9.7K. De Viewport toont de voltooide puntenwolk beeldvullend — orbitale drag-navigatie actief (draait om het middelpunt van de scène).

Dat hier twee verschillende Gaussian-aantallen staan, is met opzet: Metrieklijn en Training Metrics noemen de stand aan het einde van de training (hier 9.660, afgerond 9,7K), titelbalk en scène de stand na de automatische opruimrondes (8.708). Daartussen liggen Post-Training Compactification en het verwijderen van naald- en schijfvormige splats. Het kleinere getal is dat wat in de Viewport staat en wat bij export wordt bewaard. De groepen Training Metrics en Loss History zijn nu gevuld met de eindwaarden, de Export-sectie is actief.

De Inspector is de rechter zijbalk in de Expert Mode (⌘2). Hij bundelt alle trainingsrelevante parameters in zes inklapbare secties, die sinds 2026-07-18 gegroepeerd zijn naar domein. De standaardvolgorde van boven naar beneden is: Presets, Cameras & Capture, Training, Progress, Look en Export. Onder elke kop staat een tweede regel die de fase noemt — wanneer de sectie werkt en hoe omkeerbaar ze is (bijv. „Before training · decides how camera positions are solved · applies to the next run" bij Cameras & Capture, „After training · applies immediately · reversible any time" bij Look, „Display only" bij Progress). Twee eerdere secties zijn opgegaan: Metrics en Loss-grafiek zijn nu twee afzonderlijk inklapbare groepen ("Training Metrics" en "Loss History") binnen Progress, en de vroegere Enhancements-sectie zit volledig in Training. De sectie „Look" (post-training-beeldaanpassingen) is de daadwerkelijke UI-hernoeming van de vroegere sectie „Finishing" — de interne naam blijft om compatibiliteitsredenen „Finishing", de getoonde kop heet „Look" (hetzelfde patroon bij Training, dat intern „Training Configuration" heet). Elke sectie kan worden ingeklapt door op de kop te klikken, de volgorde is te wijzigen via drag-and-drop. Bij de eerste start zijn de secties ingeklapt — op de afbeelding hierboven zijn alle zes dicht; de app-state bewaart klap- en volgorde-voorkeuren daarna over app-starts heen. Een al opgeslagen oude indeling wordt bij de eerste start eenmalig gemigreerd naar de nieuwe groepering; Viewport ▸ Reset Inspector Layout herstelt de toestand van aflevering.

Een reeks bedieningselementen uit de Inspector duikt in bijna identieke vorm ook op in de instellingen (hoofdstuk 3) — doorgaans SfM-backend, Sky-Masking en vergelijkbare standaardwaarden. De scheiding is bewust: de instellingen leveren de app-brede sjabloon voor nieuw aangemaakte projecten, de Inspector overschrijft deze waarden voor het momenteel geopende project. Wie eenmaal de bedieningslogica van de ene kant kent, kan de andere blind gebruiken.

De linkerkolom in de Expert Mode — de Project Navigator — hoort niet bij de Inspector, maar is wel zijn directe buur. Daar kunnen geïmporteerde afbeeldingen met een klik worden geselecteerd, met de spatiebalk in Quick Look worden bekeken en via de min-knop of de verwijdertoets worden verwijderd (met Cmd-Z om ongedaan te maken). De Inspector volgt de huidige sidebar-selectie met contextspecifieke detailinformatie, de zeven hoofdsecties blijven echter altijd beschikbaar.

Look-sectie (L1–L5)

De Look-sectie (intern nog steeds „Finishing" genoemd) is sinds de domein-herindeling de vijfde Inspector-sectie — tussen Voortgang en Export — en verzamelt de post-training -beeldaanpassingen op één plek. Alle regelaars werken niet destructief: elke slider past de Look-berekening opnieuw toe op een ongewijzigde Pristine-snapshot (originele DC-kleur, -opacity, -schaling) — de aanpassing is dus idempotent, niet cumulatief. Het resultaat verschijnt live in de Viewport (WYSIWYG, precies zoals bij de latere export) en wordt in elke export ingebakken. De sectie is pas na afronding van een trainingsrun beschikbaar (daarvoor staat er „Available after a training run completes."); de waarden worden bij elke nieuwe training teruggezet. Zolang een export loopt, zijn alle regelaars vergrendeld — een vergrendelingsmelding „Locked while exporting — the file uses the current settings." verschijnt en de GroupBox is uitgeschakeld.

L1Saturation-slider

WAAR

Inspector → Look-sectie → GroupBox → Saturation.

TECHNISCH

Slider 0.5–1.2, weergave met twee decimalen (bijv. „1.00"). Schaalt de SH-DC-chroma van elke splat rond de luminantiewaarde: 1.0 = ongewijzigd, < 1.0 = ontverzadigd (kleur naar grijstinten getrokken), > 1.0 = krachtiger. Wiskundig wordt de DC-kleur telkens teruggerekend vanuit de Pristine-snapshot, zodat herhaaldelijk schuiven niet optelt. Is gevalideerd op DJI-drone-materiaal (Pensford-viaduct), dat vaak overdreven kleurig is — de drone-default ligt op 0.82. Werkt alleen op de kleurbasis (SH-graad 0), hogere SH-coëfficiënten blijven onaangetast.

L2Splat length-slider

WAAR

Inspector → Look-sectie → GroupBox → Splat length.

TECHNISCH

Slider 0.3–1.0, weergave met twee decimalen. Trekt de drie schaalassen van elke Gaussian in de log-ruimte naar hun gemiddelde (hoe kleiner de waarde, hoe sterker): 1.0 = ongewijzigd, kleinere waarden maken langgerekte "naald"-splats ronder, 0 zou pure bollen opleveren. Pakt naaldachtige, overrekte splats aan zonder de totale grootte te veranderen, en vermindert daardoor typische "confetti"-artefacten. Vanaf de Pristine-snapshot (originele log-schaling) toegepast, dus idempotent. Commuteert met Splat size (L3), omdat beide in de log-ruimte werken.

L3Splat size-slider

WAAR

Inspector → Look-sectie → GroupBox → Splat size.

TECHNISCH

Slider 0.5–2.0, weergave met twee decimalen. Schaalt elke Gaussian op alle drie assen uniform: 1.0 = ongewijzigd, < 1.0 = kleiner/dichter/scherper, > 1.0 = groter/"fluffiger" (vult gaten tussen de splats op). Omdat de schalingen in de log-ruimte liggen, wordt de vermenigvuldiging daar een additieve verschuiving — dat commuteert met Splat length (L2), omdat een constante offset de afwijking-van-het-gemiddelde ongemoeid laat. Vanaf de Pristine-snapshot, dus idempotent. Nieuw in deze versie.

L4Fade far region (met sub-sliders)

WAAR

Inspector → Look-sectie → GroupBox → schakelaar „Fade far region" plus de sub-sliders „Fade start ×radius" en „Fade floor".

TECHNISCH

Schakelaar die een radiale opacity-afname met de afstand tot het camera-zwaartepunt activeert — de zwak waargenomen "far-confetti" op de achtergrond wordt uitgefaded. Alleen voor orbit-opnames: de schakelaar is uitgegrijsd wanneer de scène daarvoor niet in aanmerking komt (lineaire vluchten, te weinig of gedegenereerde camera's); dan verschijnt in plaats van de sub-sliders de melding „Far-fade applies only to orbit captures (not this scene)." De geschiktheid wordt bepaald via de azimut-dekking van de camera-posities (een orbit omcirkelt het zwaartepunt en vult veel kompas-sectoren, een lineaire vlucht slechts ~2). Twee sub-sliders sturen de geometrie: Fade start ×radius (1.0–3.0) stelt de binnenradius in als veelvoud van de orbit-radius, waarbinnen volledige opacity geldt; Fade floor (0.0–1.0) is de opacity-factor ver voorbij de fade-radius. Belangrijk: de fade slaat het sky-dome-gebied over (de bevroren Gaussians van de koepel), zodat de bewust opgebouwde achtergrond-koepel niet mee gedimd wordt.

L5Reset finishing-knop

WAAR

Inspector → Look-sectie → GroupBox → „Reset finishing" (onderaan, kleine knop).

TECHNISCH

Zet alle Look-instellingen terug naar de defaults (Saturation 1.0, Fade uit, Splat length 1.0, Splat size 1.0) en start onmiddellijk een nieuwe finishing-berekening, zodat de Viewport terugspringt naar de ongewijzigde getrainde toestand. Omdat de hele Look-stack idempotent rekent vanaf de Pristine-snapshot, is "terug naar default" exact de oorspronkelijke trainingsoutput — geen kwaliteitsverlies door herhaaldelijk heen en weer schuiven. Zoals alle regelaars van de sectie vergrendeld tijdens een lopende export.

Presets-sectie (I1–I11)

De Presets-sectie is de snelste manier om een geteste configuratie toe te passen. Ingebouwde presets (Capture Class, Classic, MCMC, Hybrid) leveren beproefde, reproduceerbare startpunten; eigen presets kunnen worden opgeslagen, geëxporteerd, geïmporteerd en gedeeld. De lijst is gegroepeerd naar categorie (Capture Class, Classic, MCMC, Hybrid, Custom) en meer dan één categorie kan tegelijk uitgeklapt zijn. Via het contextmenu-mechanisme (rechtsklik op een rij) zijn Exporteren, Dupliceren en — bij eigen presets — Verwijderen bereikbaar.

I1Save…-knop

WAAR

Inspector → Presets-sectie → Save…-knop (actiebalk onderaan).

TECHNISCH

Opent een popover met tekstveld en Save-/Cancel-knoppen. De huidige stand van de trainingsinstellingen wordt als nieuw aangepast preset gepersisteerd (JSON-gecodeerd, app-breed opgeslagen). Het opslaan kopieert alle 81 trainingsparameters plus de huidige Densification-strategie. Het preset komt automatisch in de categorie Custom terecht, ongeacht van welk ingebouwd preset het is afgeleid. Lege namen en louter whitespace-invoer worden verworpen. Al bestaande namen worden niet geweigerd — elk preset heeft een eigen interne ID, dubbele namen zijn technisch toegestaan, maar in de praktijk verwarrend.

I2Tekstveld Preset Name

WAAR

Save-popover → tekstveld „Preset Name".

TECHNISCH

Eenvoudig tekstveld met afgeronde rand, brede vorm. De waarde wordt bij klik op de Save-knop overgenomen als preset-naam. Geen lengtebeperking in de UI, maar de opgeslagen naam moet JSON-codeerbaar en weergeefbaar zijn in de UI-lijsten — emoji en umlauten werken. De inhoud wordt bij het openen van de popover automatisch teruggezet naar een lege string. De Save-knop blijft uitgeschakeld zolang het veld na trim leeg is. Er is geen auto-suggest en geen voorinvulling met de naam van het momenteel actieve preset.

I3Cancel-knop (Save-dialoog)

WAAR

Save-popover → Cancel-knop (links).

TECHNISCH

Sluit de popover zonder op te slaan. Verwerpt de inhoud van het tekstveld — bij het volgende openen wordt deze weer door de logica van de Save…-knop (I1) op leeg teruggezet. Standaard knopstijl, geen bevestigingsdialogen, geen sneltoetsen. De huidige TrainingConfig blijft ongewijzigd, omdat het opslagpad helemaal niet is uitgevoerd.

I4Save-knop (Save-dialoog)

WAAR

Save-popover → Save-knop (rechts, prominente stijl).

TECHNISCH

Triggert de eigenlijke persistentie. Valideert nogmaals de niet-lege naam (defensieve check) en schrijft dan de huidige TrainingConfig als JSON weg naar de app-opslag. Sluit vervolgens de popover. Blauw gemarkeerd, uitgeschakeld zolang het tekstveld leeg is. Als het opslaan mislukt (bijv. omdat de app-opslag vol is — zeer onwaarschijnlijk), is er momenteel geen zichtbare foutdialoog; het preset zou dan bij de volgende app-start gewoon niet verschijnen.

I5Export…-knop

WAAR

Inspector → Presets-sectie → actiebalk → Export…-knop.

TECHNISCH

Exporteert het momenteel geselecteerde preset als .radiancepreset-bestand (intern JSON). Uitgeschakeld wanneer geen preset is geselecteerd. Bij klik opent de app een opslagdialoog met vooraf ingevulde bestandsnaam (preset-naam + .radiancepreset-extensie). Het opgeslagen formaat bevat de complete TrainingConfig plus metadata (naam, categorie, ID, ingebouwd-vlag). Dubbelklik in Finder opent de app — maar niet automatisch de import; de gebruiker moet de Import-knop (I6) gebruiken.

I6Import…-knop

WAAR

Inspector → Presets-sectie → actiebalk → Import…-knop.

TECHNISCH

Opent een bestandsdialoog die alleen .radiancepreset-bestanden toelaat (meervoudige selectie uitgeschakeld). Bij selectie wordt het JSON-bestand geladen, gevalideerd en in de categorie Custom ingevoegd — met nieuwe interne ID, zodat er geen botsingen met ingebouwde presets ontstaan. Het importeren zet automatisch de categorie op Custom, zelfs als het geëxporteerde preset oorspronkelijk bijv. een ingebouwd preset was. Beschadigde of met een oudere schemaversie incompatibele bestanden worden stilzwijgend geweigerd, zonder foutdialoog (in het console-log staat wel de reden).

I7Preset-rij (klik-activering)

WAAR

Inspector → Presets-sectie → elke preset-rij in elke categorie.

TECHNISCH

Klik op een preset-rij vervangt alle velden van de TrainingConfig door de waarden uit het preset, onthoudt de ID van het actieve preset en zet de gewijzigd-status terug. Het actief-vinkje voor de rij verschijnt alleen als het preset geselecteerd EN ongewijzigd is. Zodra een waarde in de TrainingConfig wordt gewijzigd (slider, stepper, toggle in de andere Inspector-secties), verschijnt een oranje „Modified"-badge achter de naam. Ingebouwde presets kunnen niet worden overschreven — bij wijziging moet via de Save-knop (I1) een eigen kopie worden aangemaakt.

I8Contextmenu „Export…"

WAAR

Rechtsklik op elke preset-rij → eerste item „Export…".

TECHNISCH

Identieke functionaliteit als I5 (Export…-knop), maar comfortabeler bereikbaar — zonder dat het preset eerst geselecteerd hoeft te zijn. Exporteert direct het in de rij aangeklikte preset. Werkt voor alle preset-categorieën hetzelfde (ingebouwd of custom), geen beperking. De export bevat het ingebouwd-vlag en de originele categorie, maar bij herimport wordt de categorie zoals bij I6 beschreven naar Custom gemapt.

I9Contextmenu „Duplicate"

WAAR

Rechtsklik op elke preset-rij → tweede item „Duplicate".

TECHNISCH

Kloont het preset naar de categorie Custom. Maakt een nieuwe interne ID aan, voegt „ Copy" toe aan de naam en slaat de kopie op. Werkt ook voor ingebouwde presets — de kloon is dan bewerkbaar. Het origineel blijft ongewijzigd. De TrainingConfig wordt waarde-voor-waarde gekopieerd (JSON-roundtrip), zodat er geen referentie-bindingen tussen origineel en kopie bestaan.

I10Contextmenu „Delete"

WAAR

Rechtsklik op eigen preset-rijen → laatste item „Delete" (rood, destructief).

TECHNISCH

Alleen zichtbaar voor custom-presets. Ingebouwde presets kunnen niet worden verwijderd. Het item is als destructief gemarkeerd, verschijnt rood in het contextmenu en wordt achter een divider geplaatst, zodat je er niet per ongeluk op klikt. Er is geen bevestigingsdialoog — één klik verwijdert het preset onmiddellijk. Het verwijderde preset is niet herstelbaar (Cmd-Z werkt hier niet — ongedaan maken bestaat in de huidige build alleen voor de beeldlijst, niet voor preset- bewerkingen). Was het verwijderde preset net actief, dan blijft de huidige TrainingConfig ongewijzigd, alleen de actieve preset-selectie wordt genuld.

I11Categorie-header (uitklappen/inklappen)

WAAR

Inspector → Presets-sectie → elke categorie-header (Capture Class, Classic, MCMC, Hybrid, Custom).

TECHNISCH

Uitklap-status per categorie met verschillende standaardwaarde: de gecureerde groep Capture Class start uitgeklapt, Classic, MCMC, Hybrid en Custom starten ingeklapt. De status wordt niet gepersisteerd — bij het opnieuw opstarten van de app staan alle categorieën weer in de standaardtoestand. De chevron-pijl roteert geanimeerd. Het getal rechts in de header toont het aantal presets in deze categorie. Het klik-gebied omvat het hele header-gebied.

Trainingsconfiguratie-sectie (I12–I22)

Crop van de Training-sectie — Densification als drieledige schakelaar Classic | MCMC | Hybrid met Classic actief, daaronder de grijsgetinte regels MCMC Quality (uit), Auto-scale by scene (aan) en Max Gaussians 150,000 met slotje-hint; daaronder afgezet Depth-Priority Scatter (uit), Full-Resolution Training (uit), Max Iterations 5,000 en Densify Until 3,500 met blauw ketting-symbool, schuifregelaars SSIM Weight op 0.20 en Render Scale op 50%
Crop van de Training-sectie — Densification als drieledige schakelaar Classic | MCMC | Hybrid met Classic actief, daaronder de grijsgetinte regels MCMC Quality (uit), Auto-scale by scene (aan) en Max Gaussians 150,000 met slotje-hint; daaronder afgezet Depth-Priority Scatter (uit), Full-Resolution Training (uit), Max Iterations 5,000 en Densify Until 3,500 met blauw ketting-symbool, schuifregelaars SSIM Weight op 0.20 en Render Scale op 50%

Hier bevinden zich de centrale hendels voor de trainingsrun: hoe de Densification werkt, hoeveel iteraties, hoe groot de SSIM-weging — daarbij aan de onderkant de vroeger zelfstandige Enhancements (Perceptual Loss, Outdoor-groep, Advanced Densifier, Post-Training-passes). Helemaal bovenaan staat de Densification als drieledige schakelaar Classic | MCMC | Hybrid. De SfM-backend staat niet meer hier, maar in de eigen sectie Camera's & Opname (I12, I13). De drie MCMC-regels ("MCMC Quality", "Auto-scale by scene" en "Max Gaussians") verdwijnen in de Classic-modus niet meer, maar blijven zichtbaar en worden grijs weergegeven; daaronder staat een regel met slotje-symbool die zegt wat er veranderd moet worden ("Only used by the MCMC and Hybrid densifiers — switch Densification above to change these."). Een afgezet blok daaronder vat de regels samen die voor elke densifier gelden: Depth-Priority Scatter, Full-Resolution Training, het gekoppelde paar Max Iterations / Densify Until en de schuifregelaars SSIM Weight en Render Scale.

I12Camera Alignment-picker

WAAR

Inspector → Camera's & Opname → Camera Alignment (pop-upmenu onder de Projection-picker).

TECHNISCH

Pop-upmenu, geen segmented picker — de labels doen de smalle inspectorkolom uit zijn voegen barsten. Welke items verschijnen, hangt af van de build: de sandboxed App Store-versie biedt Apple Photogrammetry en Native, dev-/dmg-builds bieden bovendien COLMAP. Reden: COLMAP is een extern commandoregelprogramma, en sandboxed apps mogen geen externe binaries starten (App Review-richtlijn 2.5.2) — daarom ontbreekt het backend-item met mapper-picker en binary-pad in de Store-build helemaal, in plaats van permanent grijs te zijn: een regel die nooit kan oplichten, is geen aanwijzing maar ruis. Niet verwarren met: Het importeren en exporteren van een COLMAP-workspace is puur Swift-bestandsparsing, vereist geen COLMAP-installatie en werkt in elke build (hoofdstuk 1, M5). De toevoeging "(Beta)" bij het Native-item is vervallen — Native is sinds v1.5.2 geen beta meer. De keuze bepaalt de SfM-backend van de volgende run en stuurt tegelijk aan welke regels daaronder bedienbaar zijn (I13, High-Quality, Native SfM Recipe). Voetnoot in de UI: Bij een ongesorteerde fotoset richt de pipeline altijd uit met Native, ongeacht wat de picker toont — dit recept bestaat alleen daar. De picker wordt daarbij bewust niet vergrendeld (de waarde is niet onbeschikbaar, hij wordt alleen overstemd); in plaats daarvan verschijnt een hint met vertakkingssymbool.

I13FOV Override-veld (Native SfM)

WAAR

Inspector → Camera's & Opname → FOV Override (altijd zichtbaar, bedienbaar alleen bij Camera Alignment = Native).

TECHNISCH

Numeriek tekstveld (bereik 0-170°), standaard 0 = automatische bepaling uit EXIF of heuristiek. De handmatige invoer is nodig als de invoerafbeeldingen uit een video zijn geëxtraheerd die geen brandpuntsafstand-metadata bevat. Typische waarden: iPhone Wide ≈ 73°, DJI Mavic Wide-Crop ≈ 70°, drone met full-frame sensor ≈ 84°. De waarde wordt geclampt op [0, 170] — waarden daarbuiten worden direct teruggeduwd. Werkt alleen op de native SfM-pipeline (Q4/Q5); Apple Photogrammetry negeert deze waarde volledig. Sinds 2026-07-18: Bij andere backends wordt het veld niet meer verborgen, maar grijs weergegeven — samen met "High-Quality" en "Native SfM Recipe" en een regel met slotje-symbool ("These configure the Native aligner — choose Native under Camera Alignment to change them."). Het vroegere verbergen verhulde dat deze regelaars überhaupt bestaan. De gate hangt af van de gekozen backend, niet van de daadwerkelijk gebruikte — de omleiding van ongesorteerde fotosets naar Native wordt in plaats daarvan gemeld door de hint bij I12. De regel "Native SfM Recipe" vereist bovendien een ongesorteerde fotoset en heeft anders zijn eigen uitlegregel.

I15Densification-picker

WAAR

Inspector → Trainingsconfiguratie → Densification (segmented picker, altijd zichtbaar).

TECHNISCH

Schakelt tussen de twee densificatiestrategieën: Classic (originele 3DGS-methode met clone/split/prune en gradiëntdrempel) en MCMC (Stochastic Gradient Langevin Dynamics met relocation, NeurIPS 2024). Bij het wisselen van Classic naar MCMC zet de app de MCMC-specifieke velden automatisch op beproefde standaardwaarden (reg-weights = 0, MCMC-cap- multiplier 3.0, sample-/noise-schedule). Zonder deze automatische initialisatie leden sessies met oude presets onder de 1.4.4-MCMC-collapse-bug (460K→5 Gaussians, watchdog-kill). De picker- keuze bepaalt bovendien welke inspectorelementen zichtbaar zijn — bij MCMC verschijnen I16/I17. Gedetailleerde veldwerking in hoofdstuk 6, T11–T16 (Classic) en T61–T73 (MCMC).

I16MCMC Quality-schakelaar

WAAR

Inspector → Training → MCMC Quality (altijd zichtbaar, bedienbaar bij Densification = MCMC of Hybrid).

TECHNISCH

Schakelt de gradiënt-accumulatie op 2 stappen (actief) resp. 1 stap (inactief). Accumuleert de gradiënten uit twee opeenvolgende camera-views voordat de optimizer-stap wordt uitgevoerd. Dat vlakt het optimalisatiepad af en verbetert het eindresultaat licht, maar zichtbaar. De prijs: verdubbelde trainingstijd. Bij zeer lange trainingen (200K iteraties) leidt dat tot extra 10+ minuten wachttijd — dus alleen zinvol wanneer de laatste paar procent kwaliteit echt nodig zijn. Werkt alleen in op de training, niet op het exportformaat of de viewport-weergave. Geldt ook voor Hybrid, dat dezelfde MCMC-machinerie gebruikt. Sinds 2026-07-18: Onder Classic verdwijnt de regel niet meer, maar wordt samen met I17 en "Max Gaussians" grijs weergegeven; daaronder staat "Only used by the MCMC and Hybrid densifiers — switch Densification above to change these."

I17Auto-scale by scene-schakelaar

WAAR

Inspector → Training → Auto-scale by scene (altijd zichtbaar, bedienbaar bij Densification = MCMC of Hybrid).

TECHNISCH

Indien actief, schaalt de effectieve Max-Gaussians- bovengrens mee met het SfM-init-point-aantal × MCMC-cap-multiplier (standaard 3.0). Voorbeeld: SfM levert 250K initpunten, basis-cap = 150K, multiplier 3.0 → effectieve bovengrens = max(150K, 750K) = 750K. Indien gedeactiveerd, geldt strikt alleen de basis. De basis zelf staat op de regel Max Gaussians direct daaronder (sinds 1.8, standaard 150 000, invoer geclampt op 10 000–30 000 000). Ligt de effectieve bovengrens boven de basis, dan toont de app die in klare tekst ("Effective cap for this scene: …") — met RAM-waarschuwing als hij te hoog uitvalt. Was voor v1.4.5 geïntroduceerd, omdat grote outdoor-opnames met meer dan 1000 frames en dienovereenkomstig hoge SfM-puntdichtheid met de starre 150K-cap-standaard de densification uithongerden — overbodige punten bleven, nieuwe mochten niet ontstaan. Standaard OFF in custom presets, ON in MCMC-built-ins. Werkt alleen tijdens de trainingstijd, niet bij export. Sinds 2026-07-18: Onder Classic wordt de regel grijs weergegeven in plaats van verborgen (met dezelfde uitlegregel als I16); klare-tekst-weergave en RAM-waarschuwing verschijnen daar bewust niet, omdat Classic helemaal geen bovengrens toepast.

I18Max Iterations-stepper

WAAR

Inspector → Trainingsconfiguratie → GroupBox → Max Iterations.

TECHNISCH

Stepper met bereik 1 000–100 000, stapgrootte 1 000. Bepaalt het totale aantal optimizer-iteraties. Lineair gecorreleerd met de trainingstijd (halvering = ca. 50% tijd). Beproefde waarden zijn 20K (Classic Balanced), 40K (Classic Quality) en 200K (MCMC Full). Boven 40K brengt Classic nauwelijks nog verbetering — de opbrengst vlakt af. Bij wijzigen wordt, mits de link-functie (I19) actief is, Densify Until proportioneel meegetrokken (standaardverhouding: 0.5, d.w.z. Densify-Until = Max/2).

I19Link/Unlink-knop (Densify ↔ Iterations)

WAAR

Inspector → Trainingsconfiguratie → GroupBox → kleine link-knop tussen Max Iterations en Densify Until.

TECHNISCH

Toggle-knop die de verhouding van Densify Until tot Max Iterations bevriest. Indien actief (link-icoon gemarkeerd) wordt bij elke wijziging van Max Iterations de Densify Until proportioneel meegetrokken. Bij unlink (link-plus-icoon) blijven de waarden onafhankelijk. Standaard is linked, omdat dat de typische correlatie weergeeft — wanneer je de training naar dubbele iteraties trekt, wil je meestal ook de densification proportioneel langer laten lopen. De verhouding wordt bij het instellen van de link-knop berekend uit de huidige waarde; een typische verhouding is 0.5 (Densify-Until = halve iteratie-aantal).

I20Densify Until-stepper

WAAR

Inspector → Trainingsconfiguratie → GroupBox → Densify Until.

TECHNISCH

Stepper met bereik 500–50 000, stapgrootte 500. Bepaalt de iteratie-index vanaf welke geen nieuwe Gaussians meer via clone/split (Classic) of relocation (MCMC) worden toegevoegd. Na het bereiken worden alleen nog positie en kleur verfijnd. Hogere waarden = meer Gaussians = groter bestand, langere tijd per iteratie (+30-60% GPU-tijd per stap). Typische waarden: 15K (voor 30K max-iter), 20K (voor 40K), 100K (voor 200K MCMC). Bij actieve link (I19) automatisch meegeschaald. Werkt anders bij Classic vs MCMC: Classic stopt de groei volledig, MCMC stopt de relocation-logica, maar sample-/noise-adaptatie loopt door.

I21SSIM Weight-schuifregelaar

WAAR

Inspector → Trainingsconfiguratie → GroupBox → SSIM Weight.

TECHNISCH

Schuifregelaar 0.0–1.0 in stappen van 0.05, weergave als "0.20". Mengt L1-loss (0.0) en SSIM-loss (1.0). L1 straft de helderheid per pixel, SSIM de structurele gelijkenis (randen, lokale statistieken). Standaard 0.2 is de waarde uit het originele 3DGS-paper (Kerbl 2023) en een robuust compromis voor bijna elke scène. Hogere waarden (0.5+) geven de voorkeur aan detailbehoud, maar kunnen lokale helderheidsfouten negeren. Lagere waarden (< 0.1) leiden tot detailverlies aan scherpe randen. De SSIM- berekening loopt in de shader met een 11×11-Gaussisch venster. Prestatie: bij 0.0 (alleen L1) is de training ca. 8-12% sneller, omdat de SSIM-berekening in de shader wordt overgeslagen.

I22Render Scale-schuifregelaar

WAAR

Inspector → Trainingsconfiguratie → GroupBox → Render Scale.

TECHNISCH

Schuifregelaar 0.25–1.0 in stappen van 0.25, weergave als "100%". Schaalt de trainings-render-resolutie relatief ten opzichte van de brongrootte. Grootste hendel voor de prestatie: 50% vermindert GPU-tijd met ca. 75% (omdat er 4× minder pixels zijn), 25% met ca. 94%. De gradiëntdrempel wordt automatisch meegeschaald. Onder de schuifregelaar verschijnt een live resolutieweergave in MP (bijv. "2304×1296 (3.0 MP)"). Wijkt de huidige waarde af van de aanbevolen waarde, dan wordt in oranje tekst "— recommended: 50%" getoond. De aanbeveling richt zich op ~3 MP effectieve resolutie — het bereik dat Apple Silicon-GPU's het efficiëntst verwerken. 4K-bronafbeeldingen krijgen bijvoorbeeld automatisch 25% aanbevolen, Full HD-afbeeldingen 100%. Een wijziging triggert bovendien de buffer-heralloatie.

Enhancements-groepen (in de Training-sectie, I26–I29, I42–I44)

Crop van de Enhancements-rijen, tegenwoordig aan het einde van de Training-sectie — bovenaan de regelaar Perceptual Loss helemaal links op „Off”, daaronder de groep Outdoor met de vier uitgeschakelde schakelaars Sky Masking, Person Masking, Floater Cleanup en Reconstruct Sky Dome, dan de ingeklapte rij „Advanced Densifier (Expert)” met waarschuwingsdriehoek, tot slot de groep „Runs automatically at the end of training” met Post-Training Compactification (aan) en Remove Needle/Disc Floaters. Elke rij heeft een eigen toelichtingsregel
Crop van de Enhancements-rijen, tegenwoordig aan het einde van de Training-sectie — bovenaan de regelaar Perceptual Loss helemaal links op „Off", daaronder de groep Outdoor met de vier uitgeschakelde schakelaars Sky Masking, Person Masking, Floater Cleanup en Reconstruct Sky Dome, dan de ingeklapte rij „Advanced Densifier (Expert)" met waarschuwingsdriehoek, tot slot de groep „Runs automatically at the end of training" met Post-Training Compactification (aan) en Remove Needle/Disc Floaters. Elke rij heeft een eigen toelichtingsregel

Deze groepen verzamelen functies die de beeldkwaliteit verbeteren zonder de kern-training-loop zelf te veranderen. Tot 2026-07-18 vormden ze een eigen Inspector-sectie genaamd Enhancements; sinds de domein-hergroepering zitten ze onderaan de sectie Training. De vroegere Viewport-Scaling-picker (Off/MetalFX/Lanczos) is zonder vervanging vervallen: hij heeft nooit iets gedaan — de blit-beslissing in de viewport is puur geometrisch — en het label beloofde bovendien een opschaling, terwijl de daadwerkelijke Lanczos-pass een antialiasing-terugschaling van een oversampled beeld is. De weergave in de viewport heet dan ook nu „Sampling" in plaats van „Scaling" (hoofdstuk 4); nergens in de app wordt met MetalFX opgeschaald. De Perceptual Loss (I29) is ondanks het bij deze groep horen een trainingsonderdeel — hij wordt tijdens het trainen geactiveerd als extra loss-term; hij staat helemaal bovenaan, met de toelichtingsregel „Multi-scale blur feature matching for structural similarity". Daaronder volgt de groep Outdoor met vier schakelaars — Sky Masking, Person Masking, Floater Cleanup en Reconstruct Sky Dome (I42–I44) —, trainingsopties tegen hemel-floaters, die vroeger in het instellingenvenster stonden en nu per project hier staan. Daarna volgt de ingeklapte rij „Advanced Densifier (Expert)", die een waarschuwingsdriehoek draagt, omdat daarachter regelaars schuilen die een training ook kunnen laten mislukken. De afsluiting vormt de groep „Runs automatically at the end of training" met de Post-Training Compactification (I26) en de schakelaar „Remove Needle/Disc Floaters".

I26Post-Training Compactification-schakelaar

WAAR

Inspector → Training → groep „Runs automatically at the end of training" → Post-Training Compactification.

TECHNISCH

Activeert een opruimronde aan het einde: na afloop van de trainingsiteraties worden Gaussians met een opacity onder 0.01 (1% zichtbaarheid) verwijderd. Dit verkleint de bestandsgrootte doorgaans ongeveer tot de helft, zonder dat er zichtbaar kwaliteitsverlies optreedt — omdat deze Gaussians visueel toch al niets bijdragen. De compactification draait als GPU-compact-pass en duurt afhankelijk van het Gaussian-aantal een fractie van een seconde tot enkele seconden. Beïnvloedt de trainingsprestaties niet. Als deze schakelaar uit staat, worden ook onzichtbare Gaussians geëxporteerd — alleen relevant als je het formaat voor een volgende training-stage wilt gebruiken (Continue Training), anders verspilling van geheugen.

I29Perceptual Loss-schuifregelaar

WAAR

Inspector → Training → Perceptual Loss.

TECHNISCH

Schuifregelaar 0.0–0.2 in stappen van 0.01, weergave bij 0.0 als „Off", anders als „0.05" enz. Activeert een extra loss-term die multi-schaal Gaussian-blur van de rendering met de ground-truth-afbeelding vergelijkt (3 blur-schalen). Vangt structurele verschillen op die L1+SSIM alleen niet detecteren. Waarden tussen 0.05 en 0.1 verbeteren fijne structuren zichtbaar en kosten daarbij maar weinig trainingstijd — ongeveer 5% (extra forward-pass door de blur-kernels). Boven 0.15 wordt de training instabiel en daalt de kwaliteit weer, omdat deze loss-term de optimalisatie domineert. Werkt tijdens de training, niet in de post-processing — ondanks de positie bij de enhancement-rijen aan het einde van de Training-sectie is dit dus geen zuivere achteraf-verbetering.

I42Sky Masking

WAAR

Inspector → Training (Outdoor-groep) → schakelaar „Sky Masking". Wordt per project opgeslagen; standaard: uit.

TECHNISCH

Activeert pre-training Apple-Vision-gebaseerde sky-pixel-segmentatie. Vóór de start van de training wordt voor elke invoercamera de sky-regio via de Apple-Vision-foreground-mask geëxtraheerd (sky = background) en toegewezen als per-pixel-masker aan de betreffende camera. Tijdens het trainen wordt de loss-bijdrage per pixel met het complement van het sky-masker vermenigvuldigd — sky-pixels dragen 0 bij aan de gradiënt, zodat Gaussians die op de hemel projecteren geen optimalisatiesignalen ontvangen en daardoor niet „dichter" of „helderder" worden. Vermindert floaters (donkere klompjes in de lucht) bij outdoor-/dronescènes aanzienlijk. Kost ~3% L1-regressie bij klassieke 40K-training. Alleen zinvol bij outdoor-scènes met een duidelijk herkenbare lucht; bij binnenscènes of een witte achtergrond identificeert de sky-segmentatie verkeerde gebieden en blokkeert het geldige loss-signalen. De waarde wordt per project opgeslagen (niet meer app-breed) en volgt de preset resp. het scènebestand.

I43Floater Cleanup

WAAR

Inspector → Training (Outdoor-groep) → schakelaar „Floater Cleanup" (ondertitel „Remove Gaussians outside all camera views"). Wordt per project opgeslagen; standaard: uit.

TECHNISCH

De schakelaar bestuurt twee effecten met verschillende voorwaarden; beide worden bij de start naar de run-lokale config afgeleid, niet weggeschreven naar de opgeslagen configuratie (anders zouden ze als eenmalige vergrendeling blijven hangen). (1) Frustum-union-cull aan het einde van de training — Gaussians buiten de vereniging van alle camera-frusta worden verwijderd („nooit waargenomen" = „nooit beperkt", en dat zijn precies de meeste floaters). Dit onderdeel heeft geen strategie-voorwaarde en draait bij Classic, MCMC en Hybrid gelijkwaardig — daarnaar is de schakelaar genoemd. (2) Twee extra density-control-passes middenin de run — alleen bij Classic en pas vanaf 30.000 iteraties, gezet op 55% en 85% van de runlengte (bij 35–40K dus rond 20K en 30K). Beide passes zoeken naar Gaussians met zeer lage opacity, minieme screen-space-grootte en zonder loss-bijdrage en purgen deze. Effect: ~5–15% minder Gaussians aan het einde, zichtbaar minder donkere klompjes in de lucht bij drone-/outdoor-scènes. Kost ~1–3% L1-regressie bij close-up-binnenscènes, daarom niet standaard geactiveerd. De waarde wordt per project opgeslagen en volgt de preset resp. het scènebestand. Correctie ten opzichte van eerdere edities: de schakelaar is niet meer beperkt tot de Classic-densifier en wordt onder MCMC/Hybrid ook niet meer uitgegrijsd — dat had juist MCMC- en Hybrid-gebruikers buitengesloten van de cull die bij hen werkt. Bij korte runs (bijv. P2 Preview 5K) vervalt alleen het middenin-de-run-deel.

I44Reconstruct Sky Dome

WAAR

Inspector → Training (Outdoor-groep) → schakelaar „Reconstruct Sky Dome". Wordt per project opgeslagen; standaard: uit.

TECHNISCH

Activeert de sky-dome-projectie vóór de training. Na SfM en vóór de start van de training wordt voor elke invoercamera het in S7 gedeelde Apple-Vision-sky-masker uit de afbeelding geëxtraheerd, de sky-pixels worden met de camera-intrinsics teruggeprojecteerd op een virtueel bolvormig oppervlak (standaardradius 8× scèneradius). Op deze bol worden ~5000 nieuwe Gaussians geïnitialiseerd met kleurgemiddelden uit de geprojecteerde sky-pixels, zeer grote schaal (1.0 in scène-eenheden) en initiële opacity 0.95. Deze 5000 Gaussians zijn geen sky-mask in klassieke zin — ze worden getraind zoals alle andere, maar blijven door de hoge initiële opacity in een dunne schil. Resultaat: bij 360°-novel-views in outdoor-/dronescènes verschijnt in plaats van donkere confetti-klompjes echte hemelkleur en wolkenstructuren. De waarde wordt over herstarts heen onthouden. Alleen zinvol bij outdoor-scènes met minstens 360°-cameradekking; bij pure object-captures zonder zicht op de lucht heeft het geen effect. Status: experimenteel, bredere A/B-validatie over meer outdoor-sets staat nog uit.

Metrieken-sectie (I30–I37)

Crop van de groep „Training Metrics” na afgerond trainen — acht regels: Iteration 20000 / 20000, Loss 0.007471, Learning Rate 0.00e+00, SH Degree 3, Gaussians 9,660, GPU Memory 5.7 MB, Speed 223.7 it/s, Elapsed 1:29
Crop van de groep „Training Metrics" na afgerond trainen — acht regels: Iteration 20000 / 20000, Loss 0.007471, Learning Rate 0.00e+00, SH Degree 3, Gaussians 9,660, GPU Memory 5.7 MB, Speed 223.7 it/s, Elapsed 1:29

Terwijl een training loopt, toont de metrieken-groep („Training Metrics", een van de twee inklapbare groepen in de sectie Voortgang) acht live-waarden uit de trainings-loop. Voordat een training start, is ze leeg („Start training to see live metrics"). Alle waarden worden elke ~30 iteraties bijgewerkt (update-frequentie van de live-metrieken). De sectie is alleen-lezen — geen enkel element is aanklikbaar of aanpasbaar. Voor diepere analyse zijn de JSONL-trainingslogs onder ~/Documents/RadianceKit/Logs/ te raadplegen.

I30Iteration

WAAR

Inspector → Voortgang → Training Metrics → Iteration. Alleen-lezen.

TECHNISCH

Weergave in het formaat „4523 / 40000" — huidige iteratie ten opzichte van totaal geplande iteraties. Telt synchroon met de trainings-loop, die de waarden elke ~30 iter pusht. Het tweede getal komt overeen met de max-iterations-waarde op het startmoment; het verandert niet meer, ook niet als de gebruiker de stepper daarna aanpast — de lopende run gebruikt zijn eigen snapshot-kopie. Als de app via het Training-menu iteraties toevoegt (Continue Training +5K/+10K/+20K), stijgt de noemer.

I31Loss

WAAR

Inspector → Voortgang → Training Metrics → Loss. Alleen-lezen.

TECHNISCH

Float-waarde met zes decimalen (bijv. „0.024385"). Meet de gecombineerde L1+SSIM-loss (mix bestuurd via I21 SSIM Weight) plus optioneel Perceptual Loss (I29) en andere regularizers. Schaal is niet absoluut, maar scène-afhankelijk — vereist voor de meeste vergelijkingen dezelfde dataset. Typische eindwaarden bij goede configuraties: - Classic Quality 40K iters: 0.022–0.025 (Horse, Truck, Garden) - MCMC Full 200K iters: 0.024–0.028 - Outdoor drone 30K: 0.030–0.060 (geometrie-gerelateerd slechter) - Indoor Apartments: 0.018–0.025

Waarden boven 0.10 na 5K iteraties duiden op SfM-problemen (slechte camera-posities) — afbreken en SfM opnieuw berekenen.

I32Learning Rate

WAAR

Inspector → Voortgang → Training Metrics → Learning Rate. Alleen-lezen.

TECHNISCH

Weergave in wetenschappelijke notatie (bijv. „1.60e-04"). Huidige leersnelheid voor de positie-parameters (3DGS heeft zes onafhankelijke LR's voor positie, SH-DC, SH-Rest, opacity, schaal, rotatie — hier wordt de positie-LR getoond als representatieve waarde). Standaard-beginwaarde 1.6e-4, die via een exponentiële decay tot ~1.6e-6 aan het einde van de training daalt. Het verval is aanpasbaar via het LR-schedule-veld in de trainingsconfiguratie (T-veld in hfst. 6). Als de LR ongewoon hoog blijft (bijv. 1e-3 of meer na 10K iteraties), kan dat wijzen op een verkeerd geladen configuratie.

I33SH Degree

WAAR

Inspector → Voortgang → Training Metrics → SH Degree. Alleen-lezen.

TECHNISCH

Geheel getal 0-3. Spherical-harmonics-graad voor de kleurrepresentatie. Begint bij 0 (alleen de DC-component, dus een richtingsonafhankelijke kleur per Gaussian — dus slechts een RGB-constante) en stijgt in de loop van de training geleidelijk naar 3. Het standaard-schema verhoogt de graad bij 1000/2000/3000 iteraties telkens met 1. SH-3 komt overeen met 48 kleurcoëfficiënten per Gaussian (3 RGB-kanalen × 16 SH-basisfuncties). Hogere SH-graad = meer richtingsafhankelijke reflectie (glanzende oppervlakken zien er onder verschillende kijkhoeken correct anders uit), maar ook meer geheugen en tragere training.

I34Gaussians

WAAR

Inspector → Voortgang → Training Metrics → Gaussians. Alleen-lezen.

TECHNISCH

Huidig aantal Gaussians in het model, geformatteerd met locale-scheidingsteken (bijv. „524.318"). Groei: - Classic: start bij de SfM-init-punten (typisch 50K-300K), groeit door Clone/Split tot kort voor Densify Until, daarna statisch tot het einde van de training (behalve pruning) - MCMC: sample-punten worden toegevoegd tot de MCMC-cap, daarna alleen nog relocation

Gezonde eindwaarden: - Classic Quality: 400K-700K (Horse 524K, Garden 800K) - MCMC Full: exact op de cap (standaard 150K, met Auto-Scale Multiplier × SfM-count afhankelijk van de scène 500K-1.5M)

Bij MCMC valt het getal tot < 60% van de cap → anomalie (collapse-indicator, wijst op te agressieve regularizers).

I35GPU Memory

WAAR

Inspector → Voortgang → Training Metrics → GPU Memory. Alleen-lezen.

TECHNISCH

Schatting van het geheugenverbruik van de Gaussian-buffer als Gaussian-count × 616 bytes (geformatteerd in memory-stijl). 616 bytes is de grootte van een volledig uitgeruste Gaussian (positie, schaling, rotatie, opacity, SH-coëfficiënten graad 3, gradient-accumulator). De weergave omvat niet de renderer-overhead (tile-buffer, sort-buffer, backward-buffer) — het werkelijke GPU-geheugengebruik ligt typisch 2-3× boven deze waarde. Bij 500K Gaussians: weergegeven ~290 MB, werkelijk ~700 MB. Bij 1.5M Gaussians: weergegeven ~880 MB, werkelijk ~2.5 GB. Op een M3 Max met 64+ GB unified memory onkritiek, op een M3 Pro met 18 GB al een limiet.

I36Speed

WAAR

Inspector → Voortgang → Training Metrics → Speed. Alleen-lezen.

TECHNISCH

Iteraties per seconde met één decimaal („24.3 it/s"). Berekend door de trainer als voortschrijdend gemiddelde over de laatste ~100 iteraties. Typische waarden: - Quick preset (1K iters): 80-120 it/s (kort, geen steady-state) - Classic 20K @ 1.0 Render Scale (Truck-scène, M3 Max): 25-35 it/s - Classic 20K @ 0.5 Render Scale: 80-120 it/s - MCMC 200K @ 0.5 Render Scale: 25-50 it/s (trager wegens relocation) - Bij 1M+ Gaussians en volledige resolutie: < 10 it/s

Dalende snelheid in de loop van de training is normaal — meer Gaussians = meer compute per iteratie. Plotselinge dalen (bijv. van 30 → 5 it/s) wijzen op GPU-thermal-throttling of concurrerende apps.

I37Elapsed

WAAR

Inspector → Voortgang → Training Metrics → Elapsed. Alleen-lezen.

TECHNISCH

Reeds verstreken tijd als „4:23" (m:ss) of „1:23:45" (u:mm:ss). Formaatwissel vanaf 1 uur. Meet alleen de zuivere trainingstijd, niet de voorafgaande fasen (SfM-berekening, beeldimport). Bij pauzeren/hervatten blijft de klok doorlopen — is dus wall-clock, geen CPU-tijd.

Sectie Verlies-diagram (I39–I41)

Crop der Gruppe „Loss History” nach abgeschlossenem Training — Current: 0.0075, rechts grün Min: 0.0051, blaue Kurve von etwa 0.14 steil herunter und danach ausgefranst absinkend bis 20K, Achse links 0.14 / 0.071 / 0.0051; darunter das orangefarbene Diagramm „Gaussian Count” mit Achse von 16K bis 9K und Endwert 9,660
Crop van de groep „Loss History" na afgerond training — Current: 0.0075, rechts groen Min: 0.0051, blauwe curve van ongeveer 0.14 steil naar beneden en daarna rafelig dalend tot 20K, as links 0.14 / 0.071 / 0.0051; daaronder de oranje grafiek „Gaussian Count" met as van 16K tot 9K en eindwaarde 9.660

De groep Verlies-diagram („Loss History", de tweede uitklapbare groep in de sectie Voortgang) visualiseert het trainingsverloop over de tijd. Ze bestaat uit twee diagrammen: een Loss-Curve-diagram (groot, boven, blauw) en een Gaussian-Count-diagram (kleiner, onder, oranje). Beide worden live tijdens het trainen opgebouwd en blijven behouden tot de volgende trainingsstart. Vóór de eerste training is het gebied leeg („Loss curve will appear during training"). De diagrammen zijn pure SwiftUI-Path-tekeningen (geen Swift-Charts-framework), zodat ze ook bij 100K+ punten vloeiend renderen.

I39Current Loss (weergave)

WAAR

Inspector → Voortgang → Loss History → linker labelgebied „Current: 0.0075". Alleen-lezen.

TECHNISCH

Float-waarde van het laatste Loss-Sample-punt, opgemaakt met vier decimalen. Identiek aan I31 (Loss in de Metrics-sectie), alleen hier compacter geformatteerd. De bron is de Loss- History — een lijst die per ~30 iteraties een item krijgt. Alleen eindige waarden worden in de lijst opgenomen — NaN/Infinity (zeer zelden, in het geval van een gradient-explosie-bug) worden weggefilterd.

I40Min Loss (weergave)

WAAR

Inspector → Voortgang → Loss History → rechter labelgebied „Min: 0.0051" (groen). Alleen-lezen.

TECHNISCH

Minimum van alle ooit geziene Loss-waarden van de huidige trainingsrun. Wordt live herberekend uit de Loss-History — geen aparte persistentie. Wordt in groene tekst weergegeven, omdat „Min" = „beste tot nu toe". De gestreepte groene lijn aan de onderkant van het diagram markeert deze Y-positie visueel. Bij Continue- Training-sessies begint de minimum-tracking opnieuw — de oude history wordt in de UI door de nieuwe vervangen (niet aangevuld). Als de huidige training slechter loopt dan de vorige, kan de Min- weergave dus groter zijn dan het vorige eindresultaat.

I41Gaussian Count-diagram

WAAR

Inspector → Voortgang → Loss History → tweede diagram eronder (oranje). Alleen-lezen.

TECHNISCH

Lijndiagram van het aantal Gaussians over de trainingsiteraties. Bron: de Gaussian-Count-History (lijst van (Iter, Count)-paren, gevuld door de trainer elke ~30 iter). Y-schaal dynamisch tussen minimum en maximum van de history. Bij de Classic- strategie ziet de curve er doorgaans zo uit: gestaag stijgend tot Densify Until, dan vlak (met kleine pruning-schommelingen). Bij MCMC: steile stijging tot de cap, dan een horizontale lijn (Relocation houdt het aantal constant). Een daling helemaal aan het einde is normaal — in de afbeelding hierboven daalt de curve van rond de 16K naar 9.660, omdat de opruimpassages na de laatste iteratie ingrijpen (I26). Alarmerend is alleen een inzakking midden in de run: dan pruunt de Densification te agressief — een teken van verkeerde standaardwaarden of een bekende MCMC-Collapse-bug (v1.4.4-hotfix-onderwerp).

Hoe lees je de Loss-curve?

Het Loss-diagram is het belangrijkste diagnosemiddel in de Inspector — geen enkele andere indicator toont zo direct of de training zinvol vordert of vastzit. De typische gezonde vorm is een snelle daling in de eerste 1000-3000 iteraties (van ~0.15 naar ~0.05), gevolgd door een langzame, gelijkmatige daling tot het einde van de training (naar 0.020-0.030). Logaritmisch bekeken lijkt de curve daarbij op een gladde diagonaal.

Wat betekent een plateau in de Loss? Als de curve over meerdere duizenden iteraties vlak blijft, zijn er twee mogelijke interpretaties: (a) Training is „geconvergeerd" — de Loss kan niet meer significant dalen, omdat het model zo goed is als het met de gegeven data en instellingen kan zijn. Dat is gewenst; dat betekent „klaar". (b) Training „hangt" — de Loss zou eigenlijk nog kunnen dalen, maar de optimalisatie stagneert (lokaal minimum, leersnelheid te klein, Densification uit). Onderscheid maken: als de Loss-waarde in een typisch goed bereik ligt (0.020-0.030 bij Indoor/Object, 0.040-0.060 bij Outdoor) en de curve al 5K iteraties vlak is, is ze geconvergeerd. Als de waarde duidelijk hoger is dan bij vergelijkbare scènes (bijv. 0.08), hangt het vast.

Let op: Gaussian-plateau ≠ Loss-plateau. Een plateau in het aantal Gaussians betekent niet „training is klaar". Het betekent alleen dat de Densification is gestopt met het toevoegen van nieuwe punten — ofwel omdat is bereikt (Classic) of omdat de MCMC-cap vol is. De training gaat daarna gewoon door en verfijnt alleen nog de bestaande punten. Het eigenlijke „klaar"-signaal lees je af aan de Loss-curve en de iteratieweergave (I30), niet hier.

Vuistregel voor afbreken: Als de Loss-curve na 5000+ iteraties boven 0.08 ligt en nauwelijks nog daalt, is de kans groot dat de SfM-reconstructie scheef zit. Training afbreken, in hoofdstuk 9 nakijken of de gekozen SfM-backend bij de scène past, indien nodig overschakelen op COLMAP/Native, dan opnieuw starten. Beter 10 minuten investeren in betere SfM dan 2 uur training met een slechte camera-uitlijning.

Wanneer naar de Inspector grijpen?

Snelle referentie: welke sectie + welke bedieningselementen voor welk typisch gebruiksscenario?

Common-TaskSectieControl-ID's
Kleuren van de uiteindelijke splat ontzadigenLookL1 (Saturation)
Naald-/confetti-splats afrondenLookL2 (Splat length)
Gatenwolk vullen / splats vergrotenLookL3 (Splat size)
Verre „Far-confetti" bij orbits verbergenLookL4 (Fade far region)
Look-aanpassingen ongedaan makenLookL5 (Reset finishing)
Voorgeconfigureerde setup ladenVoorinstellingenI7 (rij aanklikken)
Eigen setup opslaanVoorinstellingenI1 → I2 → I4
Setup met collega's delenVoorinstellingenI5 (Export) resp. I6 (Import)
SfM-backend wisselen (bijv. omdat Apple PG te instabiel is)Camera's & opnameI12 (zie hfst. 9)
Videoframes zonder EXIF-brandpuntsafstand verwerkenCamera's & opnameI13 (FOV Override)
COLMAP-prestaties: GLOMAP in plaats van klassiekCamera's & opnameI14 — alleen in ontwikkelaarsbuilds, in de App Store-build ontbreekt COLMAP als backend
Overschakelen van Classic naar MCMCTrainingsconfiguratieI15
Training langer laten lopenTrainingsconfiguratieI18 (Max Iter) + I20 (Densify Until) — gekoppeld via I19
GPU-tijd halverenTrainingsconfiguratieI22 (Render Scale op 50%)
Trainingskwaliteit +6% (MCMC)TrainingsconfiguratieI16 (MCMC Quality)
Outdoorscène met veel SfM-puntenTrainingsconfiguratieI17 (Auto-scale by scene)
COLMAP-pad instellen / wijzigenCamera's & opnameI23 / I24 / I25 — alleen in ontwikkelaarsbuilds
Exportbestanden kleiner makenTrainingI26 (altijd aan laten staan)
Laatste beetje detail bij fijne structurenTrainingI29 (Perceptual Loss 0.05-0.1)
Training bewakenVoortgang ▸ Training MetricsI30 (Voortgang), I36 (Tempo) — de resterende tijd staat in de transportbalk onder de Viewport
Kwaliteit vroeg inschattenVoortgang ▸ Training MetricsI31 (Loss < 0.05 na 5K = goed)
Vermoeden van SfM-probleemVoortgang (beide groepen)I31 + I39 (Loss > 0.08 na 5K → SfM opnieuw)
Convergence vs Stuck onderscheidenVoortgang ▸ Loss HistoryI39 + I40 (Loss-plateau aflezen)
Densification-probleem herkennenVoortgang ▸ Loss HistoryI41 (Gaussian-curve daalt → bug)