Capítulo 3 — Ajustes
La ventana de ajustes se abre con RadianceKit → Settings… o con el atajo de teclado estándar ⌘,. Contiene dos pestañas: General y AI Helpers. A diferencia de los valores del Inspector del Capítulo 2, los ajustes de esta ventana tienen efecto a nivel de aplicación (en todos los proyectos) — se persisten y sobreviven al reinicio de la app. La pestaña General agrupa cuatro secciones de contenido: Interfaz, Vista, Entrenamiento y una sección experimental para la reducción de floaters en exteriores. La pestaña AI Helpers habilita los asistentes de aprendizaje automático on-device (Vision, CoreML) para el preprocesado de SfM y entrenamiento.
Los controles anteriores para habilitar o deshabilitar conjuntamente todos los AI Helpers ya no existen en la versión actual — por eso no se documentan aquí. La antigua zona "Coming Soon" para asistentes aún no entregados también se ha eliminado y no se referencia aquí.
Pestaña General

S1Modo predeterminado
DÓNDE
Settings → General → Interface → Selector Default Mode. Bound:. Predeterminado: .simple.
TÉCNICO
Controla en cuál de los dos modos de UI se abre la app tras el próximo arranque. "Simple Mode" es el flujo de asistente guiado en 4 pasos (Importar → Procesar → Previsualizar → Exportar, documentado en el Capítulo 10 bajo Z1–Z4), "Expert Mode" el diseño clásico de tres paneles con Navegador, Vista 3D e Inspector experto del Capítulo 2. El valor se recuerda entre reinicios. Efecto idéntico al menú Mode → Simple Mode (⌘1) / Mode → Expert Mode (⌘2), salvo que el menú cambia la sesión en curso mientras este selector establece el predeterminado para sesiones futuras. Ambos modos acceden al mismo estado del proyecto — los proyectos, las cámaras y la configuración de entrenamiento se conservan al cambiar de modo. Los botones de la barra de herramientas específicos de cada modo se renderizan de inmediato.
S2Idioma
DÓNDE
Settings → General → Interface → Selector Language. Bound:. Predeterminado: .system (sigue el idioma de macOS).
TÉCNICO
Selecciona el idioma de visualización de toda la UI de la app, independientemente del idioma del sistema macOS. RadianceKit está localizado en 17 idiomas (de, en, pl, en-AU, ar-SA, más 12 adicionales). Cuando se ajusta a "System", la app sigue al idioma de macOS. Con una elección explícita, el ajuste de idioma se recuerda entre reinicios; el efecto completo normalmente requiere reiniciar la app, porque los paquetes de localización solo se cargan al inicio. Se tienen en cuenta las 298 claves de localización documentadas en el proyecto, incluidos todos los textos en sub-vistas y tooltips de ayuda.
S3Fondo de la vista
DÓNDE
Settings → General → Viewport → Selector Background. Bound:. Predeterminado: .darkGray (RGB 0,1, 0,1, 0,1).
TÉCNICO
Establece el color de fondo predeterminado para la vista 3D. Tres opciones: "Dark Gray" (RGB 0,1, 0,1, 0,1 — predeterminado), "Black" (0, 0, 0) y "White" (1, 1, 1). El ajuste persiste el predeterminado para nuevos proyectos y sesiones entre reinicios y al mismo tiempo actualiza el renderer Metal en ejecución de inmediato. Las mismas opciones se encuentran en el menú Viewport → Background (M21, M22, M23), pero el selector de ajustes define el predeterminado, mientras que el menú cambia la visualización en ejecución. Importante para capturas y vídeos de demostración: los fondos blancos resaltan más los floaters verdes/azules, los fondos oscuros son mejores para capturas de render limpias.
S4Auto-rotar tras el entrenamiento
DÓNDE
Settings → General → Viewport → Conmutador "Auto-Rotate After Training". Bound:. Predeterminado: false.
TÉCNICO
Inicia una rotación de plato giratorio continua de la cámara de la vista alrededor del centroide de la escena inmediatamente tras terminar el entrenamiento (tasa de rotación predeterminada ~0,3 rad/s). Útil en la práctica para sesiones de demostración, comparaciones A/B y para valorar al instante desde una vista 360° si se han formado "floaters" en el borde de la escena. El efecto es visualmente idéntico al menú Viewport → Toggle Auto-Rotation (M16, ⌘⌥T), salvo que este conmutador dispara el comportamiento de forma automática tras el final del entrenamiento, en vez de manualmente. Se puede interrumpir en cualquier momento desde el menú o haciendo clic en la vista (lo que pausa la rotación). No influye en el rendimiento de entrenamiento — la rotación solo se ejecuta cuando termina el entrenamiento.
S5Intervalo de previsualización en vivo
DÓNDE
Settings → General → Training → Selector Live Preview. Bound: AppState.trainingConfig.livePreviewInterval. Predeterminado: 0 (Off).
TÉCNICO
Determina el intervalo de iteraciones al que se renderiza la instantánea de entrenamiento en curso en la vista 3D. Cuatro valores discretos: 0 ("Off"), 50, 250, 1000 iteraciones. Con la previsualización en vivo activa, el entrenador copia el buffer de Gaussianos de la GPU a un buffer de render separado y dispara un redibujado de la vista. Con "Off", la vista solo se actualiza tras completarse el entrenamiento. Coste de rendimiento: cada 50 iteraciones, ~5–10 % más lento en M3 Ultra; cada 250, ~1–2 % más lento; cada 1000, no medible. Sobrecarga de memoria constante ~2 GB para el buffer de instantánea, independientemente del intervalo. El valor sirve como predeterminado para nuevos entrenamientos; tras el inicio del entrenamiento, el Inspector de entrenamiento muestra el valor real en vivo del entrenamiento en curso. Con un intervalo de 50 la impresión visual es un "crecimiento" fluido de la nube de puntos; con 1000 se ve a saltos.
S6Retardo de throttle
DÓNDE
Settings → General → Training → Selector Throttle. Bound: AppState.trainingConfig.throttleDelayMs. Predeterminado: 0 (Off).
TÉCNICO
Inserta un retardo artificial en milisegundos entre iteraciones de entrenamiento. Cuatro valores discretos: 0 ("Off"), 2 ("Light"), 5 ("Moderate"), 10 ("Eco"). Propósito: durante entrenamientos largos (varias horas), la GPU estaría si no al 100 % de uso, lo que provoca una UI del sistema notablemente más lenta (el cursor se entrecorta, otras apps van pesadas). El retardo de throttle da a la GPU pausas en las que pueden ejecutarse otras tareas. El coste de rendimiento es considerable: con 5 ms de throttle, un entrenamiento típico de 40K tarda alrededor de un 50–80 % más que sin throttle. En modo de rendimiento "Eco" (10 ms), el retardo por iteración es mayor que la propia iteración — factor de 2–3× más lento. Con throttle activo, aparece bajo el selector el aviso: "Throttle is on. Training will be slower than usual." La propia app no reacciona notablemente mejor — solo se benefician otras apps.
S7Enmascaramiento de cielo
DÓNDE
Settings → General → Experimental — Outdoor Floater Reduction → Conmutador "Sky Masking". Bound: AppState.trainingConfig.skyMaskingEnabled. Predeterminado: false.
TÉCNICO
Activa la segmentación de píxeles de cielo basada en Apple Vision previa al entrenamiento. Antes de iniciarlo, para cada cámara de entrada se extrae la región de cielo mediante la máscara de primer plano de Apple Vision (Sky = Background) y se asigna como máscara por píxel a la respectiva cámara. Durante el entrenamiento, la contribución del loss por píxel se multiplica por el complemento del enmascaramiento de cielo — los píxeles de cielo contribuyen 0 al gradiente, por lo que los Gaussianos que se proyectan al cielo no reciben señales de optimización y por tanto no se vuelven más "densos" ni más "brillantes". Reduce significativamente los floaters (grupos oscuros en el cielo) en escenas de exteriores o dron. Cuesta una regresión de L1 del ~3 % en el entrenamiento clásico de 40K (véase memory/dev_outdoor-floater-reduction.md). Solo es útil para escenas exteriores con cielo claramente reconocible; en escenas interiores o con fondos blancos, la segmentación de cielo identifica zonas equivocadas y bloquea señales válidas de loss. A diferencia de los otros conmutadores experimentales, el valor no se recuerda entre reinicios de la app — en el siguiente arranque vuelve a estar desactivado.
S8Limpieza de floaters a mitad del entrenamiento
DÓNDE
Settings → General → Experimental — Outdoor Floater Reduction → Conmutador "Mid-Training Floater Cleanup". Bound:. Predeterminado: false.
TÉCNICO
Habilita dos pasadas adicionales de control de densidad durante el entrenamiento Classic de 40K (ajuste preestablecido "P4 Quality"): en la iteración 20,000 y en la 30,000. Ambas pasadas examinan todos los Gaussianos según tres criterios: (a) opacidad muy baja (predeterminado 0,005), (b) tamaño en espacio de pantalla diminuto, (c) sin contribuciones al loss en las últimas 1000 iteraciones. Los Gaussianos que cumplen las tres condiciones se purgan. Efecto: ~5–15 % menos Gaussianos al final del entrenamiento, visiblemente menos grupos oscuros en el cielo en escenas de dron/exteriores. Cuesta una regresión de L1 del ~1–3 % en escenas interiores de primer plano, por eso no está activa por defecto. El valor se recuerda entre reinicios (a diferencia de S7). Las dos iteraciones de limpieza (20K, 30K) están codificadas y de momento no se pueden cambiar desde la UI; para entrenamientos más cortos (p. ej. P2 Preview 5K), el conmutador no tiene efecto, porque nunca alcanza los hitos de iteración. Detalles: memory/dev_outdoor-floater-reduction.md.
S9Reducir Gaussianos alargados
DÓNDE
Settings → General → Experimental — Outdoor Floater Reduction → Conmutador "Reduce Elongated Gaussians". Bound:. Predeterminado: false.
TÉCNICO
Activa una regularización adicional de anisotropía en el término de loss. Durante la optimización, para cada Gaussiano se calcula la anisotropía como el cociente entre el mayor y el menor eje de escala. Si el cociente supera un umbral (predeterminado 10.0), se añade al loss un término de penalización, escalado de forma proporcional al exceso. Efecto: los Gaussianos en forma de aguja, típicos de los artefactos de patrón cruzado y rayas en hierba y follaje denso, durante el entrenamiento o bien son forzados a formas más redondeadas, o bien son purgados. A cambio hay una regresión de L1 del ~6 % en escenas interiores estándar, sin efecto en capturas estrictas de objetos. El punto óptimo es en tomas de vuelos de dron sobre vegetación. Escribe en, se persiste mediante. Implementación en optimizer.metal como penalización adicional en el cálculo del gradiente. Véase la nota en la memoria del proyecto: V549d fue la versión entregada; una V549f posterior con regularización de escala más agresiva se revirtió por una regresión catastrófica. Detalles: memory/dev_outdoor-floater-reduction.md y memory/dev_v549f-needle-reduction.md.
S10Reconstruir cúpula de cielo
DÓNDE
Settings → General → Experimental — Outdoor Floater Reduction → Conmutador "Reconstruct Sky Dome". Bound:. Predeterminado: false.
TÉCNICO
Activa la proyección de Sky Dome previa al entrenamiento (V549e MVP). Tras el SfM y antes del inicio del entrenamiento, se extrae de la imagen para cada cámara de entrada la máscara de cielo de Apple Vision compartida con S7, los píxeles de cielo se desproyectan usando los intrínsecos de la cámara sobre una superficie esférica virtual (radio predeterminado 8× el radio de la escena). Sobre esa esfera se inicializan ~5000 nuevos Gaussianos con medias de color de los píxeles de cielo proyectados, escala muy grande (1,0 en unidades de escena) y opacidad inicial 0,95. Estos 5000 Gaussianos no son una máscara de cielo en sentido clásico — se entrenan como todos los demás, pero la alta opacidad inicial los mantiene en una capa delgada. Resultado: en vistas novel de 360° en escenas exteriores/dron aparecen el color y las estructuras de nube reales en lugar de los grupos de confeti oscuro. El valor se recuerda entre reinicios. Solo útil para escenas exteriores con al menos cobertura de cámara de 360°; en capturas puras de objeto sin vista del cielo no tiene efecto. Estado: experimental, validación A/B más amplia sobre más sets exteriores aún pendiente.
Pestaña AI Helpers

S11AI Helpers habilitados (maestro)
DÓNDE
Settings → AI Helpers → primera sección → Conmutador "AI Helpers enabled". Bound:. Predeterminado: true.
TÉCNICO
Interruptor maestro sobre todas las funciones AI Helpers en la pipeline. Cuando está desactivado, la pipeline de importación y SfM omite por completo todas las etapas de preprocesado basadas en ML — sin llamada a Apple Vision, sin carga de modelo CoreML, sin despertar al NPU. Cuando está activado, se consultan los sub-conmutadores individuales (S12–S14). El valor se recuerda entre reinicios. Afecta a las siguientes etapas: (a) comprobación previa de calidad de fotograma antes de SfM (S12), (b) detección de cierre de bucle (S13), (c) enmascaramiento automático de cielo como valor predeterminado para nuevos entrenamientos (S14). Importante: cuando está desactivado, los tres sub-conmutadores se inhabilitan y aparecen visualmente atenuados. La nota al pie subraya que todos los AI Helpers se ejecutan estrictamente on-device — sin subida de imágenes, sin procesamiento en la nube. La garantía de privacidad proviene del uso exclusivo del framework Apple Vision (localmente en el Neural Engine) y de modelos CoreML que se entregan directamente en el bundle de la app.
S12Comprobación de calidad de fotograma
DÓNDE
Settings → AI Helpers → Sección Available → Conmutador "Frame quality check". Bound:. Predeterminado: true.
TÉCNICO
Activa el screener de calidad de fotograma (Fase 3.11), que analiza cada fotograma importado antes de la llamada a SfM. Pasos de la pipeline por fotograma: (a) filtro de varianza laplaciana de Apple Vision (detección de desenfoque — umbral ~150), (b) comprobación basada en histograma de sobre/sub-exposición (umbral: >5 % de píxeles en 0 o 255), (c) detección de fotograma en blanco (desviación estándar < 5 sobre todos los píxeles). Los fotogramas que pasan las tres comprobaciones siguen adelante directamente. Los que fallan al menos una comprobación disparan un diálogo modal de confirmación que enumera cada fotograma problemático con miniatura y motivo y pregunta si debe eliminarse. Importante: sin borrado automático — el diálogo siempre es obligatorio, el usuario conserva la decisión final. Rendimiento: ~50 ms por fotograma en M3 Ultra, ejecutado en paralelo. Cuando está desactivado, todos los fotogramas se reenvían a SfM sin comprobar. Con el maestro (S11) desactivado, este conmutador aparece atenuado y no tiene efecto. Estado entregado según la memoria: SHIPPED 2026-05-23.
S13Detección de cierre de bucle
DÓNDE
Settings → AI Helpers → Sección Available → Conmutador "Loop closure detection". Bound:. Predeterminado: true.
TÉCNICO
Activa la detección de cierre de bucle basada en feature print de Apple Vision. Para cada fotograma importado se calcula un vector de características de ~768 dimensiones que representa un embedding neuronal del contenido de la imagen. Todos los feature prints se comparan luego por pares mediante similitud coseno. Los pares con similitud > 0,85 y distancia de índice de fotograma > 50 (es decir, fotogramas no adyacentes) se identifican como "candidatos a cierre de bucle" y se escriben en un archivo sidecar JSONL dentro de la carpeta del proyecto. Solo informativo — la secuencia de imágenes importada no se modifica. Propósito: da al solver de SfM (especialmente COLMAP) una pista de que esos fotogramas se agrupan en el espacio 3D. En el SfM nativo, la información del sidecar es actualmente solo documental; COLMAP usa las pistas internamente mediante un archivo custom matches (integración manual posible, no cableada automáticamente). Rendimiento: ~200 ms por fotograma en M3 Ultra, en paralelo. Cuando está desactivado, no se generan feature prints. Con el maestro (S11) desactivado, aparece atenuado.
S14Enmascaramiento automático de cielo (IA)
DÓNDE
Settings → AI Helpers → Sección Available → Conmutador "Auto sky masking". Bound: UserDefaults.standard.bool(forKey: "aiHelpersSkyMaskingDefault") (mediante binding personalizado). Predeterminado: false.
TÉCNICO
Establece el valor predeterminado para el ajuste Sky Masking de S7 en nuevas configuraciones de entrenamiento. A diferencia de S11–S13, el ajuste real de Sky Masking vive por sesión de entrenamiento y no se recuerda entre reinicios de la app (véase S7). Para que la UI de AI Helpers pueda, aun así, ofrecer un predeterminado persistente para "nuevos entrenamientos", existe este valor sombra: se recuerda entre reinicios y se toma como predeterminado inicial de Sky Masking al preparar un nuevo entrenamiento (p. ej., importación de proyecto nuevo). Con el maestro (S11) desactivado, aparece atenuado.
Ajustes espejo del Inspector
Las entradas de ajustes restantes (S17–S33) de la tabla de inventario son espejos del Inspector experto y están documentadas en el Capítulo 2 (controles del Inspector I12–I29). No aparecen físicamente en la ventana de Ajustes, sino que se listaron en el inventario solo porque se ejecutan a través de propiedades de TrainingConfig que se persisten mediante y, por tanto, tienen formalmente carácter de ajuste. Para explicaciones de fondo, véase allí.
¿Cuándo qué?
| Ajuste | Ámbito | Persistencia |
|---|---|---|
| S1 Modo predeterminado | Global de la app | Reinicio de la app |
| S2 Idioma | Global de la app | Reinicio de la app |
| S3 Fondo de la vista | Global de la app (predeterminado) + runtime | Reinicio de la app |
| S4 Auto-rotar tras entrenamiento | Global de la app | Reinicio de la app |
| S5 Intervalo de previsualización en vivo | Predeterminado para nuevos entrenamientos | Reinicio de la app |
| S6 Retardo de throttle | Predeterminado para nuevos entrenamientos | Reinicio de la app |
| S7 Enmascaramiento de cielo | Entrenamiento actual | Solo sesión |
| S8 Limpieza de floaters a mitad | Global de la app | Reinicio de la app |
| S9 Reducir Gaussianos alargados | Global de la app | Reinicio de la app |
| S10 Reconstruir cúpula de cielo | Global de la app | Reinicio de la app |
| S11 Maestro AI Helpers | Global de la app | Reinicio de la app |
| S12 Comprobación de calidad de fotograma | Global de la app | Reinicio de la app |
| S13 Detección de cierre de bucle | Global de la app | Reinicio de la app |
| S14 Enmascaramiento automático de cielo | Predeterminado para nuevos entrenamientos | Reinicio de la app |
Global de la app = afecta a todos los proyectos. Predeterminado para nuevos entrenamientos = solo afecta al siguiente entrenamiento creado; las sesiones en curso no cambian. Entrenamiento actual = se aplica de inmediato a la configuración de entrenamiento en curso, pero no se persiste sin reimportación explícita.