Глава 3 — Настройки
Окно настроек открывается через RadianceKit → Settings… или стандартное клавиатурное сокращение ⌘,. Оно содержит две вкладки: General и AI Helpers. В отличие от значений Инспектора из главы 2, настройки в этом окне действуют глобально для приложения (для всех проектов) — они сохраняются и переживают перезапуск приложения. Вкладка General группирует четыре содержательные секции: Interface, Viewport, Training и экспериментальную секцию для уменьшения «летающих» объектов на улице. Вкладка AI Helpers включает on-device ML-помощников (Vision, CoreML) для предобработки SfM и тренировки.
Прежних элементов управления для совместного включения или выключения всех AI Helpers в текущей версии больше нет — они здесь не документируются. Прежняя область «Coming Soon» для ещё не поставляемых помощников также удалена и здесь не упоминается.
Вкладка General

S1Режим по умолчанию
ГДЕ
Settings → General → Interface → Default Mode picker. Bound:. По умолчанию: .simple.
ТЕХНИЧЕСКИ
Управляет тем, в каком из двух режимов UI приложение открывается при следующем запуске. «Simple Mode» — это направляемый рабочий процесс мастера из 4 шагов (Import → Processing → Preview → Export, документирован в главе 10 под Z1–Z4), «Expert Mode» — классическая трёхпанельная раскладка с Navigator, 3D Viewport и Expert Inspector из главы 2. Значение запоминается между перезапусками. Эффект идентичен меню Mode → Simple Mode (⌘1) / Mode → Expert Mode (⌘2), за исключением того, что меню переключает текущую сессию, а этот picker задаёт значение по умолчанию для будущих сессий. Оба режима обращаются к одному и тому же состоянию проекта — проекты, камеры и конфигурация обучения сохраняются при переключении режимов. Специфичные для режима кнопки панели инструментов перерендериваются немедленно.
S2Язык
ГДЕ
Settings → General → Interface → Language picker. Bound:. По умолчанию: .system (следует языку macOS).
ТЕХНИЧЕСКИ
Выбирает язык отображения всего UI приложения независимо от системного языка macOS. RadianceKit локализован на 17 языков (de, en, pl, en-AU, ar-SA, плюс 12 других). При значении «System» приложение следует языку macOS. При явном выборе языковая настройка запоминается между перезапусками; полный эффект обычно требует перезапуска приложения, поскольку бандлы локализации загружаются только при старте. Все 298 задокументированных ключей локализации в проекте учитываются, включая все тексты в подвидах и подсказках помощи.
S3Фон Viewport
ГДЕ
Settings → General → Viewport → Background picker. Bound:. По умолчанию: .darkGray (RGB 0.1, 0.1, 0.1).
ТЕХНИЧЕСКИ
Задаёт цвет фона по умолчанию для 3D Viewport. Три варианта: «Dark Gray» (RGB 0.1, 0.1, 0.1 — по умолчанию), «Black» (0, 0, 0) и «White» (1, 1, 1). Настройка фиксирует значение по умолчанию для новых проектов и сессий между перезапусками и одновременно немедленно обновляет работающий рендерер Metal. Идентичные опции находятся в меню Viewport → Background (M21, M22, M23), но picker настроек задаёт значение по умолчанию, а меню переключает текущее отображение. Важно для скриншотов и демо-видео: белый фон сильнее выделяет зелёные/синие floaters, тёмный фон лучше для чистых render-захватов.
S4Авто-вращение после обучения
ГДЕ
Settings → General → Viewport → переключатель «Auto-Rotate After Training». Bound:. По умолчанию: false.
ТЕХНИЧЕСКИ
Запускает непрерывное вращение камеры Viewport вокруг центра сцены сразу после окончания обучения (скорость вращения по умолчанию ~0.3 rad/s). Практически полезно для демо-сессий, A/B-сравнений и для немедленной оценки с обзора 360°, образовались ли «floaters» на краю сцены. Эффект визуально идентичен меню Viewport → Toggle Auto-Rotation (M16, ⌘⌥T), за исключением того, что этот переключатель срабатывает автоматически после окончания обучения, а не вручную. Может быть прерван в любой момент через меню или щелчком в Viewport (пауза вращения). Не влияет на производительность обучения — вращение запускается только после его окончания.
S5Интервал живого предпросмотра
ГДЕ
Settings → General → Training → Live Preview picker. Bound: AppState.trainingConfig.livePreviewInterval. По умолчанию: 0 (Off).
ТЕХНИЧЕСКИ
Определяет интервал итераций, на котором текущий снимок обучения рендерится в 3D Viewport. Четыре дискретных значения: 0 («Off»), 50, 250, 1000 итераций. С активным Live Preview тренер копирует буфер Gaussian с GPU в отдельный render-буфер и триггерит перерисовку Viewport. С «Off» Viewport обновляется только после завершения обучения. Цена производительности: каждые 50 итераций — на ~5–10 % медленнее на M3 Ultra, каждые 250 итераций — ~1–2 % медленнее, каждые 1000 итераций — неизмеримо. Накладные расходы памяти — постоянные ~2 ГБ для snapshot-буфера, независимо от интервала. Значение служит как значение по умолчанию для новых тренировок; после запуска обучения Training Inspector показывает фактическое живое значение запущенной тренировки. На интервале 50 визуальное впечатление — плавный «рост» облака точек, на 1000 выглядит рывками.
S6Задержка throttle
ГДЕ
Settings → General → Training → Throttle picker. Bound: AppState.trainingConfig.throttleDelayMs. По умолчанию: 0 (Off).
ТЕХНИЧЕСКИ
Вставляет искусственную задержку в миллисекундах между итерациями обучения. Четыре дискретных значения: 0 («Off»), 2 («Light»), 5 («Moderate»), 10 («Eco»). Назначение: при более долгих тренировках (несколько часов) GPU иначе был бы загружен на 100 %, что приводит к заметно более медленному системному UI (курсор мыши заедает, другие приложения становятся вялыми). Задержка throttle даёт GPU паузы, в которые могут выполняться другие задачи. Цена производительности значительна: при throttle 5 мс типичная 40K-тренировка длится примерно на 50–80 % дольше, чем без throttle. В режиме производительности «Eco» (10 мс) задержка на итерацию больше самой итерации — в 2–3 раза медленнее. При активном throttle под picker появляется примечание: «Throttle is on. Training will be slower than usual.» Само приложение не реагирует заметно лучше — выигрывают только другие приложения.
S7Маскирование неба
ГДЕ
Settings → General → Experimental — Outdoor Floater Reduction → переключатель «Sky Masking». Bound: AppState.trainingConfig.skyMaskingEnabled. По умолчанию: false.
ТЕХНИЧЕСКИ
Активирует pre-training сегментацию пикселей неба на основе Apple Vision. Перед стартом обучения для каждой входной камеры через Apple Vision foreground mask (Sky = Background) извлекается область неба и назначается соответствующей камере как per-pixel-маска. Во время обучения вклад loss на пиксель умножается на дополнение к Sky Masking — пиксели неба вносят 0 в градиент, так что Gaussians, проецирующиеся в небо, не получают сигналов оптимизации и поэтому не «уплотняются» и не «ярчают». Существенно снижает floaters (тёмные сгустки в небе) в уличных/дроновых сценах. Стоит ~3 % регрессии L1 в классической 40K-тренировке (см. memory/dev_outdoor-floater-reduction.md). Полезно только для уличных сцен с явно распознаваемым небом; для комнатных сцен или белого фона сегментация неба определяет неправильные области и блокирует валидные сигналы loss. В отличие от других экспериментальных переключателей, значение не запоминается между перезапусками приложения — при следующем старте приложения снова выключено.
S8Очистка floater в середине обучения
ГДЕ
Settings → General → Experimental — Outdoor Floater Reduction → переключатель «Mid-Training Floater Cleanup». Bound:. По умолчанию: false.
ТЕХНИЧЕСКИ
Включает два дополнительных прохода density-control во время Classic 40K-тренировки (предустановка «P4 Quality»): на итерации 20 000 и 30 000. Оба прохода сканируют все Gaussians по трём критериям: (a) очень низкая непрозрачность (по умолчанию 0.005), (b) крошечный screen-space-размер, (c) нет вкладов в loss за последние 1000 итераций. Gaussians, отвечающие всем трём условиям, удаляются. Эффект: ~5–15 % меньше Gaussians в конце обучения, заметно меньше тёмных сгустков в небе для дроновых/уличных сцен. Стоит ~1–3 % регрессии L1 на ближних комнатных сценах, поэтому не включено по умолчанию. Значение запоминается между перезапусками (в отличие от S7). Две итерации очистки (20K, 30K) зашиты жёстко и в настоящее время не могут быть изменены через UI; для более коротких тренировок (напр. P2 Preview 5K) переключатель не имеет эффекта, потому что никогда не достигает отметок итераций. Подробности: memory/dev_outdoor-floater-reduction.md.
S9Уменьшить вытянутые Gaussians
ГДЕ
Settings → General → Experimental — Outdoor Floater Reduction → переключатель «Reduce Elongated Gaussians». Bound:. По умолчанию: false.
ТЕХНИЧЕСКИ
Активирует дополнительную регуляризацию анизотропии в loss-функции. Во время оптимизации для каждого Gaussian вычисляется анизотропия как отношение между наибольшей и наименьшей осями масштаба. Если отношение превышает порог (, по умолчанию 10.0), к loss добавляется penalty-член, масштабированный пропорционально превышению. Эффект: игольчатые Gaussians, типичные для cross-hatch- и streak-артефактов в траве и густой листве, либо принудительно приводятся к более округлым формам в ходе обучения, либо удаляются. В обмен — ~6 % регрессии L1 на стандартных комнатных сценах, нет эффекта на строгих сканах объектов. Sweet spot — съёмки полётом дрона над растительностью. Записывает в, сохраняется через. Реализация в optimizer.metal как дополнительный penalty в вычислении градиента. См. примечание в memory проекта: V549d — shipped-версия; более поздняя V549f с более агрессивной регуляризацией масштаба была отменена из-за катастрофической регрессии. Подробности: memory/dev_outdoor-floater-reduction.md и memory/dev_v549f-needle-reduction.md.
S10Реконструировать купол неба
ГДЕ
Settings → General → Experimental — Outdoor Floater Reduction → переключатель «Reconstruct Sky Dome». Bound:. По умолчанию: false.
ТЕХНИЧЕСКИ
Активирует pre-training проекцию Sky Dome (V549e MVP). После SfM и перед запуском обучения для каждой входной камеры извлекается shared с S7 маска неба Apple Vision из изображения, пиксели неба un-проецируются с помощью intrinsics камеры на виртуальную сферическую поверхность (радиус по умолчанию — 8× радиус сцены). На этой сфере инициализируется ~5000 новых Gaussians с цветовыми средними из спроецированных пикселей неба, очень большим масштабом (1.0 в единицах сцены) и начальной непрозрачностью 0.95. Эти 5000 Gaussians не являются маской неба в классическом смысле — они тренируются как все остальные, но высокая начальная непрозрачность удерживает их в тонкой оболочке. Результат: для 360°-novel-views в уличных/дроновых сценах появляются реальные цвет неба и облачные структуры вместо тёмных сгустков конфетти. Значение запоминается между перезапусками. Полезно только для уличных сцен с покрытием камер не менее 360°; для чисто объектных съёмок без обзора неба не имеет эффекта. Статус: экспериментальное, более широкая A/B-валидация на большем количестве уличных наборов ещё предстоит.
Вкладка AI Helpers

S11AI Helpers включены (Master)
ГДЕ
Settings → AI Helpers → первая секция → переключатель «AI Helpers enabled». Bound:. По умолчанию: true.
ТЕХНИЧЕСКИ
Главный переключатель над всеми функциями AI Helpers в конвейере. Когда выключен, конвейер импорта и SfM полностью пропускает все этапы ML-предобработки — никаких вызовов Apple Vision, никакой загрузки моделей CoreML, никакого пробуждения NPU. Когда включен, опрашиваются отдельные подпереключатели (S12–S14). Значение запоминается между перезапусками. Затрагивает следующие этапы: (a) предварительный контроль качества кадра перед SfM (S12), (b) обнаружение замыкания петли (S13), (c) auto sky masking как значение по умолчанию для новых тренировок (S14). Важно: когда выключен, три подпереключателя деактивированы и визуально серые. Сноска в нижней части подчёркивает, что все AI Helpers работают строго on-device — никакой загрузки изображений, никакой облачной обработки. Гарантия приватности обеспечивается исключительным использованием фреймворка Apple Vision (локально на Neural Engine) и моделей CoreML, которые поставляются прямо в бандле приложения.
S12Контроль качества кадра
ГДЕ
Settings → AI Helpers → секция Available → переключатель «Frame quality check». Bound:. По умолчанию: true.
ТЕХНИЧЕСКИ
Активирует screener качества кадра (фаза 3.11), который анализирует каждый импортированный кадр перед вызовом SfM. Шаги конвейера на кадр: (a) Laplacian variance-фильтр из Apple Vision (обнаружение размытия — порог ~150), (b) гистограмма-based проверка над-/недо-экспозиции (порог: >5 % пикселей на 0 или 255), (c) blank frame detect (стандартное отклонение < 5 по всем пикселям). Кадры, проходящие все три проверки, пропускаются напрямую. Кадры, не прошедшие хотя бы одну проверку, триггерят модальный диалог подтверждения, который перечисляет каждый проблемный кадр с миниатюрой и причиной и спрашивает, нужно ли его удалить. Важно: никакого автоматического удаления — диалог всегда требуется, окончательное решение остаётся за пользователем. Производительность: ~50 мс на кадр на M3 Ultra, работает параллельно. Когда выключен, все кадры передаются в SfM без проверки. Если мастер (S11) деактивирован, этот переключатель визуально серый и не имеет эффекта. Статус поставки по memory: SHIPPED 2026-05-23.
S13Обнаружение замыкания петли
ГДЕ
Settings → AI Helpers → секция Available → переключатель «Loop closure detection». Bound:. По умолчанию: true.
ТЕХНИЧЕСКИ
Активирует обнаружение замыкания петли на основе feature-print Apple Vision. Для каждого импортированного кадра вычисляется вектор признаков размерностью ~768, представляющий нейронное embedding содержания изображения. Все feature-prints затем попарно сравниваются через cosine-similarity. Пары с similarity > 0.85 и расстоянием по индексам кадров > 50 (т.е. несоседние кадры) идентифицируются как «loop closure candidates» и записываются в sidecar JSONL-файл в папке проекта. Только информационно — импортированная последовательность изображений не модифицируется. Назначение: даёт SfM-решателю (особенно COLMAP) подсказку, что эти кадры кластеризуются в 3D- пространстве. Для нативного SfM информация sidecar пока только документационная; COLMAP использует подсказки внутренне через custom matches-файл (ручная интеграция возможна, не подключается автоматически). Производительность: ~200 мс на кадр на M3 Ultra, работает параллельно. Когда выключен, feature prints не генерируются. Если мастер (S11) деактивирован, визуально серый.
S14Авто-маскирование неба (AI)
ГДЕ
Settings → AI Helpers → секция Available → переключатель «Auto sky masking». Bound: UserDefaults.standard.bool(forKey: "aiHelpersSkyMaskingDefault") (через custom binding). По умолчанию: false.
ТЕХНИЧЕСКИ
Задаёт значение по умолчанию для настройки Sky Masking из S7 в новых конфигурациях обучения. В отличие от S11–S13, сама настройка Sky Masking живёт на сессии обучения и не запоминается между перезапусками приложения (см. S7). Чтобы UI AI Helpers всё же мог предложить устойчивое значение по умолчанию для «новых тренировок», существует это shadow- значение: оно запоминается между перезапусками и берётся как начальное значение по умолчанию для Sky Masking при настройке новой тренировки (напр. импорт нового проекта). Если мастер (S11) деактивирован, визуально серый.
Зеркальные настройки Инспектора
Остальные записи настроек (S17–S33) из инвентарной таблицы являются зеркалами из Expert Inspector и документируются в главе 2 (элементы управления Инспектора I12–I29). Они физически не появляются в окне настроек, а были перечислены в инвентаре только потому, что выполняются через свойства TrainingConfig, которые сохраняются через и поэтому формально имеют характер настроек. Содержательные объяснения — см. там.
Когда что?
| Настройка | Область | Сохранение |
|---|---|---|
| S1 Default Mode | Глобально для приложения | Перезапуск |
| S2 Language | Глобально для приложения | Перезапуск |
| S3 Viewport Background | Глобально (по умолч.) + Runtime | Перезапуск |
| S4 Auto-Rotate After Training | Глобально для приложения | Перезапуск |
| S5 Live Preview Interval | По умолчанию для новых тренировок | Перезапуск |
| S6 Throttle Delay | По умолчанию для новых тренировок | Перезапуск |
| S7 Sky Masking | Текущая тренировка | Только сессия |
| S8 Mid-Training Floater Cleanup | Глобально для приложения | Перезапуск |
| S9 Reduce Elongated Gaussians | Глобально для приложения | Перезапуск |
| S10 Reconstruct Sky Dome | Глобально для приложения | Перезапуск |
| S11 AI Helpers Master | Глобально для приложения | Перезапуск |
| S12 Frame quality check | Глобально для приложения | Перезапуск |
| S13 Loop closure detection | Глобально для приложения | Перезапуск |
| S14 Auto sky masking | По умолчанию для новых тренировок | Перезапуск |
«Глобально для приложения» = затрагивает все проекты. «По умолчанию для новых тренировок» = затрагивает только следующую создаваемую тренировку; идущие сессии остаются без изменений. «Текущая тренировка» = вступает в силу немедленно для текущей конфигурации обучения, но не сохраняется без явного повторного импорта.