Rozdział 2 — Inspector (widok ekspercki)

Pusty Inspector przed importem: Lewa kolumna pokazuje pozycje Images, Cameras i Log, poniżej nagłówek „Images (0)" oraz pole upuszczania „Drop images here / or tap + to import". Viewport pośrodku jest pusty. Po prawej znajduje się Inspector z sześcioma zwiniętymi sekcjami: Presets, Cameras & Capture, Training, Progress, Look i Export. Pod każdym nagłówkiem szary wiersz opisuje, co robi dana sekcja i kiedy działa — „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) oraz „Leveling the floor turns the view at once; the chosen orientation and format apply when saving" (Export). Na samym dole biegnie pasek statusu ze statusem „Idle" oraz zielonym przyciskiem startu i czerwonym przyciskiem stopu; w prawym górnym rogu znajduje się przełącznik Simple/Expert, tutaj ustawiony na Expert.

Inspector po imporcie: Nagłówek listy obrazów pokazuje „Images (35)", poniżej widnieją zaimportowane zdjęcia z rosnącymi nazwami plików począwszy od IMG_0953.JPG. Zdjęcia w tej serii testowej mają rozdzielczość 4032×3024 pikseli; logika Auto Render Scale odczytuje tę rozdzielczość i proponuje dopasowaną do niej wartość Render Scale. Viewport jest wciąż pusty, pasek statusu pokazuje „Idle". Zielony przycisk startu w lewym dolnym rogu jest teraz aktywny i uruchamia trening z aktywnym Presetem.

Inspector podczas treningu: Pasek tytułu pokazuje globalny postęp, tutaj „RadianceKit — Training 23%". Viewport renderuje trwającą rekonstrukcję w czasie rzeczywistym — pluszową kaczkę na owczej skórze, już wyraźnie rozpoznawalną (interwał odświeżania podglądu na żywo znajduje się w Settings → General → Training → Live Preview). Pod Viewportem widoczne są postęp („4,700/20,000", „ETA 1m9s") oraz pasek metryk z Loss 0.0109, LR 2.0e-04, SH 1 i Gaussians 16.0K; w lewym dolnym rogu znajdują się przyciski pauzy i stopu. W Inspector rozwinięta jest grupa CLASSIC, „Balanced 20K iters" nosi zielony znacznik. Odznaka „Modified" pojawia się dopiero, gdy jakiś parametr odbiega od Presetu — tutaj żadnej nie widać. Panel boczny „Log" zbiera zdarzenia etapów SfM i treningu.

Inspector po treningu: Pasek tytułu podaje wynik: „Training Complete — 8,708 Gaussians". W lewej kolumnie widnieje „Complete" z tą samą liczbą, a także Images 25 i Cameras 35 — 25 obrazów dlatego, że dialog Frame Quality odrzucił dziesięć z 35 poruszonych zdjęć. Pasek statusu zgłasza „Completed" przy 20,000/20,000, pasek metryk Loss 0.0075, LR 0.0e+00, SH 3 i Gaussians 9.7K. Viewport pokazuje gotową chmurę punktów wypełniającą kadr — aktywna jest orbitalna nawigacja przeciągnięciem (obrót wokół środka sceny).
To, że widoczne są tu dwie różne liczby Gaussianów, jest zamierzone: pasek metryk i Training Metrics podają stan na koniec treningu (tutaj 9,660, po zaokrągleniu 9.7K), pasek tytułu i scena — stan po automatycznych przebiegach porządkujących (8,708). Pomiędzy nimi leżą Post-Training Compactification i usuwanie splatów w kształcie igieł i tarczek. Mniejsza liczba to ta, która widnieje w Viewport i która zostaje zachowana przy eksporcie. Grupy Training Metrics i Loss History są teraz wypełnione wartościami końcowymi, sekcja Export jest aktywna.
Inspector to prawy pasek boczny w trybie Expert (⌘2). Zbiera on wszystkie parametry istotne dla treningu w sześciu zwijalnych sekcjach, które od 2026-07-18 są pogrupowane według domeny. Domyślna kolejność od góry do dołu to: Presets, Cameras & Capture, Training, Progress, Look i Export. Pod każdym nagłówkiem znajduje się druga linia, która podaje fazę — kiedy sekcja działa i jak odwracalna jest zmiana (np. „Before training · decides how camera positions are solved · applies to the next run" przy Cameras & Capture, „After training · applies immediately · reversible any time" przy Look, „Display only" przy Progress). Dwie wcześniejsze sekcje zostały scalone: Metryki i Wykres strat są teraz dwiema osobno zwijalnymi grupami („Training Metrics" i „Loss History") wewnątrz Progress, a dawna sekcja Enhancements tkwi całkowicie w Training. Sekcja „Look" (korekty obrazu po treningu) to rzeczywista zmiana nazwy w UI dawnej sekcji „Finishing" — jej wewnętrzna nazwa z powodów kompatybilności nadal brzmi „Finishing", natomiast wyświetlany nagłówek to „Look" (ten sam wzorzec dotyczy Training, które wewnętrznie nazywa się „Training Configuration"). Każdą sekcję można zwinąć kliknięciem w nagłówek, a kolejność zmienić metodą przeciągnij-i-upuść. Przy pierwszym uruchomieniu sekcje są zwinięte — na powyższym obrazie wszystkie sześć jest zamkniętych; stan aplikacji zapisuje potem preferencje rozwinięcia i kolejności między uruchomieniami. Wcześniej zapisany stary układ zostaje przy pierwszym uruchomieniu jednorazowo przeniesiony do nowego grupowania; Viewport ▸ Reset Inspector Layout przywraca stan fabryczny.
Szereg elementów sterujących z Inspectora pojawia się w niemal identycznej formie także w Ustawieniach (rozdział 3) — typowo backend SfM, Sky-Masking i podobne wartości domyślne. Rozdzielenie to celowe: Ustawienia dostarczają globalnego dla aplikacji szablonu dla nowo tworzonych projektów, a Inspector nadpisuje te wartości dla aktualnie otwartego projektu. Kto raz pozna logikę obsługi jednej strony, potrafi bez patrzenia obsłużyć drugą.
Lewa kolumna w trybie Expert — Project Navigator — nie należy do Inspectora, ale jest jego bezpośrednim sąsiadem. Tam można wybierać zaimportowane obrazy kliknięciem, oglądać je klawiszem spacji w Quick Look i usuwać przyciskiem minus lub klawiszem Usuń (z możliwością cofnięcia przez Cmd-Z). Inspector podąża za bieżącym wyborem w panelu bocznym, dostarczając kontekstowych informacji szczegółowych, ale siedem głównych sekcji pozostaje zawsze dostępnych.
Sekcja Look (L1–L5)
Sekcja Look (wewnętrznie nadal nazywana „Finishing") jest od przegrupowania domenowego piątą sekcją Inspectora — między Postępem a Eksportem — i zbiera w jednym miejscu post-treningowe korekty obrazu. Wszystkie suwaki działają w sposób nieniszczący: każdy slider ponownie stosuje obliczenie Look do niezmienionego migawkowego stanu Pristine (oryginalny kolor DC, opacity, skalowanie) — korekta jest zatem idempotentna, a nie kumulatywna. Wynik pojawia się na żywo w viewporcie (WYSIWYG, dokładnie tak jak w późniejszym eksporcie) i jest wypiekany do każdego eksportu. Sekcja jest dostępna dopiero po zakończeniu przebiegu treningowego (wcześniej widnieje „Available after a training run completes."); jej wartości są resetowane przy każdym nowym treningu. Podczas trwania eksportu wszystkie suwaki są zablokowane — pojawia się wskazówka blokady „Locked while exporting — the file uses the current settings." a GroupBox jest disabled.
L1Suwak Saturation
GDZIE
Inspector → sekcja Look → GroupBox → Saturation.
TECHNICZNIE
Slider 0.5–1.2, wyświetlanie z dwoma miejscami po przecinku (np. „1.00"). Skaluje chromę SH-DC każdego splata względem wartości luminancji: 1.0 = bez zmian, < 1.0 = odbarwione (kolor ciągnięty w stronę skali szarości), > 1.0 = intensywniejsze. Matematycznie kolor DC jest przeliczany od nowa z migawki Pristine, więc wielokrotne przesuwanie się nie sumuje. Zostało zwalidowane na materiale z dronów DJI (wiadukt Pensford), który ma tendencję do przerysowania — domyślna wartość dla dronów to 0.82. Działa tylko na bazę koloru (SH stopnia 0), wyższe współczynniki SH pozostają nietknięte.
L2Suwak Splat length
GDZIE
Inspector → sekcja Look → GroupBox → Splat length.
TECHNICZNIE
Slider 0.3–1.0, wyświetlanie z dwoma miejscami po przecinku. Ściąga trzy osie skalowania każdego Gaussiana w przestrzeni logarytmicznej w stronę ich wartości średniej (im mniejsza wartość, tym silniejszy efekt): 1.0 = bez zmian, mniejsze wartości czynią wydłużone splaty typu „igła" bardziej okrągłymi, 0 oznaczałoby czyste kule. Atakuje splaty w kształcie igieł, nadmiernie rozciągnięte, bez zmiany ich całkowitego rozmiaru, redukując tym samym typowe artefakty „konfetti". Stosowane od migawki Pristine (oryginalne skalowanie logarytmiczne), a więc idempotentne. Komutuje z Splat size (L3), ponieważ oba działają w przestrzeni logarytmicznej.
L3Suwak Splat size
GDZIE
Inspector → sekcja Look → GroupBox → Splat size.
TECHNICZNIE
Slider 0.5–2.0, wyświetlanie z dwoma miejscami po przecinku. Skaluje każdego Gaussiana jednolicie na wszystkich trzech osiach: 1.0 = bez zmian, < 1.0 = mniejsze/gęstsze/ostrzejsze, > 1.0 = większe/„puszystsze" (wypełnia luki między splatami). Ponieważ skalowania znajdują się w przestrzeni logarytmicznej, mnożenie staje się tam przesunięciem addytywnym — to komutuje ze Splat length (L2), ponieważ stały offset pozostawia odchylenie od średniej nietknięte. Stosowane od migawki Pristine, więc idempotentne. Nowość w tej wersji.
L4Fade far region (z suwakami pomocniczymi)
GDZIE
Inspector → sekcja Look → GroupBox → przełącznik „Fade far region" plus suwaki pomocnicze „Fade start ×radius" i „Fade floor".
TECHNICZNIE
Przełącznik aktywujący promieniowy spadek opacity wraz z odległością od środka ciężkości kamer — słabo zaobserwowane „dalekie konfetti" w tle zostają wygaszone. Tylko dla ujęć orbitalnych: przełącznik jest wyszarzony, gdy scena się do tego nie nadaje (loty liniowe, zbyt mało lub zdegenerowane kamery); wtedy zamiast suwaków pomocniczych pojawia się wskazówka „Far-fade applies only to orbit captures (not this scene)." Przydatność jest ustalana na podstawie pokrycia azymutalnego pozycji kamer (orbita okrąża środek ciężkości i wypełnia wiele sektorów kompasu, lot liniowy tylko ~2). Dwa suwaki pomocnicze sterują geometrią: Fade start ×radius (1.0–3.0) ustawia promień wewnętrzny jako wielokrotność promienia orbity, w obrębie którego obowiązuje pełna opacity; Fade floor (0.0–1.0) to współczynnik opacity daleko poza promieniem zanikania. Ważne: zanikanie pomija obszar Sky-Dome (zamrożone Gaussiany kopuły), aby celowo zbudowana kopuła tła nie została przy okazji przyciemniona.
L5Przycisk Reset finishing
GDZIE
Inspector → sekcja Look → GroupBox → „Reset finishing" (na dole, mały przycisk).
TECHNICZNIE
Resetuje wszystkie ustawienia Look do wartości domyślnych (Saturation 1.0, Fade wyłączone, Splat length 1.0, Splat size 1.0) i natychmiast wywołuje ponowne finishing, tak że viewport wraca do niezmienionego, wytrenowanego stanu. Ponieważ cały stos Look liczy idempotentnie od migawki Pristine, „powrót do wartości domyślnych" jest dokładnie oryginalnym wynikiem treningu — bez utraty jakości przy wielokrotnym przełączaniu tam i z powrotem. Jak wszystkie suwaki tej sekcji, zablokowany podczas trwającego eksportu.
Sekcja Presetów (I1–I11)
Sekcja Presetów to najszybszy sposób na zastosowanie sprawdzonej konfiguracji. Wbudowane Presety (Capture Class, Classic, MCMC, Hybrid) dostarczają sprawdzone, powtarzalne punkty wyjścia; własne Presety można zapisywać, eksportować, importować i udostępniać. Lista jest pogrupowana według kategorii (Capture Class, Classic, MCMC, Hybrid, Custom) i więcej niż jedna kategoria może być rozwinięta jednocześnie. Poprzez mechanizm menu kontekstowego (kliknięcie prawym przyciskiem myszy na wiersz) dostępne są eksport, duplikowanie oraz — w przypadku własnych presetów — usuwanie.
I1Przycisk Save…
GDZIE
Inspector → sekcja Presets → przycisk Save… (pasek akcji na dole).
TECHNICZNIE
Otwiera popover z polem tekstowym oraz przyciskami Save/Cancel. Aktualny stan ustawień treningu zostaje zapisany jako nowy niestandardowy Preset (zakodowany w JSON, zapisany globalnie w aplikacji). Operacja zapisu kopiuje wszystkie 81 parametrów treningu oraz aktualną strategię Densification. Preset trafia automatycznie do kategorii Custom, niezależnie od tego, z jakiego wbudowanego Presetu został wyprowadzony. Puste nazwy i wpisy zawierające wyłącznie białe znaki są odrzucane. Już istniejące nazwy nie są odrzucane — każdy Preset ma własne wewnętrzne ID, zduplikowane nazwy są technicznie dozwolone, ale w praktyce mylące.
I2Pole tekstowe Preset Name
GDZIE
Popover Save → pole tekstowe „Preset Name".
TECHNICZNIE
Zwykłe pole tekstowe z zaokrąglonym obramowaniem, szeroka forma. Wartość zostaje przyjęta jako nazwa Presetu po kliknięciu przycisku Save. Brak ograniczenia długości w UI, ale zapisana nazwa musi dać się zakodować w JSON i wyświetlić na listach UI — emoji oraz polskie znaki diakrytyczne działają. Zawartość jest automatycznie zerowana do pustego ciągu znaków przy otwarciu popovera. Przycisk Save pozostaje wyłączony, dopóki pole po przycięciu (trim) jest puste. Nie ma auto-podpowiedzi ani wstępnego wypełnienia nazwą aktualnie aktywnego Presetu.
I3Przycisk Cancel (dialog Save)
GDZIE
Popover Save → przycisk Cancel (po lewej).
TECHNICZNIE
Zamyka popover bez zapisywania. Odrzuca zawartość pola tekstowego — przy następnym otwarciu zostanie ona ponownie zresetowana do pustej wartości przez logikę przycisku Save… (I1). Standardowy styl przycisku, brak dialogów potwierdzenia, brak skrótów klawiszowych. Aktualna TrainingConfig pozostaje niezmieniona, ponieważ ścieżka zapisu w ogóle nie została wykonana.
I4Przycisk Save (dialog Save)
GDZIE
Popover Save → przycisk Save (po prawej, bardziej wyróżniony styl).
TECHNICZNIE
Wyzwala właściwe zapisanie danych. Ponownie sprawdza, czy nazwa nie jest pusta (kontrola zabezpieczająca), a następnie zapisuje aktualną TrainingConfig jako JSON w pamięci aplikacji. Zamyka następnie popover. Wyróżniony na niebiesko, wyszarzony dopóki pole tekstowe jest puste. Jeśli zapis się nie powiedzie (np. dlatego, że pamięć aplikacji jest pełna — bardzo mało prawdopodobne), obecnie nie ma widocznego dialogu błędu; Preset po prostu nie pojawi się przy następnym uruchomieniu aplikacji.
I5Przycisk Export…
GDZIE
Inspector → sekcja Presets → pasek akcji → przycisk Export….
TECHNICZNIE
Eksportuje aktualnie wybrany Preset jako plik .radiancepreset (wewnętrznie JSON). Wyłączony, gdy żaden Preset nie jest zaznaczony. Po kliknięciu aplikacja otwiera dialog zapisu z proponowaną nazwą pliku (nazwa Presetu + rozszerzenie .radiancepreset). Zapisany format zawiera pełną TrainingConfig plus metadane (nazwa, kategoria, ID, flaga wbudowany). Podwójne kliknięcie w Finderze otwiera aplikację — ale nie automatycznie import; użytkownik musi użyć przycisku Import (I6).
I6Przycisk Import…
GDZIE
Inspector → sekcja Presets → pasek akcji → przycisk Import….
TECHNICZNIE
Otwiera dialog wyboru pliku, który dopuszcza tylko pliki .radiancepreset (wybór wielokrotny wyłączony). Przy wyborze plik JSON zostaje wczytany, zwalidowany i wstawiony do kategorii Custom — z nowym wewnętrznym ID, aby uniknąć kolizji z wbudowanymi. Import automatycznie ustawia kategorię na Custom, nawet jeśli wyeksportowany Preset był pierwotnie np. wbudowanym. Uszkodzone lub niekompatybilne z starszą wersją schematu pliki są po cichu odrzucane, bez dialogu błędu (w logu konsoli jest jednak informacja).
I7Wiersz Presetu (aktywacja kliknięciem)
GDZIE
Inspector → sekcja Presets → każdy wiersz Presetu w każdej kategorii.
TECHNICZNIE
Kliknięcie w wiersz Presetu zastępuje wszystkie pola TrainingConfig wartościami z Presetu, zapamiętuje ID aktywnego Presetu i resetuje status Modified. Znaczek aktywności przed wierszem pojawia się tylko wtedy, gdy Preset jest zaznaczony ORAZ niezmodyfikowany. Gdy tylko jakaś wartość w TrainingConfig zostanie zmieniona (suwak, stepper, przełącznik w innych sekcjach Inspectora), pojawia się pomarańczowa plakietka „Modified" za nazwą. Wbudowanych Presetów nie można nadpisać — przy modyfikacji trzeba utworzyć własną kopię za pomocą przycisku Save (I1).
I8Menu kontekstowe „Export…"
GDZIE
Kliknięcie prawym przyciskiem myszy na dowolny wiersz Presetu → pierwsza pozycja „Export…".
TECHNICZNIE
Identyczna funkcjonalność jak I5 (przycisk Export…), ale wygodniej dostępna — bez konieczności wcześniejszego zaznaczenia Presetu. Eksportuje bezpośrednio Preset kliknięty w wierszu. Działa tak samo dla wszystkich kategorii Presetów (wbudowany lub Custom), bez ograniczeń. Eksport zawiera flagę wbudowany oraz oryginalną kategorię, ale przy ponownym imporcie kategoria jest mapowana na Custom zgodnie z opisem przy I6.
I9Menu kontekstowe „Duplicate"
GDZIE
Kliknięcie prawym przyciskiem myszy na dowolny wiersz Presetu → druga pozycja „Duplicate".
TECHNICZNIE
Klonuje Preset do kategorii Custom. Tworzy nowe wewnętrzne ID, dodaje „ Copy" do nazwy i zapisuje kopię. Działa również dla wbudowanych Presetów — klon jest wtedy edytowalny. Oryginał pozostaje nietknięty. TrainingConfig zostaje skopiowana wartość po wartości (roundtrip JSON), dzięki czemu nie ma powiązań przez referencję między oryginałem a kopią.
I10Menu kontekstowe „Delete"
GDZIE
Kliknięcie prawym przyciskiem myszy na własne wiersze Presetów → ostatnia pozycja „Delete" (czerwona, destrukcyjna).
TECHNICZNIE
Widoczne tylko dla Presetów Custom. Wbudowanych nie da się usunąć. Pozycja jest oznaczona jako destrukcyjna, pojawia się w menu kontekstowym na czerwono i jest oddzielona linią, aby nie kliknąć jej przypadkowo. Nie ma żadnego dialogu potwierdzenia — jedno kliknięcie natychmiast usuwa Preset. Usunięty Preset nie jest odzyskiwalny (Cmd-Z tutaj nie działa — Undo istnieje w aktualnej wersji tylko dla listy zdjęć, nie dla operacji na Presetach). Jeśli usunięty Preset był akurat aktywny, aktualna TrainingConfig pozostaje niezmieniona, tylko aktywny wybór Presetu zostaje wyzerowany.
I11Nagłówek kategorii (rozwijanie/zwijanie)
GDZIE
Inspector → sekcja Presets → każdy nagłówek kategorii (Capture Class, Classic, MCMC, Hybrid, Custom).
TECHNICZNIE
Status rozwinięcia dla każdej kategorii z różną wartością domyślną: kuratorowana grupa Capture Class startuje rozwinięta, Classic, MCMC, Hybrid i Custom startują zwinięte. Status nie jest zapisywany — przy ponownym uruchomieniu aplikacji wszystkie kategorie wracają do stanu domyślnego. Strzałka chevron obraca się z animacją. Liczba po prawej w nagłówku pokazuje liczbę Presetów w tej kategorii. Obszar klikalny obejmuje cały obszar nagłówka.
Sekcja konfiguracji treningu (I12–I22)

Tutaj znajdują się centralne dźwignie sterujące przebiegiem treningu: jak działa Densification, ile iteracji, jak duże jest ważenie SSIM — a na dole wcześniej samodzielne ulepszenia (Perceptual Loss, grupa Outdoor, Advanced Densifier, przebiegi po treningu). Na samej górze znajduje się Densification jako trójstanowy przełącznik Classic | MCMC | Hybrid. Backend SfM nie znajduje się już tutaj, lecz we własnej sekcji Kamery i przechwytywanie (I12, I13). Trzy wiersze MCMC („MCMC Quality", „Auto-scale by scene" i „Max Gaussians") nie znikają już w trybie Classic, lecz pozostają widoczne i są wyszarzone; poniżej znajduje się wiersz z symbolem kłódki, który mówi, co należy zmienić („Only used by the MCMC and Hybrid densifiers — switch Densification above to change these."). Odsunięty niżej blok podsumowuje wiersze obowiązujące w każdym densifierze: Depth-Priority Scatter, Full-Resolution Training, sprzężoną parę Max Iterations / Densify Until oraz suwaki SSIM Weight i Render Scale.
I12Picker Camera Alignment
GDZIE
Inspector → Kamery i przechwytywanie → Camera Alignment (menu podręczne pod pickerem Projection).
TECHNICZNIE
Menu podręczne, nie segmentowany picker — etykiety nie mieszczą się w wąskiej kolumnie Inspector. To, które pozycje się pojawiają, zależy od buildu: sandboksowana wersja z App Store oferuje Apple Photogrammetry i Native, build deweloperskie/DMG dodatkowo COLMAP. Powód: COLMAP jest zewnętrznym programem uruchamianym z linii poleceń, a aplikacje sandboksowane nie mogą uruchamiać obcych plików binarnych (wytyczna App Review 2.5.2) — dlatego pozycja backendu wraz z pickerem Mapper i ścieżką binarną brakuje w buildzie ze Store całkowicie, zamiast być trwale wyszarzona: wiersz, który nigdy nie może się zaświecić, nie jest wskazówką, lecz szumem. Nie mylić: Import i eksport przestrzeni roboczej COLMAP to czyste parsowanie plików w Swift, nie wymaga instalacji COLMAP i działa w każdym buildzie (rozdział 1, M5). Dopisek „(Beta)" przy pozycji Native został usunięty — Native od wersji v1.5.2 nie jest już wersją beta. Wybór określa backend SfM następnego przebiegu i jednocześnie steruje tym, które wiersze poniżej są dostępne (I13, High-Quality, Native SfM Recipe). Przypis w interfejsie: Przy nieuporządkowanym zestawie zdjęć pipeline zawsze wyrównuje za pomocą Native, niezależnie od tego, co pokazuje picker — ten przepis dostępny jest tylko tam. Picker celowo nie jest przy tym blokowany (wartość nie jest niedostępna, jest tylko nadpisywana); zamiast tego pojawia się wskazówka z symbolem rozgałęzienia.
I13Pole FOV Override (Native SfM)
GDZIE
Inspector → Kamery i przechwytywanie → FOV Override (zawsze widoczne, dostępne tylko przy Camera Alignment = Native).
TECHNICZNIE
Pole numeryczne (zakres 0-170°), domyślnie 0 = automatyczne wyznaczenie z EXIF lub heurystyki. Ręczne wprowadzenie jest konieczne, gdy obrazy wejściowe zostały wyodrębnione z wideo, które nie zawiera metadanych ogniskowej. Typowe wartości: iPhone Wide ≈ 73°, DJI Mavic Wide-Crop ≈ 70°, dron z pełnoklatkowym sensorem ≈ 84°. Wartość jest przycinana do [0, 170] — wartości poza zakresem są bezpośrednio sprowadzane z powrotem. Ma wpływ tylko na natywny pipeline SfM (Q4/Q5); Apple Photogrammetry całkowicie ignoruje tę wartość. Od 2026-07-18: Przy innych backendach pole nie jest już ukrywane, lecz wyszarzane — razem z „High-Quality" i „Native SfM Recipe" oraz wierszem z symbolem kłódki („These configure the Native aligner — choose Native under Camera Alignment to change them."). Wcześniejsze ukrywanie przemilczało, że te regulatory w ogóle istnieją. Blokada zależy od wybranego backendu, nie od faktycznie używanego — o przekierowaniu nieuporządkowanych zestawów zdjęć na Native informuje zamiast tego wskazówka pod I12. Wiersz „Native SfM Recipe" wymaga dodatkowo nieuporządkowanego zestawu zdjęć i poza tym ma własny wiersz wyjaśniający.
I15Picker Densification
GDZIE
Inspector → Konfiguracja treningu → Densification (picker segmentowany, zawsze widoczny).
TECHNICZNIE
Przełącza między dwiema strategiami Densification: Classic (oryginalna metoda 3DGS z Clone/Split/Prune i progiem gradientu) oraz MCMC (Stochastic Gradient Langevin Dynamics z relokacją, NeurIPS 2024). Przy przełączeniu z Classic na MCMC aplikacja automatycznie ustawia pola specyficzne dla MCMC na sprawdzone wartości domyślne (Reg-Weights = 0, mnożnik cap MCMC 3.0, harmonogram sampli/szumu). Bez tej automatycznej inicjalizacji sesje ze starymi presetami cierpiały na skutek błędu zapaści MCMC z wersji 1.4.4 (460K→5 Gaussians, zabicie przez watchdoga). Wybór w pickerze określa dodatkowo, które elementy Inspectora są widoczne — przy MCMC pojawiają się I16/I17. Szczegółowy wpływ pól w rozdziale 6, T11–T16 (Classic) i T61–T73 (MCMC).
I16Przełącznik MCMC Quality
GDZIE
Inspector → Training → MCMC Quality (zawsze widoczny, dostępny przy Densification = MCMC lub Hybrid).
TECHNICZNIE
Przełącza akumulację gradientu na 2 kroki (aktywny) lub 1 krok (nieaktywny). Akumuluje gradienty z dwóch kolejnych widoków kamery, zanim zostanie wykonany krok optymalizatora. To wygładza ścieżkę optymalizacji i lekko, ale zauważalnie poprawia wynik końcowy. Cena: podwojony czas treningu. Przy bardzo długich treningach (200K iteracji) prowadzi to do dodatkowych 10+ minut oczekiwania — opłaca się więc tylko wtedy, gdy naprawdę potrzebne są ostatnie kilka procent jakości. Wpływa wyłącznie na trening, nie na format eksportu ani renderowanie w viewporcie. Dotyczy też Hybrid, który używa tej samej maszynerii MCMC. Od 2026-07-18: Przy Classic wiersz nie znika już, lecz jest wyszarzany razem z I17 i „Max Gaussians"; poniżej pojawia się „Only used by the MCMC and Hybrid densifiers — switch Densification above to change these."
I17Przełącznik Auto-scale by scene
GDZIE
Inspector → Training → Auto-scale by scene (zawsze widoczny, dostępny przy Densification = MCMC lub Hybrid).
TECHNICZNIE
Gdy aktywny, skaluje efektywny górny limit Max Gaussians liczbą punktów inicjalnych SfM × mnożnik cap MCMC (domyślnie 3.0). Przykład: SfM dostarcza 250K punktów początkowych, cap bazowy = 150K, mnożnik 3.0 → efektywny limit = max(150K, 750K) = 750K. Gdy wyłączony, obowiązuje ściśle tylko wartość bazowa. Sama wartość bazowa znajduje się w wierszu Max Gaussians bezpośrednio poniżej (od 1.8, domyślnie 150 000, wprowadzenie przycinane do 10 000–30 000 000). Jeśli efektywny limit przekracza wartość bazową, aplikacja pokazuje go jako czysty tekst („Effective cap for this scene: …") — wraz z ostrzeżeniem o RAM, gdy okazuje się zbyt wysoki. Wprowadzone dla v1.4.5, ponieważ duże nagrania plenerowe z ponad 1000 klatkami i odpowiednio wysoką gęstością punktów SfM przy sztywnym domyślnym cap 150K głodziły Densification — zbędne punkty pozostawały, nowe nie mogły powstawać. Domyślnie WYŁ. w presetach niestandardowych, WŁ. w wbudowanych presetach MCMC. Ma wpływ tylko podczas treningu, nie przy eksporcie. Od 2026-07-18: Przy Classic wiersz jest wyszarzany zamiast ukrywany (z tym samym wierszem wyjaśniającym co I16); wyświetlanie tekstu i ostrzeżenie o RAM celowo tam się nie pojawiają, ponieważ Classic w ogóle nie stosuje górnego limitu.
I18Stepper Max Iterations
GDZIE
Inspector → Konfiguracja treningu → GroupBox → Max Iterations.
TECHNICZNIE
Stepper z zakresem 1 000–100 000, krok 1 000. Określa całkowitą liczbę iteracji optymalizatora. Liniowo skorelowany z czasem treningu (połowa = ok. 50% czasu). Sprawdzone wartości to 20K (Classic Balanced), 40K (Classic Quality) i 200K (MCMC Full). Powyżej 40K Classic przynosi już niewiele poprawy — zysk się spłaszcza. Przy zmianie, o ile aktywna jest funkcja łączenia (I19), Densify Until jest proporcjonalnie przeciągane (domyślny stosunek: 0.5, tzn. Densify-Until = Max/2).
I19Przycisk łączenia/rozłączenia (Densify ↔ Iterations)
GDZIE
Inspector → Konfiguracja treningu → GroupBox → mały przycisk łączenia między Max Iterations a Densify Until.
TECHNICZNIE
Przycisk przełączający, który zamraża stosunek Densify Until do Max Iterations. Gdy aktywny (ikona łańcucha wyróżniona), przy każdej zmianie Max Iterations wartość Densify Until jest proporcjonalnie przeciągana. Przy rozłączeniu (ikona łańcucha z plusem) wartości pozostają niezależne. Domyślnie połączone, ponieważ to odzwierciedla typową korelację — gdy zwiększasz trening do podwójnej liczby iteracji, zwykle chcesz też, aby Densification trwała proporcjonalnie dłużej. Stosunek jest obliczany z aktualnej wartości w momencie ustawienia przycisku łączenia; typowy stosunek to 0.5 (Densify-Until = połowa liczby iteracji).
I20Stepper Densify Until
GDZIE
Inspector → Konfiguracja treningu → GroupBox → Densify Until.
TECHNICZNIE
Stepper z zakresem 500–50 000, krok 500. Określa indeks iteracji, od którego nie są już dodawane nowe Gaussiany przez Clone/Split (Classic) lub relokację (MCMC). Po osiągnięciu tego indeksu doszlifowywane są już tylko pozycja i kolor. Wyższe wartości = więcej Gaussianów = większy plik, dłuższy czas na iterację (+30-60% czasu GPU na krok). Typowe wartości: 15K (dla 30K Max-Iter), 20K (dla 40K), 100K (dla 200K MCMC). Przy aktywnym połączeniu (I19) automatycznie skalowane. Działa inaczej w Classic vs MCMC: Classic całkowicie zatrzymuje wzrost, MCMC zatrzymuje logikę relokacji, ale adaptacja sampli/szumu działa dalej.
I21Suwak SSIM Weight
GDZIE
Inspector → Konfiguracja treningu → GroupBox → SSIM Weight.
TECHNICZNIE
Suwak 0.0–1.0 w krokach po 0.05, wyświetlanie jako „0.20". Miesza L1-Loss (0.0) i SSIM-Loss (1.0). L1 dopina jasność na piksel, SSIM strukturalne podobieństwo (krawędzie, lokalne statystyki). Domyślne 0.2 to wartość z oryginalnej pracy 3DGS (Kerbl 2023) i solidny kompromis dla niemal każdej sceny. Wyższe wartości (0.5+) preferują zachowanie detali, ale mogą ignorować lokalne błędy jasności. Niższe wartości (< 0.1) prowadzą do utraty detali na ostrych krawędziach. Obliczenie SSIM działa w shaderze z oknem Gaussa 11×11. Wydajność: przy 0.0 (tylko L1) trening jest ok. 8-12% szybszy, ponieważ obliczenie SSIM w shaderze jest pomijane.
I22Suwak Render Scale
GDZIE
Inspector → Konfiguracja treningu → GroupBox → Render Scale.
TECHNICZNIE
Suwak 0.25–1.0 w krokach po 0.25, wyświetlanie jako „100%". Skaluje rozdzielczość renderowania podczas treningu względem rozmiaru obrazu źródłowego. Największa dźwignia wpływu na wydajność: 50% redukuje czas GPU o ok. 75% (bo 4× mniej pikseli), 25% o ok. 94%. Próg gradientu jest automatycznie skalowany razem z tym. Pod suwakiem pojawia się wskaźnik rozdzielczości na żywo w MP (np. „2304×1296 (3.0 MP)"). Jeśli aktualna wartość odbiega od zalecanej, w pomarańczowym tekście pojawia się „— recommended: 50%". Zalecenie celuje w ~3 MP efektywnej rozdzielczości — zakres najbardziej efektywnie przetwarzany przez GPU Apple Silicon. Obrazy źródłowe 4K dostają np. automatycznie zalecane 25%, obrazy FullHD 100%. Zmiana wywołuje dodatkowo realokację buforów.
Grupy Enhancements (w sekcji Training, I26–I29, I42–I44)

Te grupy zbierają funkcje, które poprawiają jakość obrazu, nie zmieniając przy tym samej pętli trenowania. Do 2026-07-18 tworzyły osobną sekcję Inspectora o nazwie Enhancements; od przegrupowania domenowego znajdują się na dolnym końcu sekcji Training. Dawny picker Viewport-Scaling (Off/MetalFX/Lanczos) zniknął bez zastępnika: nigdy nic nie zmieniał — decyzja o blit w Viewporcie jest czysto geometryczna — a jego opis dodatkowo obiecywał podbicie rozdzielczości, podczas gdy realny przebieg Lanczos to antyaliasingowe zmniejszanie próbkowania nadpróbkowanego obrazu. Wskaźnik w Viewporcie nazywa się teraz odpowiednio „Sampling" zamiast „Scaling" (rozdział 4); nigdzie w aplikacji nie ma podbijania rozdzielczości przez MetalFX. Perceptual Loss (I29) mimo przynależności do tej grupy jest elementem trenowania — jest aktywowany podczas treningu jako dodatkowy składnik lossu; znajduje się na samej górze, z linijką objaśnienia „Multi-scale blur feature matching for structural similarity". Poniżej znajduje się grupa Outdoor z czterema przełącznikami — Sky Masking, Person Masking, Floater Cleanup i Reconstruct Sky Dome (I42–I44) — opcjami treningowymi przeciw floaterom nieba, które wcześniej znajdowały się w oknie ustawień, a teraz są dostępne per projekt tutaj. Następuje zwinięty wiersz „Advanced Densifier (Expert)", który nosi trójkąt ostrzegawczy, ponieważ kryją się za nim suwaki, które mogą też rozłożyć trening. Na końcu znajduje się grupa „Runs automatically at the end of training" z Post-Training Compactification (I26) oraz przełącznikiem „Remove Needle/Disc Floaters".
I26Przełącznik Post-Training Compactification
GDZIE
Inspector → Training → grupa „Runs automatically at the end of training" → Post-Training Compactification.
TECHNICZNIE
Aktywuje przebieg porządkujący na końcu: po zakończeniu iteracji treningowych usuwane są Gaussians o opacity poniżej 0.01 (1% widoczności). To zazwyczaj zmniejsza rozmiar pliku mniej więcej o połowę, bez widocznej utraty jakości — ponieważ te Gaussians i tak nie wnoszą nic wizualnie. Compactification działa jako przebieg GPU-Compact i w zależności od liczby Gaussians trwa od ułamków sekundy do kilku sekund. Nie wpływa na wydajność treningu. Gdy ten przełącznik jest wyłączony, eksportowane są też niewidoczne Gaussians — ma to znaczenie tylko wtedy, gdy chcesz wykorzystać ten format do kolejnego etapu treningu (Continue Training), w przeciwnym razie to marnowanie pamięci.
I29Suwak Perceptual Loss
GDZIE
Inspector → Training → Perceptual Loss.
TECHNICZNIE
Suwak 0.0–0.2 w krokach co 0.01, przy 0.0 wyświetlany jako „Off", w przeciwnym razie jako „0.05" itd. Aktywuje dodatkowy składnik lossu, który porównuje wielo-skalowe rozmycie gaussowskie renderingu z obrazem ground-truth (3 skale rozmycia). Wychwytuje różnice strukturalne, których samo L1+SSIM nie wykrywa. Wartości między 0.05 a 0.1 zauważalnie poprawiają drobne struktury, kosztując przy tym tylko niewiele czasu treningu — około 5% (dodatkowy forward-pass przez jądra rozmycia). Powyżej 0.15 trening staje się niestabilny, a jakość znów spada, ponieważ ten składnik lossu zaczyna dominować optymalizację. Działa podczas treningu, nie w post-processingu — mimo swojej pozycji przy wierszach Enhancements na końcu sekcji Training nie jest to więc czyste dopracowanie na później.
I42Sky Masking
GDZIE
Inspector → Training (grupa Outdoor) → przełącznik „Sky Masking". Zapisywane per projekt; domyślnie: wyłączone.
TECHNICZNIE
Aktywuje segmentację pikseli nieba opartą na Apple Vision przed treningiem. Przed startem treningu dla każdej kamery wejściowej region nieba jest wyodrębniany za pomocą maski pierwszego planu Apple Vision (niebo = tło) i przypisywany jako maska per piksel do danej kamery. Podczas treningu wkład lossu dla każdego piksela jest mnożony przez dopełnienie maski nieba — piksele nieba wnoszą 0 do gradientu, dzięki czemu Gaussians rzutujące na niebo nie otrzymują sygnałów optymalizacyjnych i przez to nie stają się „gęstsze" ani „jaśniejsze". Znacząco redukuje floaters (ciemne kłębki na niebie) w scenach outdoorowych/dronowych. Kosztuje ok. 3% regresji L1 przy klasycznym treningu 40K. Sensowne tylko w scenach outdoorowych z wyraźnie rozpoznawalnym niebem; w scenach wnętrz lub przy białym tle segmentacja nieba identyfikuje błędne obszary i blokuje prawidłowe sygnały lossu. Wartość jest zapisywana per projekt (już nie globalnie w aplikacji) i podąża za presetem lub plikiem sceny.
I43Floater Cleanup
GDZIE
Inspector → Training (grupa Outdoor) → przełącznik „Floater Cleanup" (podtytuł „Remove Gaussians outside all camera views"). Zapisywane per projekt; domyślnie: wyłączone.
TECHNICZNIE
Przełącznik steruje dwoma efektami o różnych warunkach; oba są przy starcie wyprowadzane do lokalnej dla przebiegu konfiguracji, a nie zapisywane w zapisanej konfiguracji (inaczej pozostałyby jako jednorazowa blokada). (1) Frustum-union cull na końcu treningu — Gaussians znajdujące się poza sumą wszystkich frustów kamer są usuwane („nigdy nie zaobserwowane" = „nigdy nie ograniczone", a to właśnie większość floaterów). Ta część nie ma żadnego warunku dotyczącego strategii i działa jednakowo przy Classic, MCMC i Hybrid — to od niej pochodzi nazwa przełącznika. (2) Dwa dodatkowe przebiegi density control w środku przebiegu — tylko przy Classic i dopiero od 30 000 iteracji, ustawione na 55% i 85% długości przebiegu (przy 35–40K więc mniej więcej 20K i 30K). Oba przebiegi szukają Gaussians o bardzo niskiej opacity, znikomym rozmiarze w przestrzeni ekranu i bez wkładu do lossu, po czym je usuwają. Efekt: ok. 5–15% mniej Gaussians na końcu, zauważalnie mniej ciemnych kłębków na niebie w scenach dronowych/outdoorowych. Kosztuje ok. 1–3% regresji L1 w scenach zbliżeń wnętrz, dlatego nie jest domyślnie włączony. Wartość jest zapisywana per projekt i podąża za presetem lub plikiem sceny. Poprawka względem wcześniejszych wydań: przełącznik nie jest już ograniczony do densifiera Classic i przy MCMC/Hybrid nie jest już wyszarzony — to akurat blokowało użytkownikom MCMC i Hybrid dostęp do cullu, który u nich działa. Przy krótkich przebiegach (np. P2 Preview 5K) pomijana jest jedynie część w środku przebiegu.
I44Reconstruct Sky Dome
GDZIE
Inspector → Training (grupa Outdoor) → przełącznik „Reconstruct Sky Dome". Zapisywane per projekt; domyślnie: wyłączone.
TECHNICZNIE
Aktywuje projekcję kopuły nieba przed treningiem. Po SfM i przed startem treningu dla każdej kamery wejściowej wyodrębniana jest z obrazu wspólnie używana w S7 maska nieba Apple Vision, piksele nieba są odprojektowywane za pomocą intrinsics kamery na wirtualną powierzchnię kuli (domyślny promień 8× promień sceny). Na tej kuli inicjalizowanych jest ok. 5000 nowych Gaussians ze średnimi kolorami z rzutowanych pikseli nieba, bardzo dużą skalą (1.0 w jednostkach sceny) i początkową opacity 0.95. Te 5000 Gaussians to nie maska nieba w klasycznym sensie — są trenowane jak wszystkie inne, ale dzięki wysokiej początkowej opacity pozostają w cienkiej powłoce. Wynik: przy widokach 360° w scenach outdoorowych/dronowych zamiast ciemnych kłębków confetti pojawia się rzeczywisty kolor nieba i struktury chmur. Wartość jest zapamiętywana po ponownym uruchomieniu. Sensowne tylko w scenach outdoorowych z co najmniej pokryciem kamer 360°; przy czystych przechwyceniach obiektów bez widoku nieba nie ma efektu. Status: eksperymentalny, szersza walidacja A/B na kolejnych zestawach outdoorowych jeszcze nie została przeprowadzona.
Sekcja metryk (I30–I37)

Podczas trwania treningu grupa metryk („Training Metrics", jedna z dwóch zwijalnych grup w sekcji Postęp) pokazuje osiem wartości na żywo z pętli treningowej. Przed rozpoczęciem treningu jest pusta („Start training to see live metrics"). Wszystkie wartości aktualizują się co ~30 iteracji (częstotliwość aktualizacji metryk na żywo). Sekcja jest tylko do odczytu — żaden element nie jest klikalny ani edytowalny. Do głębszej analizy sięgnij po dzienniki treningowe JSONL w ~/Documents/RadianceKit/Logs/.
I30Iteration
GDZIE
Inspector → Postęp → Training Metrics → Iteration. Tylko do odczytu.
TECHNICZNIE
Wskazanie w formacie „4523 / 40000" — aktualna iteracja w stosunku do całkowitej zaplanowanej liczby iteracji. Liczy się synchronicznie z pętlą treningową, która przekazuje wartości co ~30 iteracji. Druga liczba odpowiada wartości Max Iterations w momencie startu; nie zmienia się już, nawet jeśli użytkownik przestawi potem stepper — bieżący przebieg używa własnej migawki (snapshotu). Jeśli aplikacja dodaje iteracje przez menu Training (Continue Training +5K/+10K/+20K), mianownik rośnie.
I31Loss
GDZIE
Inspector → Postęp → Training Metrics → Loss. Tylko do odczytu.
TECHNICZNIE
Wartość zmiennoprzecinkowa z sześcioma miejscami po przecinku (np. „0.024385"). Mierzy połączony loss L1+SSIM (proporcje kontrolowane przez I21 SSIM Weight) plus opcjonalnie Perceptual Loss (I29) i inne regularyzatory. Skala nie jest bezwzględna, lecz zależna od sceny — większość porównań wymaga tego samego zbioru danych. Typowe wartości końcowe przy dobrych konfiguracjach: - Classic Quality 40K iteracji: 0.022–0.025 (Horse, Truck, Garden) - MCMC Full 200K iteracji: 0.024–0.028 - Dron zewnętrzny 30K: 0.030–0.060 (gorsze ze względu na geometrię) - Wnętrza mieszkań: 0.018–0.025
Wartości powyżej 0.10 po 5K iteracjach wskazują na problemy z SfM (złe pozy kamery) — przerwij i przelicz SfM od nowa.
I32Learning Rate
GDZIE
Inspector → Postęp → Training Metrics → Learning Rate. Tylko do odczytu.
TECHNICZNIE
Wyświetlanie w notacji naukowej (np. „1.60e-04"). Aktualny współczynnik uczenia dla parametrów pozycji (3DGS ma sześć niezależnych współczynników uczenia dla pozycji, SH-DC, SH-Rest, Opacity, Scale, Rotation — tutaj pokazany jest Position-LR jako wartość reprezentatywna). Domyślna wartość początkowa 1.6e-4, która spada wykładniczo do ~1.6e-6 pod koniec treningu. Zanikanie można dostosować w polu harmonogramu LR w konfiguracji treningu (pole T w rozdz. 6). Jeśli LR pozostaje nietypowo wysokie (np. 1e-3 lub więcej po 10K iteracjach), może to wskazywać na błędnie wczytaną konfigurację.
I33SH Degree
GDZIE
Inspector → Postęp → Training Metrics → SH Degree. Tylko do odczytu.
TECHNICZNIE
Liczba całkowita 0-3. Stopień harmonik sferycznych dla reprezentacji koloru. Zaczyna od 0 (tylko składowa DC, czyli kolor niezależny od kierunku dla każdego Gaussiana — czyli tylko jedna stała RGB) i rośnie stopniowo w trakcie treningu aż do 3. Domyślny harmonogram podnosi stopień o 1000/2000/3000 iteracjach o 1 każdorazowo. SH-3 odpowiada 48 współczynnikom koloru na Gaussian (3 kanały RGB × 16 funkcji bazowych SH). Wyższy stopień SH oznacza więcej refleksów zależnych od kierunku (błyszczące powierzchnie wyglądają pod różnymi kątami widzenia poprawnie inaczej), ale też więcej pamięci i wolniejszy trening.
I34Gaussians
GDZIE
Inspector → Postęp → Training Metrics → Gaussians. Tylko do odczytu.
TECHNICZNIE
Aktualna liczba Gaussianów w modelu, sformatowana z separatorem regionalnym (np. „524.318"). Wzrost: - Classic: zaczyna od punktów inicjalizacji SfM (typowo 50K-300K), rośnie przez Clone/Split aż do tuż przed Densify Until, potem statycznie do końca treningu (z zastrzeżeniem pruningu) - MCMC: punkty próbkowania są dodawane aż do limitu MCMC, potem tylko relokacja
Zdrowe wartości końcowe: - Classic Quality: 400K-700K (Horse 524K, Garden 800K) - MCMC Full: dokładnie na limicie (domyślnie 150K, z mnożnikiem Auto-Scale × liczba SfM w zależności od sceny 500K-1.5M)
Przy MCMC liczba spada poniżej 60% limitu → anomalia (wskaźnik kolapsu, wskazuje na zbyt agresywne regularyzatory).
I35GPU Memory
GDZIE
Inspector → Postęp → Training Metrics → GPU Memory. Tylko do odczytu.
TECHNICZNIE
Szacunek zużycia pamięci bufora Gaussianów jako liczba Gaussianów × 616 bajtów (sformatowane w stylu pamięciowym). 616 bajtów to rozmiar w pełni wyposażonego Gaussiana (pozycja, skalowanie, rotacja, Opacity, współczynniki SH stopnia 3, akumulator gradientu). Wskazanie nie obejmuje narzutu renderera (bufor kafelków, bufor sortowania, bufor przejścia wstecznego) — rzeczywiste zapotrzebowanie na pamięć GPU jest zwykle 2-3× wyższe od tej wartości. Przy 500K Gaussianach: wyświetlane ~290 MB, rzeczywiste ~700 MB. Przy 1.5M Gaussianach: wyświetlane ~880 MB, rzeczywiste ~2.5 GB. Na M3 Max z 64+ GB pamięci ujednoliconej nie stanowi problemu, na M3 Pro z 18 GB to już ograniczenie.
I36Speed
GDZIE
Inspector → Postęp → Training Metrics → Speed. Tylko do odczytu.
TECHNICZNIE
Liczba iteracji na sekundę z jednym miejscem po przecinku („24.3 it/s"). Obliczana przez trener jako średnia krocząca z ostatnich ~100 iteracji. Typowe wartości: - Preset Quick (1K iteracji): 80-120 it/s (krótko, brak stanu ustalonego) - Classic 20K @ 1.0 Render Scale (scena Truck, 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 (wolniej z powodu relokacji) - przy 1M+ Gaussianach i pełnej rozdzielczości: < 10 it/s
Spadająca prędkość w trakcie treningu jest normalna — więcej Gaussianów = więcej obliczeń na iterację. Nagłe spadki (np. z 30 → 5 it/s) wskazują na thermal throttling GPU lub konkurujące aplikacje.
I37Elapsed
GDZIE
Inspector → Postęp → Training Metrics → Elapsed. Tylko do odczytu.
TECHNICZNIE
Już upłynięty czas w formacie „4:23" (m:ss) lub „1:23:45" (h:mm:ss). Zmiana formatu od 1 godziny. Mierzy tylko czysty czas treningu, nie poprzedzające go fazy (obliczenia SfM, import obrazów). Przy Pause/Resume zegar biegnie dalej — jest to więc czas rzeczywisty, a nie czas CPU.
Sekcja wykresu strat (I39–I41)

Grupa wykresu strat („Loss History", druga rozwijana grupa w sekcji Postęp) wizualizuje przebieg treningu w czasie. Składa się z dwóch wykresów: wykresu krzywej strat (duży, na górze, niebieski) i wykresu liczby Gaussianów (mniejszy, na dole, pomarańczowy). Oba są budowane na żywo w trakcie treningu i pozostają widoczne aż do kolejnego uruchomienia treningu. Przed pierwszym treningiem obszar jest pusty („Loss curve will appear during training"). Wykresy to czyste rysunki ścieżek SwiftUI (bez frameworka Swift Charts), dzięki czemu renderują się płynnie nawet przy 100K+ punktów.
I39Current Loss (wyświetlacz)
GDZIE
Inspector → Postęp → Loss History → lewy obszar etykiety „Current: 0.0075". Tylko do odczytu.
TECHNICZNIE
Wartość zmiennoprzecinkowa ostatniego punktu próbki strat, sformatowana z czterema miejscami po przecinku. Identyczna z I31 (Loss w sekcji Metryki), tylko tutaj sformatowana bardziej kompaktowo. Źródłem jest historia strat — lista, do której trafia wpis co ~30 iteracji. Do listy trafiają tylko wartości skończone — NaN/Infinity (bardzo rzadkie, w przypadku błędu eksplozji gradientu) są odfiltrowywane.
I40Min Loss (wyświetlacz)
GDZIE
Inspector → Postęp → Loss History → prawy obszar etykiety „Min: 0.0051" (zielony). Tylko do odczytu.
TECHNICZNIE
Minimum wszystkich wartości strat kiedykolwiek zaobserwowanych w aktualnym przebiegu treningu. Jest obliczane na żywo na podstawie historii strat — brak osobnej persystencji. Wyświetlane zielonym kolorem, ponieważ „Min" oznacza „najlepsze dotychczas". Zielona przerywana linia przy dolnej krawędzi wykresu wizualnie zaznacza tę pozycję Y. Przy sesjach kontynuacji treningu (Continue Training) śledzenie minimum zaczyna się od nowa — stara historia jest w interfejsie zastępowana nową (nie dołączana). Jeśli aktualny trening przebiega gorzej niż poprzedni, wyświetlane Min może więc być większe niż poprzedni wynik końcowy.
I41Wykres liczby Gaussianów
GDZIE
Inspector → Postęp → Loss History → drugi wykres poniżej (pomarańczowy). Tylko do odczytu.
TECHNICZNIE
Wykres liniowy liczby Gaussianów w funkcji iteracji treningu. Źródło: historia liczby Gaussianów (lista par (iter, count), wypełniana przez trener co ~30 iteracji). Skala Y dynamiczna między minimum a maksimum historii. Przy strategii Classic krzywa zwykle wygląda tak: stały wzrost aż do Densify Until, potem płasko (z niewielkimi wahaniami wynikającymi z przycinania). Przy MCMC: stromy wzrost aż do limitu (Cap), potem linia pozioma (Relocation utrzymuje liczbę na stałym poziomie). Spadek na samym końcu jest normalny — na powyższym obrazku krzywa spada z około 16K do 9660, ponieważ na końcu ostatniej iteracji uruchamiane są przebiegi porządkujące (I26). Alarmujący jest tylko spadek w środku przebiegu: wtedy densyfikacja przycina zbyt agresywnie — oznaka błędnych ustawień domyślnych lub znanego błędu zapadania się MCMC (temat poprawki hotfix w wersji v1.4.4).
Jak czytać krzywą strat?
Wykres strat to najważniejsze narzędzie diagnostyczne w Inspectorze — żaden inny wskaźnik nie pokazuje tak bezpośrednio, czy trening przebiega efektywnie, czy utknął w miejscu. Typowy zdrowy kształt to szybki spadek w pierwszych 1000–3000 iteracjach (z ~0.15 do ~0.05), po którym następuje powolny, równomierny spadek aż do końca treningu (do wartości 0.020–0.030). W skali logarytmicznej krzywa wygląda przy tym jak gładka przekątna.
Co oznacza plateau na wykresie strat? Jeśli krzywa pozostaje płaska przez kilka tysięcy iteracji, możliwe są dwie interpretacje: (a) trening „zbiegł się" — strata nie może już istotnie spaść, ponieważ model jest tak dobry, jak to możliwe przy danych danych wejściowych i ustawieniach. To jest pożądane; to oznacza „gotowe". (b) trening „utknął" — strata w zasadzie mogłaby jeszcze spaść, ale optymalizacja stagnuje (lokalne minimum, zbyt mała szybkość uczenia, wyłączona densyfikacja). Jak odróżnić: jeśli wartość strat leży w typowo dobrym zakresie (0.020–0.030 dla wnętrz/obiektów, 0.040–0.060 dla scen zewnętrznych), a krzywa jest płaska od 5K iteracji, to trening się zbiegł. Jeśli wartość jest wyraźnie wyższa niż w porównywalnych scenach (np. 0.08), to trening utknął.
Uwaga: plateau liczby Gaussianów ≠ plateau strat. Plateau w liczbie Gaussianów nie oznacza „trening jest gotowy". Oznacza tylko, że densyfikacja przestała dodawać nowe punkty — albo dlatego, że osiągnięto Densify Until (Classic), albo dlatego, że limit MCMC jest pełny. Trening potem toczy się dalej i tylko dopracowuje istniejące punkty. Faktyczny sygnał „gotowe" odczytujesz z krzywej strat i z wyświetlacza liczby iteracji (I30), a nie tutaj.
Reguła kciuka dotycząca przerywania treningu: Jeśli krzywa strat po 5000+ iteracjach jest powyżej 0.08 i ledwo już spada, z dużym prawdopodobieństwem coś jest nie tak z rekonstrukcją SfM. Przerwij trening, sprawdź w rozdziale 9, czy wybrany backend SfM pasuje do sceny, ewentualnie przełącz się na COLMAP/Native, a następnie uruchom ponownie. Lepiej zainwestować 10 minut w lepszy SfM niż 2 godziny treningu z błędnym wyrównaniem kamer.
Kiedy sięgnąć po Inspector?
Szybkie odniesienie: która sekcja i które elementy sterujące dla jakiego typowego przypadku użycia?
| Typowe zadanie | Sekcja | ID kontrolek |
|---|---|---|
| Odbarwienie kolorów gotowego splatu | Look | L1 (Saturation) |
| Zaokrąglenie splatów w kształcie igieł/konfetti | Look | L2 (Splat length) |
| Wypełnienie dziurawej chmury / powiększenie splatów | Look | L3 (Splat size) |
| Ukrycie dalekiego „konfetti" przy orbitach | Look | L4 (Fade far region) |
| Odrzucenie zmian wyglądu | Look | L5 (Reset finishing) |
| Wczytanie gotowego ustawienia | Presety | I7 (kliknięcie wiersza) |
| Zapisanie własnego ustawienia | Presety | I1 → I2 → I4 |
| Udostępnienie ustawienia współpracownikom | Presety | I5 (eksport) lub I6 (import) |
| Zmiana backendu SfM (np. bo Apple-PG jest zbyt niestabilne) | Kamery i przechwytywanie | I12 (patrz rozdz. 9) |
| Przetwarzanie klatek wideo bez ogniskowej EXIF | Kamery i przechwytywanie | I13 (FOV Override) |
| Wydajność COLMAP: GLOMAP zamiast klasycznego | Kamery i przechwytywanie | I14 — tylko w wersjach deweloperskich, w wersji z App Store COLMAP nie jest dostępny jako backend |
| Przełączenie z Classic na MCMC | Konfiguracja treningu | I15 |
| Wydłużenie czasu trwania treningu | Konfiguracja treningu | I18 (Max Iter) + I20 (Densify Until) — powiązane przez I19 |
| Zmniejszenie czasu GPU o połowę | Konfiguracja treningu | I22 (Render Scale na 50%) |
| Jakość treningu +6% (MCMC) | Konfiguracja treningu | I16 (MCMC Quality) |
| Scena plenerowa z wieloma punktami SfM | Konfiguracja treningu | I17 (Auto-scale by scene) |
| Konfiguracja / zmiana ścieżki COLMAP | Kamery i przechwytywanie | I23 / I24 / I25 — tylko w wersjach deweloperskich |
| Zmniejszenie plików eksportu | Trening | I26 (zawsze pozostaw włączone) |
| Ostatnia odrobina detali przy delikatnych strukturach | Trening | I29 (Perceptual Loss 0.05-0.1) |
| Monitorowanie treningu | Postęp ▸ Training Metrics | I30 (postęp), I36 (tempo) — pozostały czas widoczny jest na pasku transportu pod viewportem |
| Wczesna ocena jakości | Postęp ▸ Training Metrics | I31 (Loss < 0.05 po 5K = dobrze) |
| Podejrzenie problemu z SfM | Postęp (obie grupy) | I31 + I39 (Loss > 0.08 po 5K → SfM od nowa) |
| Rozróżnienie konwergencji od zawieszenia | Postęp ▸ Loss History | I39 + I40 (odczyt plateau lossu) |
| Rozpoznanie problemu z densyfikacją | Postęp ▸ Loss History | I41 (krzywa Gaussa spada → błąd) |