Rozdział 3 — Ustawienia
Okno ustawień otwiera się przez RadianceKit → Ustawienia... lub standardowy skrót klawiszowy ⌘,. Zawiera dwie karty: General i AI Helpers. W przeciwieństwie do wartości Inspectora z rozdziału 2 ustawienia z tego okna działają globalnie dla aplikacji (we wszystkich projektach) — są trwale zapisywane i przeżywają restarty aplikacji. Karta General grupuje cztery sekcje tematyczne: Interface, Viewport, Training i eksperymentalna sekcja redukcji floaterów plenerowych. Karta AI Helpers włącza pomocniki on-device do machine learningu (Vision, CoreML) dla wstępnego przetwarzania SfM i treningu.
Wcześniejsze elementy sterujące do zbiorczego włączania lub wyłączania wszystkich AI-Helpers w obecnej wersji już nie istnieją — odpowiednio nie są tu dokumentowane. Również wcześniejszy obszar „Coming Soon" dla jeszcze niewysłanych pomocników został usunięty i nie jest tu referowany.
Karta General

S1Default Mode
GDZIE
Settings → General → Interface → selektor Default Mode. Bound:. Default: .simple.
TECHNICZNIE
Steruje, w którym z dwóch trybów UI aplikacja otwiera się po następnym uruchomieniu. „Simple Mode" to prowadzony przepływ kreatora w 4 krokach (Import → Processing → Preview → Export, udokumentowany w rozdziale 10 pod Z1–Z4), „Expert Mode" to klasyczny układ trzech paneli z nawigatorem, widokiem 3D i Inspectorem ekspertskim z rozdziału 2. Wartość jest zapamiętywana między restartami. Identyczny efekt jak menu Mode → Simple Mode (⌘1) / Mode → Expert Mode (⌘2), z tym że menu przełącza bieżącą sesję, podczas gdy ten selektor ustala wartość domyślną dla przyszłych sesji. Oba tryby sięgają do tego samego stanu projektu — projekty, kamery i konfiguracja treningu pozostają zachowane przy zmianie trybu. Specyficzne dla trybu przyciski paska narzędzi są natychmiast ponownie renderowane.
S2Language
GDZIE
Settings → General → Interface → selektor Language. Bound:. Default: .system (podąża za językiem macOS).
TECHNICZNIE
Wybiera język wyświetlania całego UI aplikacji, niezależnie od języka systemu macOS. RadianceKit jest zlokalizowany w 17 językach (de, en, pl, en-AU, ar-SA, plus 12 dalszych). Przy „System" aplikacja podąża za językiem macOS. Przy jawnym wyborze ustawienie języka jest zapamiętywane między restartami; pełne działanie wymaga z reguły restartu aplikacji, ponieważ pakiety lokalizacji są ładowane tylko przy starcie. 298 udokumentowanych kluczy lokalizacji w projekcie są wszystkie uwzględniane, włącznie ze wszystkimi tekstami w sub-widokach i podpowiedziach pomocy.
S3Viewport Background
GDZIE
Settings → General → Viewport → selektor Background. Bound:. Default: .darkGray (RGB 0.1, 0.1, 0.1).
TECHNICZNIE
Ustawia domyślny kolor tła dla widoku 3D. Trzy opcje: „Dark Gray" (RGB 0.1, 0.1, 0.1 — domyślne), „Black" (0, 0, 0) i „White" (1, 1, 1). Ustawienie utrwala domyślną wartość dla nowych projektów i sesji przez restarty i jednocześnie natychmiast aktualizuje działający renderer Metal. Identyczne opcje znajdują się w menu Viewport → Background (M21, M22, M23), ale selektor ustawień ustawia domyślne, podczas gdy menu przełącza bieżący wyświetlany obraz. Ważne dla zrzutów ekranu i wideo demonstracyjnych: białe tła silniej uwypuklają zielone/niebieskie floatery, ciemne tła są lepsze do czystych ujęć renderowanych.
S4Auto-Rotate After Training
GDZIE
Settings → General → Viewport → przełącznik „Auto-Rotate After Training". Bound:. Default: false.
TECHNICZNIE
Startuje bezpośrednio po zakończeniu treningu ciągłą rotację typu turntable kamery widoku wokół środka ciężkości sceny (standardowa prędkość obrotu ~0.3 rad/s). Praktycznie użyteczne do sesji demonstracyjnych, porównań A/B oraz do bezpośredniej oceny w widoku 360°, czy na brzegu sceny powstały „floatery". Efekt jest wizualnie identyczny z menu Viewport → Toggle Auto-Rotation (M16, ⌘⌥T), z tym że przełącznik tutaj wyzwala zachowanie automatycznie po zakończeniu treningu zamiast ręcznie. Można w dowolnej chwili przerwać przez menu lub kliknięcie w widok (co pauzuje rotację). Nie ma wpływu na wydajność treningu — rotacja startuje dopiero, gdy trening jest gotowy.
S5Live Preview Interval
GDZIE
Settings → General → Training → selektor Live Preview. Bound: AppState.trainingConfig.livePreviewInterval. Default: 0 (Off).
TECHNICZNIE
Określa, w jakim odstępie iteracji bieżący snapshot treningu jest renderowany do widoku 3D. Cztery dyskretne wartości: 0 („Off"), 50, 250, 1000 iteracji. Przy aktywnym Live Preview trener kopiuje bufor gaussianów z GPU do osobnego bufora renderowania i wyzwala odświeżenie widoku. Przy „Off" widok jest aktualizowany dopiero po zakończeniu treningu. Koszt wydajności: co 50 iteracji ~5–10% wolniej na M3 Ultra, co 250 iteracji ~1–2% wolniej, co 1000 iteracji niemierzalne. Narzut pamięci stały ~2 GB dla bufora snapshotu, niezależnie od interwału. Wartość służy jako domyślna dla nowych treningów; po starcie treningu Inspector treningu pokazuje rzeczywistą bieżącą wartość tego treningu. Przy interwale 50 wrażenie wizualne to płynne „dorastanie" chmury punktów, przy 1000 wygląda to skokowo.
S6Throttle Delay
GDZIE
Settings → General → Training → selektor Throttle. Bound: AppState.trainingConfig.throttleDelayMs. Default: 0 (Off).
TECHNICZNIE
Wstawia między iteracjami treningu sztuczne opóźnienie w milisekundach. Cztery dyskretne wartości: 0 („Off"), 2 („Light"), 5 („Moderate"), 10 („Eco"). Sens: przy dłuższych treningach (kilka godzin) GPU jest inaczej obciążone do 100%, co prowadzi do zauważalnie wolniejszego UI systemu (kursor myszy zacina się, inne aplikacje stają się ociężałe). Opóźnienie throttle daje GPU przerwy, w których mogą być wykonywane inne zadania. Koszt wydajności jest znaczny: przy 5 ms throttle typowy trening 40K trwa około 50–80% dłużej niż bez throttle. W trybie wydajności „Eco" (10 ms) opóźnienie na iterację jest dłuższe niż sama iteracja — współczynnik 2–3× wolniej. Przy aktywnym throttle pod selektorem pojawia się wskazówka: „Throttle is on. Training will be slower than usual." Sama aplikacja nie reaguje zauważalnie lepiej — tylko inne aplikacje korzystają.
S7Sky Masking
GDZIE
Settings → General → Experimental — Outdoor Floater Reduction → przełącznik „Sky Masking". Bound: AppState.trainingConfig.skyMaskingEnabled. Default: false.
TECHNICZNIE
Aktywuje pre-trainingową segmentację pikseli nieba opartą na Apple Vision. Przed startem treningu dla każdej kamery wejściowej obszar nieba jest ekstrahowany przez maskę pierwszego planu Apple Vision (Sky = Background) i przypisywany jako maska na piksel do danej kamery. Podczas treningu wkład w loss na piksel jest mnożony przez dopełnienie maski nieba — piksele nieba wnoszą 0 do gradientu, więc gaussiany rzutujące w niebo nie otrzymują sygnałów optymalizacji i tym samym nie stają się „gęstsze" ani „jaśniejsze". Znacząco redukuje floatery (ciemne grudki na niebie) w scenach plenerowych/dronowych. Kosztuje ~3% regresji L1 przy klasycznym treningu 40K (zobacz memory/dev_outdoor-floater-reduction.md). Sensowne tylko w scenach plenerowych z wyraźnie widocznym niebem; w scenach wnętrz lub z białym tłem segmentacja nieba identyfikuje błędne obszary i blokuje ważne sygnały loss. W przeciwieństwie do pozostałych eksperymentalnych przełączników wartość nie jest zapamiętywana między restartami aplikacji — przy następnym uruchomieniu jest znów wyłączona.
S8Mid-Training Floater Cleanup
GDZIE
Settings → General → Experimental — Outdoor Floater Reduction → przełącznik „Mid-Training Floater Cleanup". Bound:. Default: false.
TECHNICZNIE
Włącza przy treningu Classic-40K (ustawienie „P4 Quality") dwa dodatkowe przebiegi kontroli gęstości: przy iteracji 20,000 i przy iteracji 30,000. Oba przebiegi przeszukują wszystkie gaussiany według trzech kryteriów: (a) bardzo niskie opacity (standard 0.005), (b) niewielki rozmiar w przestrzeni ekranu, (c) brak wkładów do loss w ostatnich 1000 iteracjach. Gaussiany spełniające wszystkie trzy warunki są usuwane. Efekt: ~5–15% mniej gaussianów na końcu treningu, widocznie mniej ciemnych grudek na niebie w scenach dronowych/plenerowych. Kosztuje ~1–3% regresji L1 w scenach wnętrz close-up, dlatego nie aktywowane domyślnie. Wartość jest zapamiętywana między restartami (w przeciwieństwie do S7). Dwie iteracje cleanupu (20K, 30K) są twardo zdefiniowane i obecnie nie można ich zmienić przez UI; przy krótszych treningach (np. P2 Preview 5K) przełącznik nie ma efektu, ponieważ nigdy nie dochodzi do oznaczeń iteracji. Szczegóły: memory/dev_outdoor-floater-reduction.md.
S9Reduce Elongated Gaussians
GDZIE
Settings → General → Experimental — Outdoor Floater Reduction → przełącznik „Reduce Elongated Gaussians". Bound:. Default: false.
TECHNICZNIE
Aktywuje dodatkową regularyzację anizotropii w członie loss. Podczas optymalizacji dla każdego gaussiana liczy się anizotropię jako stosunek między największą a najmniejszą osią skalowania. Gdy stosunek przekracza próg (standard 10.0), do loss dodawany jest człon kary skalujący się proporcjonalnie do przekroczenia. Efekt: gaussiany igliste, typowe dla artefaktów cross-hatch i pasm w trawie i gęstym listowiu, są podczas treningu albo zmuszane do bardziej okrągłych form, albo usuwane. W zamian ~6% regresji L1 w standardowych scenach wnętrz, brak efektu przy ścisłych Object-Capture. Sweet spot przy ujęciach z lotów dronem nad roślinnością. Zapisuje na, persistowane przez. Implementacja w optimizer.metal jako dodatkowa kara w obliczaniu gradientu. Zobacz wskazówkę w pamięci projektu: V549d była wysłaną wersją, późniejsze V549f z bardziej agresywną Scale-Reg zostało wycofane z powodu katastrofalnej regresji. Szczegóły: memory/dev_outdoor-floater-reduction.md i memory/dev_v549f-needle-reduction.md.
S10Reconstruct Sky Dome
GDZIE
Settings → General → Experimental — Outdoor Floater Reduction → przełącznik „Reconstruct Sky Dome". Bound:. Default: false.
TECHNICZNIE
Aktywuje projekcję Sky-Dome przed treningiem (MVP V549e). Po SfM i przed startem treningu dla każdej kamery wejściowej maska nieba Apple Vision wspólna z S7 jest ekstrahowana z obrazu, piksele nieba są ze współczynnikami wewnętrznymi kamery odrzutowywane na powierzchnię wirtualnej kuli (standardowy promień 8× promień sceny). Na tej kuli inicjalizowanych jest ~5000 nowych gaussianów ze średnimi kolorami z odrzutowanych pikseli nieba, bardzo dużą skalą (1.0 w jednostkach sceny) i początkową opacity 0.95. Te 5000 gaussianów to nie jest klasyczna maska nieba — są trenowane jak wszystkie inne, ale przez wysoką początkową opacity pozostają w cienkiej skorupie. Wynik: przy widokach Novel-View 360° w scenach plenerowych/dronowych zamiast ciemnych grudek confetti pojawiają się faktyczne kolory nieba i struktury chmur. Wartość jest zapamiętywana między restartami. Sensowne tylko w scenach plenerowych z co najmniej 360° pokrycia kamer; przy czystych Object-Capture bez widoku nieba nie ma efektu. Status: eksperymentalne, szersza walidacja A/B na dalszych zestawach plenerowych jeszcze przed nami.
Karta AI Helpers

S11AI Helpers enabled (Master)
GDZIE
Settings → AI Helpers → pierwsza sekcja → przełącznik „AI Helpers enabled". Bound:. Default: true.
TECHNICZNIE
Główny przełącznik nad wszystkimi funkcjami AI-Helpers w potoku. Gdy wyłączony, potok importu i SfM całkowicie pomija wszystkie etapy wstępnego przetwarzania oparte na ML — brak wywołania Apple Vision, brak ładowania modelu CoreML, brak przebudzenia NPU. Gdy włączony, konsultowane są indywidualne podprzełączniki (S12–S14). Wartość jest zapamiętywana między restartami. Ma wpływ na następujące etapy: (a) Frame-Quality-Pre-Check przed SfM (S12), (b) wykrywanie zamknięcia pętli (S13), (c) Auto-Sky-Masking jako wartość domyślna dla nowych treningów (S14). Ważne: gdy wyłączony, trzy podprzełączniki są dezaktywowane i wizualnie wyszarzone. Wskazówka w stopce podkreśla, że wszystkie AI-Helpers działają ściśle on-device — brak przesyłania obrazów, brak przetwarzania w chmurze. Gwarancja prywatności wynika z użycia wyłącznie frameworku Apple Vision (lokalnie na Neural Engine) oraz modeli CoreML, które leżą bezpośrednio w pakiecie aplikacji.
S12Frame quality check
GDZIE
Settings → AI Helpers → sekcja Available → przełącznik „Frame quality check". Bound:. Default: true.
TECHNICZNIE
Aktywuje screener jakości klatek (Faza 3.11), który przed wywołaniem SfM analizuje każdą zaimportowaną klatkę. Kroki potoku na klatkę: (a) filtr wariancji Laplasjana z Apple Vision (wykrywanie rozmycia — próg ~150), (b) sprawdzenie przeoraku / niedoekspozycji oparte na histogramie (próg: >5% pikseli przy 0 lub 255), (c) wykrywanie pustych klatek (odchylenie standardowe < 5 na wszystkich pikselach). Klatki przechodzące wszystkie trzy testy idą bezpośrednio. Klatki nie przechodzące co najmniej jednego testu wyzwalają modalny dialog potwierdzenia, który listuje każdą problematyczną klatkę z miniaturą i uzasadnieniem i pyta, czy usunąć. Ważne: brak automatycznego usuwania — dialog jest zawsze wymagany, użytkownik zachowuje ostateczną decyzję. Wydajność: ~50 ms na klatkę na M3 Ultra, działa równolegle. Gdy wyłączony, wszystkie klatki idą bez sprawdzenia do SfM. Przy wyłączonym Masterze (S11) ten przełącznik jest wizualnie wyszarzony i bez efektu. Status wysłany według pamięci: SHIPPED 2026-05-23.
S13Loop closure detection
GDZIE
Settings → AI Helpers → sekcja Available → przełącznik „Loop closure detection". Bound:. Default: true.
TECHNICZNIE
Aktywuje wykrywanie zamknięcia pętli oparte na Apple Vision Feature-Print. Dla każdej zaimportowanej klatki obliczany jest ~768-wymiarowy wektor cech, reprezentujący osadzenie neuronowe zawartości obrazu. Następnie wszystkie feature-prints są parami porównywane przez podobieństwo cosinusowe. Pary z podobieństwem > 0.85 i dystansem w indeksie klatek > 50 (czyli klatki niesąsiadujące) są identyfikowane jako „kandydaci na zamknięcie pętli" i zapisywane do sidecar pliku JSONL w folderze projektu. Tylko informacyjne — zaimportowana sekwencja obrazów nie jest modyfikowana. Sens: daje solverowi SfM (zwłaszcza COLMAP) wskazówkę, że te klatki w przestrzeni 3D należą do siebie. Dla natywnego SfM informacja sidecar jest obecnie tylko dokumentująca; COLMAP używa wskazówek wewnętrznie przez plik niestandardowych dopasowań (integracja ręczna możliwa, nie podpięta automatycznie). Wydajność: ~200 ms na klatkę na M3 Ultra, działa równolegle. Gdy wyłączony, nie są generowane feature-printy. Przy wyłączonym Masterze (S11) wizualnie wyszarzony.
S14Auto sky masking (AI)
GDZIE
Settings → AI Helpers → sekcja Available → przełącznik „Auto sky masking". Bound: UserDefaults.standard.bool(forKey: "aiHelpersSkyMaskingDefault") (przez Custom-Binding). Default: false.
TECHNICZNIE
Ustawia wartość domyślną dla ustawienia Sky-Masking z S7 przy nowych konfiguracjach treningu. W przeciwieństwie do S11–S13 właściwe ustawienie Sky-Masking żyje na sesję treningową i nie jest zapamiętywane między restartami aplikacji (zobacz S7). Aby UI AI-Helpers mimo to mogło zaoferować trwałą wartość domyślną dla „nowych treningów", istnieje ta wartość cienia: jest zapamiętywana między restartami i przy setupie nowego treningu (np. import nowego projektu) przejmowana jako początkowa wartość domyślna dla Sky-Masking. Przy wyłączonym Masterze (S11) wizualnie wyszarzony.
Ustawienia lustra Inspectora
Pozostałe wpisy ustawień (S17–S33) z tabeli inwentarza są lustrami z Inspectora ekspertskiego i są udokumentowane w rozdziale 2 (kontrolki Inspectora I12–I29). Nie pojawiają się fizycznie w oknie Settings, lecz były wymienione w inwentarzu tylko dlatego, że działają przez właściwości TrainingConfig, które są persistowane przez i o tyle formalnie mają charakter ustawień. Po wyjaśnienia treściowe patrz tam.
Kiedy co?
| Ustawienie | Zakres działania | Trwałość |
|---|---|---|
| S1 Default Mode | Aplikacja globalnie | Restart aplikacji |
| S2 Language | Aplikacja globalnie | Restart aplikacji |
| S3 Viewport Background | Aplikacja globalnie (Default) + Runtime | Restart aplikacji |
| S4 Auto-Rotate After Training | Aplikacja globalnie | Restart aplikacji |
| S5 Live Preview Interval | Domyślne dla nowych treningów | Restart aplikacji |
| S6 Throttle Delay | Domyślne dla nowych treningów | Restart aplikacji |
| S7 Sky Masking | Bieżący trening | tylko sesja |
| S8 Mid-Training Floater Cleanup | Aplikacja globalnie | Restart aplikacji |
| S9 Reduce Elongated Gaussians | Aplikacja globalnie | Restart aplikacji |
| S10 Reconstruct Sky Dome | Aplikacja globalnie | Restart aplikacji |
| S11 AI Helpers Master | Aplikacja globalnie | Restart aplikacji |
| S12 Frame quality check | Aplikacja globalnie | Restart aplikacji |
| S13 Loop closure detection | Aplikacja globalnie | Restart aplikacji |
| S14 Auto sky masking | Domyślne dla nowych treningów | Restart aplikacji |
Aplikacja globalnie = działa na wszystkie projekty. Domyślne dla nowych treningów = działa tylko na następny utworzony trening, bieżące sesje pozostają niezmienione. Bieżący trening = działa natychmiast na bieżącą konfigurację treningu, ale nie persistuje bez jawnego reimportu.