Chapitre 3 — Réglages
La fenêtre des réglages s'ouvre via RadianceKit → Réglages… ou le raccourci clavier standard ⌘,. Elle contient deux onglets : General et AI Helpers. Contrairement aux valeurs de l'inspecteur du chapitre 2, les réglages de cette fenêtre agissent de manière globale à l'application (à travers tous les projets) — ils sont persistés et survivent aux redémarrages de l'app. L'onglet General regroupe quatre sections thématiques : Interface, Viewport, Training et une section expérimentale dédiée à la réduction des floaters outdoor. L'onglet AI Helpers active les helpers ML on-device (Vision, CoreML) pour le prétraitement SfM et d'entraînement.
D'anciens contrôles permettant d'activer ou de désactiver tous les AI-Helpers d'un seul geste n'existent plus dans la version actuelle — ils ne sont donc pas documentés ici. L'ancienne section « Coming Soon » pour les helpers pas encore livrés a également été supprimée et n'est pas référencée ici.
Onglet General

S1Default Mode
OÙ
Réglages → General → Interface → sélecteur Default Mode. Lié à :. Défaut : .simple.
TECHNIQUE
Contrôle dans lequel des deux modes UI l'application s'ouvre au prochain démarrage. « Simple Mode » est le workflow guidé en 4 étapes (Import → Processing → Preview → Export, documenté au chapitre 10 sous Z1–Z4), « Expert Mode » la disposition classique à trois panneaux avec Navigator, viewport 3D et Expert-Inspector du chapitre 2. La valeur est mémorisée à travers les redémarrages. Même effet que le menu Mode → Simple Mode (⌘1) / Mode → Expert Mode (⌘2), à ceci près que le menu commute la session en cours, tandis que ce sélecteur fixe le défaut pour les sessions futures. Les deux modes accèdent au même état projet — projets, caméras et configuration d'entraînement sont préservés lors du changement de mode. Les boutons de toolbar spécifiques au mode sont rerendus immédiatement.
S2Language
OÙ
Réglages → General → Interface → sélecteur Language. Lié à :. Défaut : .system (suit la langue macOS).
TECHNIQUE
Choisit la langue d'affichage de toute l'UI de l'app, indépendamment de la langue système macOS. RadianceKit est localisé en 17 langues (de, en, pl, en-AU, ar-SA, plus 12 autres). En « System », l'app suit la langue macOS. Pour un choix explicite, le réglage de langue est mémorisé à travers les redémarrages ; un effet complet exige généralement un redémarrage de l'app, parce que les bundles de localisation ne sont chargés qu'au démarrage. Les 298 clés de localisation documentées dans le projet sont toutes prises en compte, y compris tous les textes des sous-vues et tooltips d'aide.
S3Viewport Background
OÙ
Réglages → General → Viewport → sélecteur Background. Lié à :. Défaut : .darkGray (RGB 0.1, 0.1, 0.1).
TECHNIQUE
Fixe la couleur de fond par défaut du viewport 3D. Trois options : « Dark Gray » (RGB 0.1, 0.1, 0.1 — défaut), « Black » (0, 0, 0) et « White » (1, 1, 1). Le réglage persiste le défaut pour les nouveaux projets et sessions à travers les redémarrages et met simultanément à jour le renderer Metal en cours. Les mêmes options se retrouvent dans le menu Viewport → Background (M21, M22, M23), mais le sélecteur des réglages fixe le défaut tandis que le menu commute l'affichage courant. Important pour captures d'écran et vidéos de démo : les fonds blancs font mieux ressortir les floaters verts/bleus, les fonds sombres sont préférables pour des rendus propres.
S4Auto-Rotate After Training
OÙ
Réglages → General → Viewport → toggle « Auto-Rotate After Training ». Lié à :. Défaut : false.
TECHNIQUE
Démarre, juste après la fin de l'entraînement, une rotation turntable continue de la caméra du viewport autour du centre de gravité de la scène (vitesse standard ~0.3 rad/s). Concrètement utile pour des sessions de démo, des comparaisons A/B et pour juger immédiatement, depuis une vue 360°, si des « floaters » se sont formés en bord de scène. Effet visuel identique au menu Viewport → Toggle Auto-Rotation (M16, ⌘⌥T), à ceci près que ce toggle déclenche le comportement automatiquement après l'entraînement au lieu de le faire manuellement. Peut être interrompu à tout moment via le menu ou en cliquant dans le viewport (ce qui met la rotation en pause). N'a aucune influence sur les performances d'entraînement — la rotation ne se lance qu'une fois le training terminé.
S5Live Preview Interval
OÙ
Réglages → General → Training → sélecteur Live Preview. Lié à : AppState.trainingConfig.livePreviewInterval. Défaut : 0 (Off).
TECHNIQUE
Détermine à quel intervalle d'itérations le snapshot d'entraînement en cours est rendu dans le viewport 3D. Quatre valeurs discrètes : 0 (« Off »), 50, 250, 1000 itérations. Quand le Live Preview est actif, l'entraîneur copie le buffer de gaussiennes depuis le GPU vers un buffer de rendu séparé et déclenche un redessin du viewport. En « Off », le viewport n'est mis à jour qu'après la fin de l'entraînement. Coût de performance : toutes les 50 itérations ~5–10 % plus lent sur M3 Ultra, toutes les 250 itérations ~1–2 % plus lent, toutes les 1000 itérations non mesurable. Overhead mémoire constant ~2 Go pour le buffer de snapshot, indépendamment de l'intervalle. La valeur sert de défaut pour les nouveaux entraînements ; après le démarrage, l'inspecteur d'entraînement affiche la valeur live réelle de ce training. À l'intervalle 50, l'impression visuelle est une « croissance » fluide du nuage de points ; à 1000, l'effet est saccadé.
S6Throttle Delay
OÙ
Réglages → General → Training → sélecteur Throttle. Lié à : AppState.trainingConfig.throttleDelayMs. Défaut : 0 (Off).
TECHNIQUE
Insère un délai artificiel en millisecondes entre les itérations d'entraînement. Quatre valeurs discrètes : 0 (« Off »), 2 (« Light »), 5 (« Moderate »), 10 (« Eco »). But : sur les entraînements longs (plusieurs heures), le GPU est sinon chargé à 100 %, ce qui ralentit nettement l'UI système (le curseur saccade, les autres apps deviennent lentes). Le délai throttle donne au GPU des pauses pendant lesquelles d'autres tâches peuvent s'exécuter. Le coût en performance est important : à 5 ms de throttle, un entraînement typique 40K dure environ 50–80 % plus longtemps que sans throttle. Au mode « Eco » (10 ms), le délai par itération est plus long que l'itération elle-même — facteur 2–3× plus lent. Quand le throttle est actif, une mention apparaît sous le sélecteur : « Throttle is on. Training will be slower than usual. » L'app elle-même ne réagit pas sensiblement mieux — seules les autres apps en profitent.
S7Sky Masking
OÙ
Réglages → General → Experimental — Outdoor Floater Reduction → toggle « Sky Masking ». Lié à : AppState.trainingConfig.skyMaskingEnabled. Défaut : false.
TECHNIQUE
Active la segmentation pixel ciel pré-entraînement basée sur Apple Vision. Avant le démarrage de l'entraînement, la région ciel est extraite pour chaque caméra d'entrée via l'Apple Vision Foreground Mask (Sky = Background) et associée à chaque caméra comme masque pixel par pixel. Pendant l'entraînement, la contribution au loss par pixel est multipliée par le complément du masque ciel — les pixels de ciel contribuent 0 au gradient, de sorte que les gaussiennes qui se projettent dans le ciel ne reçoivent aucun signal d'optimisation et ne deviennent donc pas plus « denses » ou plus « lumineuses ». Réduit significativement les floaters (taches sombres dans le ciel) sur des scènes outdoor/drone. Coûte ~3 % de régression L1 sur un entraînement classique 40K (voir memory/dev_outdoor-floater-reduction.md). Utile uniquement pour des scènes outdoor avec ciel clairement identifiable ; pour des scènes intérieures ou avec fond blanc, la segmentation ciel identifie de mauvaises zones et bloque des signaux de loss valides. Contrairement aux autres toggles expérimentaux, la valeur n'est pas mémorisée à travers les redémarrages — au prochain démarrage, elle est de nouveau désactivée.
S8Mid-Training Floater Cleanup
OÙ
Réglages → General → Experimental — Outdoor Floater Reduction → toggle « Mid-Training Floater Cleanup ». Lié à :. Défaut : false.
TECHNIQUE
Active sur l'entraînement classique 40K (préréglage « P4 Quality ») deux passes supplémentaires de density control : à l'itération 20 000 et à l'itération 30 000. Les deux passes parcourent toutes les gaussiennes selon trois critères : (a) opacité très basse (standard 0.005), (b) taille screen-space minuscule, (c) aucune contribution au loss sur les 1000 dernières itérations. Les gaussiennes remplissant les trois conditions sont purgées. Effet : ~5–15 % de gaussiennes en moins à la fin de l'entraînement, taches sombres visiblement réduites dans le ciel sur des scènes drone/outdoor. Coûte ~1–3 % de régression L1 sur les scènes intérieures rapprochées, donc pas activé par défaut. La valeur est mémorisée à travers les redémarrages (contrairement à S7). Les deux itérations de cleanup (20K, 30K) sont définies en dur et ne peuvent pas être modifiées via l'UI ; pour des entraînements plus courts (par ex. P2 Preview 5K), le toggle n'a aucun effet, car il n'atteint jamais ces marqueurs d'itération. Détails : memory/dev_outdoor-floater-reduction.md.
S9Reduce Elongated Gaussians
OÙ
Réglages → General → Experimental — Outdoor Floater Reduction → toggle « Reduce Elongated Gaussians ». Lié à :. Défaut : false.
TECHNIQUE
Active une régularisation d'anisotropie supplémentaire dans le terme de loss. Pendant l'optimisation, l'anisotropie est calculée pour chaque gaussienne comme rapport entre l'axe d'échelle le plus grand et le plus petit. Si le rapport dépasse un seuil (, standard 10.0), un terme de pénalité est ajouté au loss, mis à l'échelle proportionnellement au dépassement. Effet : les gaussiennes en forme d'aiguille, typiques des artefacts de cross-hatch et de stries dans l'herbe et le feuillage dense, sont soit forcées vers des formes plus rondes pendant l'entraînement, soit purgées. En contrepartie, ~6 % de régression L1 sur des scènes intérieures standard, aucun effet sur des Object Capture stricts. Sweet spot sur des prises de drone au-dessus de la végétation. S'écrit sur, persiste via. Implémentation dans optimizer.metal comme pénalité supplémentaire dans le calcul du gradient. Voir la note dans la mémoire projet : V549d a été la version livrée, une V549f ultérieure avec une scale-reg plus agressive a été révoquée à cause d'une régression catastrophique. Détails : memory/dev_outdoor-floater-reduction.md et memory/dev_v549f-needle-reduction.md.
S10Reconstruct Sky Dome
OÙ
Réglages → General → Experimental — Outdoor Floater Reduction → toggle « Reconstruct Sky Dome ». Lié à :. Défaut : false.
TECHNIQUE
Active la projection sky-dome pré-entraînement (V549e MVP). Après le SfM et avant le démarrage de l'entraînement, le masque ciel Apple Vision partagé avec S7 est extrait de l'image pour chaque caméra d'entrée, les pixels de ciel sont déprojetés à l'aide des intrinsics caméra sur une surface de sphère virtuelle (rayon standard 8× rayon de scène). Sur cette sphère, ~5000 nouvelles gaussiennes sont initialisées avec des couleurs moyennes issues des pixels de ciel projetés, une très grande échelle (1.0 en unités de scène) et une opacité initiale de 0.95. Ces 5000 gaussiennes ne sont pas un sky-mask au sens classique — elles sont entraînées comme les autres, mais maintenues dans une coquille fine grâce à l'opacité initiale élevée. Résultat : sur les vues nouvelles à 360° de scènes outdoor/drone, au lieu de confettis sombres, on voit la vraie couleur du ciel et des structures nuageuses. La valeur est mémorisée à travers les redémarrages. Utile uniquement pour des scènes outdoor avec au moins une couverture caméra 360° ; sur des Object Capture purs sans vue du ciel, sans effet. Statut : expérimental, une validation A/B plus large sur d'autres sets outdoor reste à faire.
Onglet AI Helpers

S11AI Helpers enabled (Master)
OÙ
Réglages → AI Helpers → première section → toggle « AI Helpers enabled ». Lié à :. Défaut : true.
TECHNIQUE
Interrupteur maître pour toutes les fonctionnalités AI-Helpers du pipeline. Désactivé, les pipelines d'import et de SfM sautent complètement toutes les étapes de prétraitement basées sur le ML — aucun appel Apple Vision, aucun chargement de modèle CoreML, aucun réveil du NPU. Activé, les sous-toggles individuels (S12–S14) sont consultés. La valeur est mémorisée à travers les redémarrages. Affecte les étapes suivantes : (a) frame-quality pre-check avant SfM (S12), (b) détection de loop closure (S13), (c) auto-sky-masking comme valeur par défaut pour les nouveaux entraînements (S14). Important : désactivé, les trois sous-toggles sont désactivés et grisés visuellement. La mention de pied de page souligne que tous les AI-Helpers fonctionnent strictement on-device — aucun upload d'image, aucun traitement cloud. La garantie de confidentialité vient de l'utilisation exclusive du framework Apple Vision (local sur le Neural Engine) et de modèles CoreML qui résident directement dans le bundle de l'app.
S12Frame quality check
OÙ
Réglages → AI Helpers → section Available → toggle « Frame quality check ». Lié à :. Défaut : true.
TECHNIQUE
Active le frame-quality screener (Phase 3.11) qui analyse chaque image importée avant l'appel SfM. Étapes du pipeline par image : (a) filtre de variance laplacienne d'Apple Vision (détection de flou — seuil ~150), (b) check sur/sous- exposition par histogramme (seuil : >5 % de pixels à 0 ou 255), (c) détection d'image vide (écart-type < 5 sur tous les pixels). Les images qui passent les trois checks continuent directement. Celles qui en ratent au moins un déclenchent une boîte de dialogue modale de confirmation qui liste chaque image problématique avec miniature et raison et demande si elle doit être supprimée. Important : aucune suppression automatique — le dialogue est toujours requis, l'utilisateur garde la décision finale. Performance : ~50 ms par image sur M3 Ultra, parallèle. Désactivé, toutes les images sont transmises à SfM sans contrôle. Quand le master (S11) est désactivé, ce toggle est visuellement grisé et sans effet. Statut livré selon la mémoire : SHIPPED 2026-05-23.
S13Loop closure detection
OÙ
Réglages → AI Helpers → section Available → toggle « Loop closure detection ». Lié à :. Défaut : true.
TECHNIQUE
Active la détection de loop closure basée sur l'Apple Vision Feature Print. Pour chaque image importée, un vecteur de features d'environ 768 dimensions est calculé, représentant un embedding neuronal du contenu d'image. Toutes les feature prints sont ensuite comparées deux à deux par similarité cosinus. Les paires avec similarité > 0.85 et distance d'index > 50 (donc images non voisines) sont identifiées comme « candidates loop closure » et écrites dans un fichier sidecar JSONL dans le dossier du projet. Informationnel seulement — la séquence d'images importée n'est pas modifiée. But : donner au solveur SfM (en particulier COLMAP) un indice que ces images appartiennent à un cluster dans l'espace 3D. Pour le SfM natif, l'information sidecar est actuellement seulement documentaire ; COLMAP utilise les hints en interne via un fichier custom matches (intégration manuelle possible, pas reliée automatiquement). Performance : ~200 ms par image sur M3 Ultra, parallèle. Désactivé, aucune feature print n'est générée. Quand le master (S11) est désactivé, grisé visuellement.
S14Auto sky masking (AI)
OÙ
Réglages → AI Helpers → section Available → toggle « Auto sky masking ». Lié à : UserDefaults.standard.bool(forKey: "aiHelpersSkyMaskingDefault") (via Custom Binding). Défaut : false.
TECHNIQUE
Définit la valeur par défaut pour le réglage Sky Masking de S7 sur les nouvelles configurations d'entraînement. Contrairement à S11–S13, le réglage Sky Masking proprement dit vit par session d'entraînement et n'est pas mémorisé à travers les redémarrages de l'app (voir S7). Pour que l'UI AI-Helpers puisse tout de même proposer un défaut persistant pour les « nouveaux entraînements », il existe cette valeur fantôme : elle est mémorisée à travers les redémarrages et reprise lors de la configuration d'un nouvel entraînement (par ex. nouvel import de projet) comme défaut initial pour le Sky Masking. Quand le master (S11) est désactivé, grisé visuellement.
Réglages reflets de l'inspecteur
Les autres entrées de réglages (S17–S33) de l'inventaire sont des reflets de l'Expert-Inspector et documentées au chapitre 2 (contrôles d'inspecteur I12–I29). Elles n'apparaissent pas physiquement dans la fenêtre des réglages, mais ont seulement été listées dans l'inventaire parce qu'elles passent par des propriétés de TrainingConfig persistées via et ont à ce titre un caractère formel de réglage. Pour les explications de fond, voir là-bas.
Quand utiliser quoi ?
| Réglage | Portée | Persistance |
|---|---|---|
| S1 Default Mode | Global app | Redémarrage app |
| S2 Language | Global app | Redémarrage app |
| S3 Viewport Background | Global app (défaut) + runtime | Redémarrage app |
| S4 Auto-Rotate After Training | Global app | Redémarrage app |
| S5 Live Preview Interval | Défaut nouveaux entraînements | Redémarrage app |
| S6 Throttle Delay | Défaut nouveaux entraînements | Redémarrage app |
| S7 Sky Masking | Entraînement courant | session seulement |
| S8 Mid-Training Floater Cleanup | Global app | Redémarrage app |
| S9 Reduce Elongated Gaussians | Global app | Redémarrage app |
| S10 Reconstruct Sky Dome | Global app | Redémarrage app |
| S11 AI Helpers Master | Global app | Redémarrage app |
| S12 Frame quality check | Global app | Redémarrage app |
| S13 Loop closure detection | Global app | Redémarrage app |
| S14 Auto sky masking | Défaut nouveaux entraînements | Redémarrage app |
Global app = agit sur tous les projets. Défaut nouveaux entraînements = agit seulement sur le prochain entraînement créé, les sessions en cours restent inchangées. Entraînement courant = agit immédiatement sur la configuration d'entraînement en cours, mais ne persiste pas sans réimport explicite.