Chapitre 4 — Fenêtres auxiliaires
En plus de la fenêtre principale (viewport 3D et inspecteur), RadianceKit gère sept autres fenêtres, toutes ouvertes via le menu Help. Trois d'entre elles — Pareto Dashboard, Holdout Analysis, BayesOpt Console — sont des outils d'analyse indépendants. Pour chacune un argument CLI permet de faire pointer la fenêtre dès le démarrage sur un fichier précis (–dashboard-dir, –holdout-file, –bayesopt-autorun).
Les quatre fenêtres simples (User Guide, Keyboard Shortcuts, Manage Storage, plus les sous-entrées Open Training Logs / Open Exports Folder) reçoivent une courte entrée par contrôle. Les trois fenêtres d'analyse sont documentées plus en détail. À la fin du chapitre, une section de renvois croisés vers l'inspecteur.
User Guide (W1–W4)

Ce que c'est : une fenêtre d'aide intégrée qui rend le guide_<langue>.md livré avec l'app. La langue est déduite des réglages.
Pour un rappel rapide sur un point précis. La référence détaillée est ce manuel ; la fenêtre d'aide intégrée est l'équivalent d'un –help en ligne de commande.
W1NavigationSplitView (sidebar + détail)
OÙ
Help → User Guide (⌘?).
TECHNIQUE
Disposition à deux colonnes avec sidebar étroite (au moins 180 pt) pour l'arborescence et zone de détail défilante pour le contenu Markdown. Taille min 700 × 500 pt. À la première ouverture, charge le guide_<lang>.md depuis le bundle (fallback guide_en.md), le parse en blocs et extrait la structure des titres pour la sidebar.
W2List (sidebar des titres)
OÙ
Colonne gauche dans la fenêtre User Guide.
TECHNIQUE
Liste des titres H2 et H3 du Markdown courant. Les H4 et plus profonds sont ignorés. ID d'ancre générés par slugification du texte.
W3Button (titre → saut d'ancre)
OÙ
Un bouton par ligne de sidebar.
TECHNIQUE
Chaque entrée est un bouton qui définit l'ancre courante avec animation douce 0,3 s.
W4ScrollView (contenu détaillé)
OÙ
Colonne droite.
TECHNIQUE
Zone de contenu défilante avec lazy rendering — les longs guides peuvent avoir plus de 200 blocs Markdown. Largeur max 720 pt.
Keyboard Shortcuts (W5–W6)

Liste de référence statique en cinq sections. Navigation : glisser souris, Shift+Drag, molette (zoom), WASD, Q/E, F (orbite/vol), double-clic (recentrer), Cmd+molette (FOV). Views : R, T, P, B, 0-9, flèches. Capture : S, V, C. Editor : Tab, clic, Option+clic, X/Delete, Cmd-Z, [/]. Training : M9–M14.
Ce que c'est : un aperçu statique des raccourcis. Contenu codé en dur.
Quand vous cherchez le chemin le plus rapide pour faire quelque chose dans le viewport.
W5ScrollView (zone de contenu)
OÙ
Help → Keyboard Shortcuts (⌘/).
TECHNIQUE
Zone défilante simple. Padding 20 tout autour. Colonne gauche fixée à 180 pt. Aucune interaction sauf défilement.
W6VStack (sections de raccourcis)
OÙ
Dans le ScrollView.
TECHNIQUE
Sections empilées alignées à gauche avec 16 pt d'espacement.
Manage Storage (W7–W12)

Vue tableau de tous les fichiers gérés par RadianceKit. Toolbar : « Show in Finder » + « Refresh ». Chaque ligne : icône, nom de fichier, date, taille, loupe (Reveal), corbeille (Move to Trash).
Ce que c'est : un aperçu d'occupation disque pour tout ce que RadianceKit dépose sous ~/Documents/RadianceKit/ — logs, exports, scènes, bundles capture, imports. N'est PAS un nettoyage automatique — vous décidez par entrée.
Quand le disque se remplit. Les logs et les exports s'accumulent.
W7Bouton « Show in Finder »
OÙ
En-tête en haut à droite.
TECHNIQUE
Ouvre tout le dossier ~/Documents/RadianceKit/ dans le Finder.
W8Bouton « Refresh »
OÙ
En-tête, à côté du bouton Finder.
TECHNIQUE
Déclenche un scan en arrière-plan. Parcourt chaque sous-dossier connu et génère une entrée par enfant direct. Calcule la taille récursive (préfère la consommation disque réelle avec hardlinks APFS).
W9List (entrées storage)
OÙ
Contenu principal sous l'en-tête.
TECHNIQUE
Liste avec disposition par ligne : icône SF Symbol, nom, sous-titre, compteur d'octets, boutons Reveal et Trash. Tri primaire par type, secondaire par date décroissante.
W10Bouton de ligne « Reveal in Finder »
OÙ
Par ligne, icône loupe.
TECHNIQUE
Ouvre le Finder et sélectionne l'élément spécifique.
W11Bouton de ligne « Move to Trash »
OÙ
Par ligne, icône corbeille.
TECHNIQUE
Déclenche le dialogue (W12). Après confirmation, opération macOS « mettre à la corbeille » (réversible).
W12ConfirmationDialog (confirmation de suppression)
OÙ
Déclenché par W11.
TECHNIQUE
Dialogue standard avec titre dynamique et message indiquant la récupération depuis la corbeille. Deux boutons : destructive et Cancel.
Pareto Dashboard (W13–W22)

État vide avec call-to-action « Open Reports Folder… ».

Toolbar affiche « 129 reports of 129 ». Axes : X sur Gaussians, Y sur PSNR (dB). Scatter : points verts = Classic, bleus = MCMC. Ligne pointillée = Pareto Front. Chips de filtre : scènes, 2 stratégies, 3 options Mip.
Ce que c'est : un outil de comparaison multi-run. Chaque run d'entraînement (avec –benchmark) produit un rapport JSON avec PSNR, SSIM, LPIPS, gaussiennes et temps. Le dashboard lit un dossier entier de rapports et les trace en scatter 2D avec axes sélectionnables. La Pareto Front (points non dominés) est dessinée en pointillé.
Après au moins trois ou quatre rapports. Avec moins de points, la frontière n'est pas significative.
Les deux axes sont libres. Un point est Pareto-optimal si aucun autre n'est au moins aussi bon sur les deux dimensions. Les points sur la ligne sont les vrais candidats « meilleur préréglage ».
Restreindre à une scène, stratégie (Classic ou MCMC) ou Mip on/off.
Action suivante : enregistrer la meilleure configuration comme préréglage via l'inspecteur.
W13Bouton « Open Reports Folder… »
OÙ
Toolbar en haut à gauche.
TECHNIQUE
Ouvre un dialogue de sélection. Task d'arrière-plan parse tous les .json. Rapports défectueux affichés en sidebar. Aussi via CLI : –dashboard-dir /chemin/.
W14Sélecteur « X-Axis »
OÙ
Au-dessus du chart, à gauche.
TECHNIQUE
Sélecteur menu avec toutes les métriques (PSNR, SSIM, LPIPS, Gaussian-Count, time). Défaut Gaussian-Count.
W15Sélecteur « Y-Axis »
OÙ
Au-dessus du chart, à côté de X-Axis.
TECHNIQUE
Identique à W14, défaut PSNR.
W16Toggle « Show Pareto Front »
OÙ
À droite des sélecteurs d'axes.
TECHNIQUE
Toggle macOS standard. Si actif, ligne avec Pareto Front 2D dessinée en pointillé gris semi-transparent.
W17Chips filtre « Scene »
OÙ
Sidebar droite.
TECHNIQUE
Chips pour chaque scène présente. Multi-sélection possible.
W18Chips filtre « Strategy »
OÙ
Sous le filtre Scene.
TECHNIQUE
Comme W17 mais pour stratégies (« classic », « mcmc »).
W19Chips filtre « Mip-Splatting »
OÙ
Sous le filtre Strategy.
TECHNIQUE
Filtre ternaire (au lieu d'un set) : « All » / « On » / « Off ». Mip-Splatting évalué en phase Q1.5 comme amélioration multi-échelle expérimentale ; conservé comme flag opt-in.
W20ChipButton (toggle filtre)
OÙ
Composant helper utilisé dans W17/W18/W19.
TECHNIQUE
Wrapper bouton minimaliste. Si actif → couleur d'accent avec texte blanc. Sinon fond neutre.
W21Chart (scatter Pareto)
OÙ
Zone centrale du dashboard.
TECHNIQUE
Diagramme Swift-Charts avec deux couches : un point par rapport (couleur par stratégie, symbole par Mip) ; ligne Pareto Front si toggle actif. Overlay capte la souris : point hover le plus proche sous 24 px.
W22Tooltip (détail au survol)
OÙ
Sous le chart, affiché au hover.
TECHNIQUE
Stack horizontal : scène, tag stratégie, séparateur, métriques PSNR/SSIM/LPIPS/Gs/Time. Tag Mip si activé.
Holdout Analysis (W23–W29)

État vide avec « Open transforms.json… ». Accepte les formats NeRF-Studio et Instant-NGP.

En-tête montre le fichier et le nombre de caméras. Sidebar gauche : sélecteur Strategy (Angular ou Linear), slider k-Folds, sélecteur Test Fold, bouton Export. Panneau central : projection 3D-globe des caméras — vertes = Train, rouges = Test Fold actuel. Sidebar droite : Mean Nearest Angle par fold.
Ce que c'est : un visualiseur 3D pour votre arrangement caméra avec logique de cross-validation. Vous chargez un transforms.json ; l'app projette les directions de regard sur une sphère unité et les découpe en k folds avec marqueur de fold de test.
Pour faire de l'évaluation holdout. Le standard « every-8th view » est linéaire ; « angular » stratifie sur l'espace des angles de vue.
Angular (standard) : découpe par longitude en k secteurs égaux, bon pour orbites classiques. Linear (round-robin) : index = (image modulo k), fonctionne si pas de biais spatial.
Dans le globe 3D : verts (Training) et rouges (Test). Rouges clusterisés en un coin = mauvais holdout. Uniformes = bon. Score « Mean nearest angle » : petit = test proche du training (facile), grand = test loin (généralisation dure).
Vous exportez via M33 un fichier nerfstudio. Ouvrez Holdout (⇧⌘H), chargez le JSON, regardez le globe. k=5 par défaut. Si les marqueurs sont uniformes : « Export fold-assignment.json », et au prochain run avec –benchmark, cette répartition est utilisée comme test-holdout.
W23Bouton « Open transforms.json… »
OÙ
Toolbar en haut à gauche.
TECHNIQUE
Dialogue de fichier limité aux JSON. Le loader parse le format nerfstudio et instant-ngp. Aussi via CLI : –holdout-file /chemin/.
W24Sélecteur « Strategy »
OÙ
Sidebar gauche, en haut.
TECHNIQUE
Radio avec deux options. Changement déclenche recalcul automatique des folds.
W25Slider « k Folds »
OÙ
Sidebar gauche, milieu.
TECHNIQUE
Slider 3 à 10, pas 1. k=5 standard (20 % de test par fold). k=10 beaucoup de données. k=3 peu de données.
W26Sélecteur « Test Fold »
OÙ
Sidebar gauche, sous slider k.
TECHNIQUE
Sélecteur menu. Options 0..<k. Si index ≥ k, auto-remis à 0.
W27Bouton « Export fold-assignment.json »
OÙ
Sidebar gauche, en bas.
TECHNIQUE
Dialogue avec nom par défaut fold-assignment.json. Encode la répartition (par frame : fold + meta stratégie).
W28SCNView (globe caméra 3D)
OÙ
Panneau central.
TECHNIQUE
Vue globe SceneKit. Sphère wireframe (rayon 1, 36 segments), trois axes colorés, et une petite sphère marqueur (rayon 0.03) par caméra. Mise à jour matériaux : rouge pour Test, vert pour Training. Souris : rotation, zoom, pan.
W29FoldCard (tap to select fold)
OÙ
Sidebar droite, section « Angular Correlation ».
TECHNIQUE
Une carte par fold avec deux lignes (haut : « Fold N » + cams, bas : « Mean nearest angle » + valeur en degrés). Tap sélectionne le fold.
BayesOpt Console (W30–W39)

État vide avec sélecteur Search-Space, slider Trial Budget (défaut 40), Random Seed (42).

Statut « Finished — best 0.9943 after 40 trials ». Sidebar gauche : Search-Space, Trial Budget 40, Seed 42, liste paramètres. Centre : Convergence chart avec points gris (LHS), bleus (BayesOpt) et orange (restart). Sidebar droite : Trial Log avec tag init/bo/restart.
Ce que c'est : une console d'optimisation bayésienne pour la recherche d'hyperparamètres. BayesOpt cherche avec le moins d'expériences possible l'optimum d'une fonction inconnue.
Important : la version livrée mène l'optimisation contre un objectif de démo synthétique, pas contre de vrais runs (durerait des jours). La fenêtre doit montrer le comportement de l'optimiseur. Pour de vrais tunings (comme en phase Q7), un workflow CLI offline séparé est utilisé.
Trois cas : comprendre BayesOpt, planifier une nouvelle classe de scène, inspecter les search-spaces par défaut.
- Convergence chart : Y = meilleure objective atteinte. X = trial. Ligne plate 20+ trials → optimum trouvé. - Tableau Trial : trial avec valeur et tag. Meilleur trial avec étoile jaune. - Inspecteur Search-Space : paramètres du préréglage et plages.
W30Bouton « Start »
OÙ
Toolbar gauche, Idle/Finished.
TECHNIQUE
Reset trial-list, passe en Running, génère Run-ID, lance task en arrière-plan. Initial samples = min(8, budget / 4 + 1). Protection stale-run.
W31Bouton « Pause »
OÙ
Toolbar gauche, Running.
TECHNIQUE
Active pause-gate. Le runner attend en polling 50 ms. Trial en cours se termine, aucun nouveau lancé.
W32Bouton « Stop »
OÙ
Toolbar gauche, Running et Paused.
TECHNIQUE
Interrompt le task runner, passe en Finished State. Trials calculés restent visibles. Bouton rouge.
W33Bouton « Resume »
OÙ
Toolbar gauche, Paused.
TECHNIQUE
Lève pause-gate. Le task runner détecte la levée et lance le prochain trial.
W34Bouton « Save Best Config »
OÙ
Toolbar droite (disabled si pas de bestTrial).
TECHNIQUE
Dialogue avec nom par défaut bayesopt-best.json. Construit payload : préréglage, index, valeur, paramètres décodés.
W35Sélecteur de préréglage « Search Space »
OÙ
Sidebar gauche, en haut.
TECHNIQUE
Quatre options : « RadianceKit defaults (6-dim) », « Mip subset (2-dim) », « densify-until + ssim-weight + grad-thresh », « Bowl demo (1-dim) ». Pendant un run, non modifiable.
W36Slider « Trial Budget »
OÙ
Sidebar gauche, sous Search-Space.
TECHNIQUE
Slider 10 à 200, pas 5. Défaut 40. Règle : dimension d → 10d à 20d trials.
W37Slider « Random Seed »
OÙ
Sidebar gauche, sous budget.
TECHNIQUE
Slider 1 à 100, pas 1. Défaut 42. Seed pour LHS et noise. Même seed + même search-space + même budget = séquence identique.
W38Chart (Convergence)
OÙ
Colonne centrale.
TECHNIQUE
Swift-Charts avec deux couches : ligne « best-so-far » monotone, un point par trial coloré par phase. Légende en haut à gauche.
W39Tableau (Trial Log)
OÙ
Colonne droite.
TECHNIQUE
Zone défilante avec lignes trial. Par ligne : numéro monospaced, valeur, tag de phase, étoile jaune si meilleur. Auto-scroll vers la fin.
Fenêtre principale : courbe de loss et Gaussian Count (I39–I41, renvoi)
Trois affichages de l'inspecteur méritent une explication propre, parce qu'ils sont visibles pendant un entraînement et qu'il y a des règles empiriques pour juger d'un déroulé sain.
Quand la courbe est saine ? Trois phases : (1) Warmup — les 200–500 premières itérations, le loss tombe de ~0.15–0.25 à environ la moitié. (2) Densification — entre ~500 et densifyUntilIteration, le loss continue à descendre. Le compteur de gaussiennes augmente. (3) Refinement — ensuite, queue de plus en plus plate. Valeurs finales typiques : Tanks-&-Temples Truck P4 Quality → L1 ≈ 0.023 ; outdoor Mip-NeRF360 souvent 0.04–0.07.
Que signifie un plateau ? Deux interprétations : (a) convergé, plus rien à faire ; (b) bloqué (minimum local, cap au buffer-limit). Distinction : regardez le compteur de gaussiennes. Plat ET proche du cap MCMC = limite. Compteur qui croît mais loss qui ne descend pas = bloqué.
Quand abandonner ? Règle : 10K itérations sans amélioration du Min-Loss → arrêter.
Le plateau Gaussian Count n'est PAS un signal « fini ». Il signifie seulement que MCMC a atteint le cap ou que la densification Classic est épuisée. La vraie question « fini » n'est posée que par l'analyse holdout — PSNR/SSIM/LPIPS sur un test-set indépendant.
PSNR/Holdout est la vérité, le loss n'est qu'un proxy. Un loss bas ne signifie pas un bon modèle — overfitting. Pour la qualité finale, regardez les métriques holdout.
Règles empiriques
- User Guide et Keyboard Shortcuts : aide statique. Pour la profondeur, utilisez ce manuel. - Manage Storage à ouvrir dès que le disque tombe sous 10 %. - Pareto Dashboard utile à partir de 3-4 rapports. X = coûts, Y = qualité. - Holdout Analysis : avant de publier des benchmarks PSNR. - BayesOpt Console : surtout pour comprendre. Vrais tunings → CLI offline. - Plateau de loss et plateau de gaussiennes à interpréter séparément. La vraie qualité = PSNR holdout. - 10K itérations sans amélioration → arrêter.