Capítulo 2 — Inspector (Expert View)

Inspector vazio antes da importação: A coluna esquerda mostra os itens Images, Cameras e Log, abaixo o cabeçalho „Images (0)" e a área de soltar „Drop images here / or tap + to import". O Viewport no centro está vazio. À direita fica o Inspector com seis seções recolhidas: Presets, Cameras & Capture, Training, Progress, Look e Export. Sob cada título, uma linha cinza indica o que a seção faz e quando ela age — „Ready-made recipes — they replace the training settings" (Presets), „Before training · decides how camera positions are solved · applies to the next run" (Cameras & Capture), „Before training · drives scene build-up and optimization · applies to the next run" (Training), „Display only" (Progress), „After training · applies immediately · reversible any time" (Look) e „Leveling the floor turns the view at once; the chosen orientation and format apply when saving" (Export). Bem embaixo roda a linha de status com o estado „Idle", além do botão verde de início e do botão vermelho de parada; no canto superior direito fica o alternador Simple/Expert, aqui em Expert.

Inspector após a importação: O cabeçalho da lista de imagens mostra „Images (35)", abaixo estão as fotos importadas com nomes de arquivo crescentes a partir de IMG_0953.JPG. As imagens desta série de testes têm 4032×3024 pixels; a lógica de Auto Render Scale lê essa resolução e sugere uma Render Scale compatível. O Viewport ainda está vazio, a linha de status marca „Idle". O botão verde de início embaixo à esquerda agora está ativo e inicia o treinamento com o Preset ativo.

Inspector durante o treinamento: A barra de título mostra o progresso global, aqui „RadianceKit — Training 23%". O Viewport renderiza a reconstrução em andamento em tempo real — um pato de tecido sobre uma pele de carneiro, já claramente reconhecível (o intervalo de atualização da pré-visualização ao vivo fica em Settings → General → Training → Live Preview). Abaixo do Viewport rodam o progresso („4,700/20,000", „ETA 1m9s") e a barra de métricas com Loss 0.0109, LR 2.0e-04, SH 1 e Gaussians 16.0K; embaixo à esquerda ficam os botões de pausa e parada. No Inspector, o grupo CLASSIC está expandido, „Balanced 20K iters" tem o marcador verde de seleção. Um selo „Modified" só aparece quando algum parâmetro se desvia do Preset — aqui nenhum está visível. A barra lateral „Log" reúne os eventos das etapas de SfM e treinamento.

Inspector após o treinamento: A barra de título indica o resultado: „Training Complete — 8,708 Gaussians". Na coluna esquerda está „Complete" com o mesmo número, além de Images 25 e Cameras 35 — 25 imagens porque o diálogo Frame Quality descartou dez fotos tremidas das 35 originais. A linha de status informa „Completed" em 20,000/20,000, a barra de métricas Loss 0.0075, LR 0.0e+00, SH 3 e Gaussians 9.7K. O Viewport mostra a nuvem de pontos finalizada ocupando todo o quadro — navegação orbital por arrasto ativa (rotaciona ao redor do centro da cena).
O fato de aparecerem aqui dois números diferentes de Gaussians é proposital: a barra de métricas e Training Metrics indicam o estado ao final do treinamento (aqui 9,660, arredondado para 9.7K), enquanto a barra de título e a cena mostram o estado após as passagens automáticas de limpeza (8,708). Entre um e outro ocorrem a Post-Training Compactification e a remoção de splats em forma de agulha ou disco. O número menor é o que aparece no Viewport e o que é salvo na exportação. Os grupos Training Metrics e Loss History agora estão preenchidos com os valores finais, e a seção de exportação está ativa.
O Inspector é a barra lateral direita no Expert Mode (⌘2). Ele reúne todos os parâmetros relevantes para o treinamento em seis seções recolhíveis, que desde 2026-07-18 estão agrupadas por domínio. A ordem padrão de cima para baixo é: Presets, Cameras & Capture, Training, Progress, Look e Export. Sob cada título há uma segunda linha que indica a fase — quando a seção age e o quanto é reversível (por exemplo, „Before training · decides how camera positions are solved · applies to the next run" em Cameras & Capture, „After training · applies immediately · reversible any time" em Look, „Display only" em Progress). Duas seções anteriores foram fundidas: Metrics e Gráfico de perda agora são dois grupos recolhíveis separados („Training Metrics" e „Loss History") dentro de Progress, e a antiga seção Enhancements está totalmente contida em Training. A seção „Look" (ajustes de imagem pós-treinamento) é o resultado real do renomeamento na interface da antiga seção „Finishing" — seu nome interno permanece „Finishing" por motivos de compatibilidade, mas o título exibido é „Look" (o mesmo padrão ocorre em Training, que internamente se chama „Training Configuration"). Cada seção pode ser recolhida com um clique no cabeçalho, e a ordem pode ser reorganizada por arrastar e soltar. Na primeira inicialização, as seções ficam recolhidas — na imagem acima, todas as seis estão fechadas; a partir daí, o estado do app guarda as preferências de recolhimento e ordem entre inicializações. Uma organização antiga já salva é migrada uma única vez para o novo agrupamento na primeira inicialização; Viewport ▸ Reset Inspector Layout restaura o estado de fábrica.
Uma série de controles do Inspector aparece de forma quase idêntica também nas configurações (Capítulo 3) — tipicamente o backend de SfM, o Sky Masking e outros padrões semelhantes. A separação é intencional: as configurações fornecem o modelo global do app para projetos recém-criados, enquanto o Inspector sobrescreve esses valores para o projeto atualmente aberto. Quem já conhece a lógica de uso de um lado consegue usar o outro de olhos fechados.
A coluna esquerda no Expert Mode — o Project Navigator — não faz parte do Inspector, mas é sua vizinha direta. Ali é possível selecionar imagens importadas com um clique, visualizá-las com a barra de espaço no Quick Look e removê-las pelo botão de menos ou pela tecla Remover (com Cmd-Z para desfazer). O Inspector acompanha a seleção atual da barra lateral com informações de detalhe específicas do contexto, mas as sete seções principais permanecem sempre disponíveis.
Look-Sektion (L1–L5)
A seção Look (internamente ainda chamada de „Finishing") é, desde o reagrupamento de domínios, a quinta seção do Inspector — entre Progresso e Exportação — e reúne os ajustes de imagem pós-treinamento em um só lugar. Todos os controles funcionam de forma não destrutiva: cada slider reaplica o cálculo do Look a um snapshot pristino inalterado (cor DC original, opacidade, escala) — o ajuste é, portanto, idempotente, não cumulativo. O resultado aparece ao vivo no Viewport (WYSIWYG, exatamente como a exportação posterior) e é incorporado em cada exportação. A seção só fica disponível após a conclusão de uma sessão de treinamento (antes disso aparece „Available after a training run completes."); seus valores são redefinidos a cada novo treinamento. Enquanto uma exportação estiver em andamento, todos os controles ficam bloqueados — um aviso de bloqueio „Locked while exporting — the file uses the current settings." aparece e o GroupBox fica desabilitado.
L1Slider Saturation
ONDE
Inspector → Seção Look → GroupBox → Saturation.
TÉCNICO
Slider 0.5–1.2, exibição com duas casas decimais (ex.: „1.00"). Escala a croma SH-DC de cada splat em torno do valor de luminância: 1.0 = inalterado, < 1.0 = dessaturado (cor puxada para a escala de cinza), > 1.0 = mais vibrante. Matematicamente, a cor DC é recalculada a partir do snapshot pristino, de modo que deslizar repetidamente não se acumula. Foi validado com material de drones DJI (viaduto de Pensford), que tende a ficar supersaturado — o padrão para drones é 0.82. Afeta apenas a base de cor (grau SH 0); coeficientes SH mais altos permanecem intocados.
L2Slider Splat length
ONDE
Inspector → Seção Look → GroupBox → Splat length.
TÉCNICO
Slider 0.3–1.0, exibição com duas casas decimais. Puxa os três eixos de escala de cada Gaussian, no espaço logarítmico, em direção à sua média (quanto menor o valor, mais forte o efeito): 1.0 = inalterado, valores menores tornam splats alongados em forma de „agulha" mais arredondados, 0 seriam esferas puras. Ataca splats em forma de agulha, excessivamente esticados, sem alterar o tamanho geral, reduzindo assim os típicos artefatos de „confete". Aplicado a partir do snapshot pristino (escala logarítmica original), portanto idempotente. Comuta com Splat size (L3), já que ambos operam no espaço logarítmico.
L3Slider Splat size
ONDE
Inspector → Seção Look → GroupBox → Splat size.
TÉCNICO
Slider 0.5–2.0, exibição com duas casas decimais. Escala cada Gaussian uniformemente em todos os três eixos: 1.0 = inalterado, < 1.0 = menor/mais denso/mais nítido, > 1.0 = maior/„mais fofo" (preenche lacunas entre os splats). Como as escalas estão no espaço logarítmico, a multiplicação se torna ali um deslocamento aditivo — isso comuta com Splat length (L2), pois um offset constante não afeta o desvio em relação à média. A partir do snapshot pristino, portanto idempotente. Novo nesta versão.
L4Fade far region (com sub-sliders)
ONDE
Inspector → Seção Look → GroupBox → Toggle „Fade far region" mais os sub-sliders „Fade start ×radius" e „Fade floor".
TÉCNICO
Toggle que ativa uma redução radial de opacidade com a distância em relação ao centro de gravidade da câmera — o „confete distante", pouco observado, ao fundo, é esmaecido. Apenas para capturas em órbita: o toggle fica acinzentado quando a cena não é adequada para isso (voos lineares, câmeras insuficientes ou degeneradas); nesse caso, em vez dos sub-sliders aparece o aviso „Far-fade applies only to orbit captures (not this scene)." A adequação é determinada pela cobertura de azimute das posições da câmera (uma órbita circunda o centro de gravidade e preenche muitos setores da bússola, um voo linear preenche apenas ~2). Dois sub-sliders controlam a geometria: Fade start ×radius (1.0–3.0) define o raio interno como múltiplo do raio da órbita, dentro do qual vale opacidade total; Fade floor (0.0–1.0) é o fator de opacidade bem além do raio de esmaecimento. Importante: o fade ignora a região do sky dome (os Gaussians congelados da cúpula), para que a cúpula de fundo intencional não seja esmaecida junto.
L5Botão Reset finishing
ONDE
Inspector → Seção Look → GroupBox → „Reset finishing" (embaixo, botão pequeno).
TÉCNICO
Redefine todas as configurações de Look para os padrões (Saturation 1.0, Fade desativado, Splat length 1.0, Splat size 1.0) e dispara imediatamente um novo finishing, de modo que o Viewport volta ao estado treinado inalterado. Como toda a pilha de Look calcula de forma idempotente a partir do snapshot pristino, „voltar ao padrão" é exatamente o resultado original do treinamento — sem perda de qualidade por ir e vir várias vezes. Como todos os controles da seção, fica bloqueado durante uma exportação em andamento.
Seção de Presets (I1–I11)
A seção de Presets é a maneira mais rápida de aplicar uma configuração testada. Presets integrados (Capture Class, Classic, MCMC, Hybrid) oferecem pontos de partida comprovados e reproduzíveis; presets próprios podem ser salvos, exportados, importados e compartilhados. A lista é agrupada por categorias (Capture Class, Classic, MCMC, Hybrid, Custom) e mais de uma categoria pode estar expandida simultaneamente. Através do mecanismo de menu de contexto (clique com o botão direito em uma linha), é possível exportar, duplicar e — no caso de presets próprios — excluir.
I1Botão Save…
ONDE
Inspector → Seção Presets → Botão Save… (barra de ações abaixo).
TÉCNICO
Abre um popover com campo de texto e botões Save/Cancel. O estado atual das configurações de treinamento é persistido como novo preset personalizado (codificado em JSON, salvo em todo o app). O processo de salvamento copia todos os 81 parâmetros de treinamento mais a estratégia de Densification atual. O preset é colocado automaticamente na categoria Custom, independentemente de qual preset integrado ele foi derivado. Nomes vazios e entradas apenas com espaços em branco são descartados. Nomes já existentes não são rejeitados — cada preset tem seu próprio ID interno; nomes duplicados são tecnicamente permitidos, mas na prática confusos.
I2Campo de texto Preset Name
ONDE
Popover Save → Campo de texto "Preset Name".
TÉCNICO
Campo de texto simples com borda arredondada, formato largo. O valor é assumido como nome do preset ao clicar no botão Save. Sem limite de comprimento na UI, mas o nome salvo precisa ser codificável em JSON e representável nas listas da UI — emojis e caracteres acentuados funcionam. O conteúdo é redefinido automaticamente para uma string vazia ao abrir o popover. O botão Save permanece desativado enquanto o campo, após trim, estiver vazio. Não há autocompletar nem preenchimento prévio com o nome do preset atualmente ativo.
I3Botão Cancel (diálogo Save)
ONDE
Popover Save → Botão Cancel (à esquerda).
TÉCNICO
Fecha o popover sem salvar. Descarta o conteúdo do campo de texto — na próxima abertura ele será redefinido para vazio novamente pela lógica do botão Save… (I1). Estilo de botão padrão, sem diálogos de confirmação, sem atalhos. A TrainingConfig atual permanece inalterada, pois o caminho de salvamento nem sequer foi executado.
I4Botão Save (diálogo Save)
ONDE
Popover Save → Botão Save (à direita, estilo em destaque).
TÉCNICO
Dispara a persistência propriamente dita. Valida novamente se o nome não está vazio (verificação defensiva) e então grava a TrainingConfig atual como JSON no armazenamento do app. Fecha em seguida o popover. Destacado em azul, acinzentado enquanto o campo de texto estiver vazio. Se o salvamento falhar (por exemplo, porque o armazenamento do app está cheio — muito improvável), não há atualmente nenhum diálogo de erro visível; o preset simplesmente não apareceria na próxima inicialização do app.
I5Botão Export…
ONDE
Inspector → Seção Presets → Barra de ações → Botão Export….
TÉCNICO
Exporta o preset atualmente selecionado como arquivo .radiancepreset (internamente JSON). Desativado quando nenhum preset está selecionado. Ao clicar, o app abre um diálogo Save com nome de arquivo predefinido (nome do preset + extensão .radiancepreset). O formato salvo contém a TrainingConfig completa mais metadados (nome, categoria, ID, flag de built-in). Duplo clique no Finder abre o app — mas não automaticamente a importação; o usuário precisa usar o botão Import (I6).
I6Botão Import…
ONDE
Inspector → Seção Presets → Barra de ações → Botão Import….
TÉCNICO
Abre um diálogo de arquivo que permite apenas arquivos .radiancepreset (seleção múltipla desativada). Ao selecionar, o arquivo JSON é carregado, validado e inserido na categoria Custom — com um novo ID interno, para que não haja colisões com os built-ins. A importação define automaticamente a categoria como Custom, mesmo que o preset exportado originalmente fosse, por exemplo, um built-in. Arquivos corrompidos ou incompatíveis com uma versão de esquema mais antiga são rejeitados silenciosamente, sem diálogo de erro (o log do Console fornece informações, no entanto).
I7Linha de Preset (ativação por clique)
ONDE
Inspector → Seção Presets → cada linha de preset em cada categoria.
TÉCNICO
Clicar em uma linha de preset substitui todos os campos da TrainingConfig pelos valores do preset, memoriza o ID do preset ativo e redefine o status de modificação. O check de ativo antes da linha só aparece quando o preset está selecionado E não modificado. Assim que um valor na TrainingConfig é alterado (slider, stepper, toggle em outras seções do Inspector), aparece um selo laranja "Modified" atrás do nome. Presets integrados não podem ser sobrescritos — em caso de modificação, é necessário criar uma cópia própria via botão Save (I1).
I8Menu de contexto "Export…"
ONDE
Clique com o botão direito em qualquer linha de preset → primeiro item "Export…".
TÉCNICO
Funcionalidade idêntica a I5 (botão Export…), mas acessível de forma mais conveniente — sem que o preset precise ser selecionado previamente. Exporta diretamente o preset clicado na linha. Funciona da mesma forma para todas as categorias de preset (built-in ou Custom), sem restrições. A exportação contém a flag de built-in e a categoria original, mas ao reimportar, a categoria é mapeada para Custom conforme descrito em I6.
I9Menu de contexto "Duplicate"
ONDE
Clique com o botão direito em qualquer linha de preset → segundo item "Duplicate".
TÉCNICO
Clona o preset para a categoria Custom. Gera um novo ID interno, anexa " Copy" ao nome e salva a cópia. Funciona também para presets integrados — o clone fica então editável. O original permanece intocado. A TrainingConfig é copiada valor por valor (roundtrip JSON), de forma que não existem vínculos de referência entre original e cópia.
I10Menu de contexto "Delete"
ONDE
Clique com o botão direito em linhas de presets próprios → último item "Delete" (vermelho, destrutivo).
TÉCNICO
Visível apenas para presets Custom. Built-ins não podem ser excluídos. O item é marcado como destrutivo, aparece em vermelho no menu de contexto e é separado por um divisor, para que não seja clicado por acidente. Não há nenhum diálogo de confirmação — um clique exclui o preset imediatamente. O preset excluído não pode ser recuperado (Cmd-Z não funciona aqui — undo existe na versão atual apenas para a lista de imagens, não para operações de preset). Se o preset excluído estava ativo no momento, a TrainingConfig atual permanece inalterada, apenas a seleção de preset ativo é zerada.
I11Cabeçalho de categoria (expandir/recolher)
ONDE
Inspector → Seção Presets → cada cabeçalho de categoria (Capture Class, Classic, MCMC, Hybrid, Custom).
TÉCNICO
Estado de expansão por categoria com padrão diferente: o grupo curado Capture Class inicia expandido, Classic, MCMC, Hybrid e Custom iniciam recolhidos. O estado não é persistido — ao reiniciar o app, todas as categorias voltam ao estado padrão. A seta chevron gira com animação. O número à direita no cabeçalho mostra a quantidade de presets nessa categoria. A área de clique abrange todo o cabeçalho.
Seção de Configuração de Treinamento (I12–I22)

Aqui ficam as alavancas centrais para o processo de treinamento: como a Densification funciona, quantas iterações, qual o peso do SSIM — além disso, na parte inferior, os antigos recursos independentes (Perceptual Loss, grupo Outdoor, Advanced Densifier, passes pós-treinamento). Bem no topo está a Densification como alternador triplo Classic | MCMC | Hybrid. O backend SfM não está mais aqui, e sim em sua própria seção Câmeras & Captura (I12, I13). As três linhas de MCMC ("MCMC Quality", "Auto-scale by scene" e "Max Gaussians") não desaparecem mais no modo Classic; elas permanecem visíveis e ficam acinzentadas; abaixo delas há uma linha com símbolo de cadeado que informa o que precisa ser alterado ("Only used by the MCMC and Hybrid densifiers — switch Densification above to change these."). Um bloco separado logo abaixo reúne as linhas que valem para qualquer densifier: Depth-Priority Scatter, Full-Resolution Training, o par acoplado Max Iterations / Densify Until, além dos controles SSIM Weight e Render Scale.
I12Seletor de Camera Alignment
ONDE
Inspector → Câmeras & Captura → Camera Alignment (menu pop-up abaixo do seletor de Projection).
TÉCNICO
Menu pop-up, não um seletor segmentado — os rótulos excedem a coluna estreita do Inspector. Quais entradas aparecem depende do build: a versão sandboxed da App Store oferece Apple Photogrammetry e Native, enquanto builds dev/DMG oferecem adicionalmente COLMAP. Motivo: COLMAP é um programa de linha de comando externo, e apps sandboxed não podem iniciar binários de terceiros (diretriz de revisão da App 2.5.2) — por isso a entrada de backend, junto com o seletor de Mapper e o caminho do binário, está totalmente ausente no build da Store, em vez de permanentemente acinzentada: uma linha que nunca pode acender não é uma indicação, é ruído. Não confundir: A importação e exportação de um workspace COLMAP é puro parsing de arquivos em Swift, não precisa de instalação do COLMAP e funciona em qualquer build (Capítulo 1, M5). O sufixo "(Beta)" na entrada Native foi removido — Native deixou de ser beta desde a v1.5.2. A seleção determina o backend SfM da próxima execução e controla ao mesmo tempo quais linhas abaixo ficam operáveis (I13, High-Quality, Native SfM Recipe). Nota de rodapé na UI: Com um conjunto de fotos não ordenado, o pipeline sempre alinha com Native, independente do que o seletor mostra — essa receita só existe ali. O seletor deliberadamente não é bloqueado (o valor não fica indisponível, apenas é sobreposto); em vez disso aparece um aviso com símbolo de bifurcação.
I13Campo FOV Override (Native SfM)
ONDE
Inspector → Câmeras & Captura → FOV Override (sempre visível, operável apenas com Camera Alignment = Native).
TÉCNICO
Campo de texto numérico (intervalo 0-170°), padrão 0 = determinação automática a partir de EXIF ou heurística. A entrada manual é necessária quando as imagens de entrada foram extraídas de um vídeo sem metadados de distância focal. Valores típicos: iPhone Wide ≈ 73°, DJI Mavic Wide-Crop ≈ 70°, drone com sensor full-frame ≈ 84°. O valor é limitado a [0, 170] — valores fora do intervalo são diretamente ajustados de volta para dentro dele. Afeta apenas o pipeline SfM nativo (Q4/Q5); Apple Photogrammetry ignora completamente esse valor. Desde 18/07/2026: Em outros backends, o campo não é mais ocultado, e sim acinzentado — junto com "High-Quality" e "Native SfM Recipe" e uma linha com símbolo de cadeado ("These configure the Native aligner — choose Native under Camera Alignment to change them."). O antigo ocultamento escondia o fato de que esses controles existiam. A restrição depende do backend selecionado, não do efetivamente usado — o redirecionamento de conjuntos de fotos não ordenados para Native é sinalizado, em vez disso, pelo aviso em I12. A linha "Native SfM Recipe" exige adicionalmente um conjunto de fotos não ordenado e, do contrário, tem sua própria linha explicativa.
I15Seletor de Densification
ONDE
Inspector → Configuração de Treinamento → Densification (seletor segmentado, sempre visível).
TÉCNICO
Alterna entre as duas estratégias de Densification: Classic (procedimento 3DGS original com Clone/Split/Prune e limiar de gradiente) e MCMC (Stochastic Gradient Langevin Dynamics com Relocation, NeurIPS 2024). Ao mudar de Classic para MCMC, o app define automaticamente os campos específicos de MCMC para valores padrão testados (Reg-Weights = 0, multiplicador de cap MCMC 3.0, agendamento de amostra/ruído). Sem essa inicialização automática, sessões com presets antigos sofriam o bug de colapso do MCMC da versão 1.4.4 (460K→5 Gaussians, watchdog kill). A seleção do seletor determina adicionalmente quais elementos do Inspector ficam visíveis — com MCMC, I16/I17 aparecem. Efeito detalhado dos campos no Capítulo 6, T11–T16 (Classic) e T61–T73 (MCMC).
I16Alternador MCMC Quality
ONDE
Inspector → Training → MCMC Quality (sempre visível, operável com Densification = MCMC ou Hybrid).
TÉCNICO
Alterna a acumulação de gradiente entre 2 passos (ativo) e 1 passo (inativo). Acumula os gradientes de duas views de câmera consecutivas antes de executar o passo do otimizador. Isso suaviza o caminho de otimização e melhora levemente, mas de forma visível, o resultado final. O preço: tempo de treinamento em dobro. Em treinamentos muito longos (200 mil iterações), isso resulta em 10+ minutos adicionais de espera — portanto só compensa quando os últimos pontos percentuais de qualidade realmente forem necessários. Afeta apenas o treinamento, não o formato de exportação nem a representação no viewport. Vale também para Hybrid, que usa a mesma maquinaria MCMC. Desde 18/07/2026: Sob Classic, a linha não desaparece mais; em vez disso, junto com I17 e "Max Gaussians", fica acinzentada; abaixo aparece "Only used by the MCMC and Hybrid densifiers — switch Densification above to change these."
I17Alternador Auto-scale by scene
ONDE
Inspector → Training → Auto-scale by scene (sempre visível, operável com Densification = MCMC ou Hybrid).
TÉCNICO
Quando ativo, escala o limite efetivo de Max Gaussians junto com a contagem de pontos de inicialização SfM × multiplicador de cap MCMC (padrão 3.0). Exemplo: SfM fornece 250 mil pontos iniciais, cap base = 150 mil, multiplicador 3.0 → limite efetivo = max(150 mil, 750 mil) = 750 mil. Quando desativado, vale estritamente apenas a base. A própria base está na linha Max Gaussians logo abaixo (desde 1.8, padrão 150.000, entrada limitada entre 10.000–30.000.000). Se o limite efetivo estiver acima da base, o app o exibe em texto simples ("Effective cap for this scene: …") — junto com um aviso de RAM, caso fique alto demais. Foi introduzido na v1.4.5 porque grandes capturas outdoor com mais de 1000 frames e densidade de pontos SfM correspondentemente alta faziam a Densification passar fome com o cap rígido padrão de 150 mil — pontos supérfluos permaneciam, novos não podiam surgir. Padrão desligado em presets personalizados, ligado nos presets embutidos de MCMC. Afeta apenas o tempo de treinamento, não a exportação. Desde 18/07/2026: Sob Classic, a linha fica acinzentada em vez de oculta (com a mesma linha explicativa de I16); a exibição em texto simples e o aviso de RAM deliberadamente não aparecem ali, porque Classic não aplica limite algum.
I18Stepper de Max Iterations
ONDE
Inspector → Configuração de Treinamento → GroupBox → Max Iterations.
TÉCNICO
Stepper com intervalo 1.000–100.000, incremento de 1.000. Determina o número total de iterações do otimizador. Correlaciona linearmente com o tempo de treinamento (reduzir pela metade = cerca de 50% do tempo). Valores testados são 20K (Classic Balanced), 40K (Classic Quality) e 200K (MCMC Full). Acima de 40K, Classic quase não traz mais melhora — o ganho se estabiliza. Ao alterar, se a função de vínculo (I19) estiver ativa, Densify Until é ajustado proporcionalmente junto (proporção padrão: 0.5, ou seja, Densify-Until = Max/2).
I19Botão de vincular/desvincular (Densify ↔ Iterations)
ONDE
Inspector → Configuração de Treinamento → GroupBox → pequeno botão de vínculo entre Max Iterations e Densify Until.
TÉCNICO
Botão de alternância que congela a proporção entre Densify Until e Max Iterations. Quando ativo (ícone de corrente em destaque), a cada alteração de Max Iterations, Densify Until é ajustado proporcionalmente junto. Ao desvincular (ícone de corrente com sinal de mais), os valores permanecem independentes. O padrão é vinculado, porque isso reflete a correlação típica — se você dobrar o treinamento para o dobro de iterações, geralmente você também quer que a Densification rode proporcionalmente mais tempo. A proporção é calculada a partir do valor atual no momento em que o botão de vínculo é ativado; uma proporção típica é 0.5 (Densify-Until = metade do número de iterações).
I20Stepper de Densify Until
ONDE
Inspector → Configuração de Treinamento → GroupBox → Densify Until.
TÉCNICO
Stepper com intervalo 500–50.000, incremento de 500. Determina o índice de iteração a partir do qual nenhum novo Gaussian é mais adicionado por Clone/Split (Classic) ou Relocation (MCMC). Após atingi-lo, apenas posição e cor são refinadas. Valores mais altos = mais Gaussians = arquivo maior, tempo por iteração mais longo (+30-60% de tempo de GPU por passo). Valores típicos: 15K (para 30K de Max-Iter), 20K (para 40K), 100K (para 200K MCMC). Com o vínculo ativo (I19), é escalado automaticamente junto. Tem efeito diferente em Classic vs. MCMC: Classic para completamente o crescimento, MCMC para a lógica de Relocation, mas a adaptação de amostra/ruído continua.
I21Controle deslizante SSIM Weight
ONDE
Inspector → Configuração de Treinamento → GroupBox → SSIM Weight.
TÉCNICO
Controle deslizante 0.0–1.0 em passos de 0.05, exibido como "0.20". Mistura L1-Loss (0.0) e SSIM-Loss (1.0). L1 ajusta o brilho por pixel, SSIM a similaridade estrutural (bordas, estatísticas locais). O padrão 0.2 é o valor do artigo original de 3DGS (Kerbl 2023) e é um compromisso robusto para quase qualquer cena. Valores mais altos (0.5+) favorecem a preservação de detalhes, mas podem ignorar erros locais de brilho. Valores mais baixos (< 0.1) levam a perda de detalhes em bordas nítidas. O cálculo de SSIM roda no shader com uma janela gaussiana de 11×11. Desempenho: com 0.0 (apenas L1), o treinamento é cerca de 8-12% mais rápido, porque o cálculo de SSIM é pulado no shader.
I22Controle deslizante Render Scale
ONDE
Inspector → Configuração de Treinamento → GroupBox → Render Scale.
TÉCNICO
Controle deslizante 0.25–1.0 em passos de 0.25, exibido como "100%". Escala a resolução de renderização do treinamento em relação ao tamanho da imagem de origem. Maior alavanca de desempenho: 50% reduz o tempo de GPU em cerca de 75% (porque são 4× menos pixels), 25% em cerca de 94%. O limiar de gradiente é escalado automaticamente junto. Abaixo do controle deslizante aparece uma exibição de resolução ao vivo em MP (por exemplo, "2304×1296 (3.0 MP)"). Caso o valor atual difira do recomendado, é exibido em texto laranja "— recommended: 50%". A recomendação visa ~3 MP de resolução efetiva — a faixa processada com mais eficiência pelas GPUs da Apple Silicon. Imagens de origem em 4K, por exemplo, recebem automaticamente 25% recomendado, imagens Full HD 100%. Uma alteração também dispara a realocação de buffer.
Grupos de Enhancements (na seção Training, I26–I29, I42–I44)

Esses grupos reúnem features que melhoram a qualidade da imagem sem alterar o próprio loop principal de treinamento. Até 18/07/2026, eles formavam uma seção própria do Inspector chamada Enhancements; desde o reagrupamento por domínios, ficam na parte inferior da seção Training. O antigo picker Viewport-Scaling (Off/MetalFX/Lanczos) foi removido sem substituto: ele nunca teve efeito algum — a decisão de blit no viewport é puramente geométrica — e sua legenda ainda prometia um upscaling, enquanto o passo Lanczos real é um cálculo de redução com antialiasing de uma imagem supersampleada. A exibição no viewport agora se chama "Sampling" em vez de "Scaling" (Capítulo 4); em nenhum lugar do app há upscaling via MetalFX. O Perceptual Loss (I29), apesar de pertencer ao grupo, é um componente de treinamento — é ativado durante o treinamento como um termo de loss adicional; fica no topo, com a linha de explicação "Multi-scale blur feature matching for structural similarity". Abaixo vem o grupo Outdoor com quatro interruptores — Sky Masking, Person Masking, Floater Cleanup e Reconstruct Sky Dome (I42–I44) —, opções de treinamento contra floaters de céu, que antes ficavam na janela de configurações e agora ficam aqui por projeto. Segue a linha recolhida "Advanced Densifier (Expert)", que traz um triângulo de aviso porque atrás dela há controles que também podem desmontar um treinamento. Por fim, o grupo "Runs automatically at the end of training" com o Post-Training Compactification (I26) e o interruptor "Remove Needle/Disc Floaters".
I26Toggle de Post-Training Compactification
ONDE
Inspector → Training → grupo „Runs automatically at the end of training" → Post-Training Compactification.
TÉCNICO
Ativa uma passagem de limpeza no final: após a conclusão das iterações de treinamento, Gaussians com Opacity abaixo de 0,01 (1% de visibilidade) são excluídos. Isso normalmente reduz o tamanho do arquivo pela metade, sem que se note perda de qualidade — porque esses Gaussians de qualquer forma não contribuem visualmente. A Compactification roda como um GPU-Compact-Pass e dura, dependendo do número de Gaussians, de frações de segundo a poucos segundos. Não afeta a performance do treinamento. Se esse toggle estiver desligado, Gaussians invisíveis também são exportados — relevante só se você quiser usar o formato para uma etapa adicional de treinamento (Continue Training); caso contrário, é desperdício de espaço.
I29Slider de Perceptual Loss
ONDE
Inspector → Training → Perceptual Loss.
TÉCNICO
Slider de 0,0 a 0,2 em passos de 0,01, exibido em 0,0 como „Off", caso contrário como „0.05" etc. Ativa um termo de loss adicional que compara o Gaussian-blur multi-escala da renderização com a imagem ground-truth (3 escalas de blur). Captura diferenças estruturais que L1+SSIM sozinho não detecta. Valores entre 0,05 e 0,1 melhoram estruturas finas de forma visível e custam pouco tempo de treinamento — cerca de 5% (forward pass adicional pelos blur kernels). Acima de 0,15, o treinamento fica instável e a qualidade volta a cair, porque esse termo de loss passa a dominar a otimização. Atua durante o treinamento, não no pós-processamento — apesar de sua posição junto às linhas de Enhancement no final da seção Training, portanto não é uma melhoria puramente posterior.
I42Sky Masking
ONDE
Inspector → Training (grupo Outdoor) → Toggle „Sky Masking". É salvo por projeto; padrão: desligado.
TÉCNICO
Ativa segmentação pre-training de pixels de céu baseada em Apple Vision. Antes do início do treinamento, para cada câmera de entrada, a região de céu é extraída via Apple-Vision-Foreground-Mask (Sky = Background) e associada como máscara por pixel àquela câmera. Durante o treinamento, a contribuição de loss por pixel é multiplicada pelo complemento da máscara de céu — pixels de céu contribuem com 0 para o gradiente, de modo que Gaussians que projetam para o céu não recebem sinais de otimização e, assim, não ficam "mais densos" nem "mais claros". Reduz significativamente floaters (aglomerados escuros no céu) em cenas outdoor/de drone. Custa ~3% de regressão de L1 em treinamento clássico de 40K. Só faz sentido em cenas outdoor com céu claramente identificável; em cenas de interior ou fundo branco, a segmentação de céu identifica áreas erradas e bloqueia sinais de loss válidos. O valor é salvo por projeto (não mais globalmente no app) e segue o Preset ou o arquivo da cena.
I43Floater Cleanup
ONDE
Inspector → Training (grupo Outdoor) → Toggle „Floater Cleanup" (subtítulo „Remove Gaussians outside all camera views"). É salvo por projeto; padrão: desligado.
TÉCNICO
O interruptor controla dois efeitos com condições diferentes; ambos são derivados na inicialização para a config local da execução, não são gravados na configuração salva (senão ficariam presos como um travamento de mão única). (1) Frustum-Union-Cull ao final do treinamento — Gaussians fora da união de todos os frusta de câmera são removidos ("nunca observado" = "nunca restringido", e é exatamente isso que a maioria dos floaters é). Essa parte não tem condição de estratégia e roda igualmente em Classic, MCMC e Hybrid — é por ela que o interruptor recebe o nome. (2) Dois passos adicionais de Density-Control no meio da execução — apenas com Classic e apenas a partir de 30.000 iterações, definidos em 55% e 85% da duração da execução (em 35–40K, portanto, cerca de 20K e 30K). Ambos os passos procuram Gaussians com Opacity muito baixa, tamanho ínfimo em screen-space e sem contribuição de loss, e os eliminam. Efeito: ~5–15% menos Gaussians no final, visivelmente menos aglomerados escuros no céu em cenas de drone/outdoor. Custa ~1–3% de regressão de L1 em cenas indoor em close-up, por isso não vem ativado por padrão. O valor é salvo por projeto e segue o Preset ou o arquivo da cena. Correção em relação a edições anteriores: o toggle não está mais restrito ao Classic-Densifier e não é mais desabilitado (esmaecido) sob MCMC/Hybrid — isso justamente impedia usuários de MCMC e Hybrid de acessar o cull que funciona para eles. Em execuções curtas (por exemplo, P2 Preview 5K), simplesmente não ocorre a parte do meio da execução.
I44Reconstruct Sky Dome
ONDE
Inspector → Training (grupo Outdoor) → Toggle „Reconstruct Sky Dome". É salvo por projeto; padrão: desligado.
TÉCNICO
Ativa a projeção de Sky-Dome antes do treinamento. Depois do SfM e antes do início do treinamento, para cada câmera de entrada, a máscara de céu Apple-Vision compartilhada em S7 é extraída da imagem; os pixels de céu são desprojetados usando os intrinsics da câmera para uma superfície esférica virtual (raio padrão 8× o raio da cena). Nessa esfera, ~5000 novos Gaussians são inicializados com médias de cor extraídas dos pixels de céu projetados, escala muito grande (1,0 em unidades de cena) e Opacity inicial de 0,95. Esses 5000 Gaussians não são uma Sky-Mask no sentido clássico — eles são treinados como todos os outros, mas mantidos numa casca fina graças à alta Opacity inicial. Resultado: em novel views de 360° em cenas outdoor/de drone, aparecem cores de céu e estruturas de nuvens reais em vez de aglomerados escuros de confete. O valor é lembrado entre reinicializações. Só faz sentido em cenas outdoor com pelo menos cobertura de câmera de 360°; em capturas puras de objeto sem visibilidade de céu, não tem efeito. Status: experimental, uma validação A/B mais ampla em outros conjuntos outdoor ainda está pendente.
Seção de Métricas (I30–I37)

Enquanto um treinamento está em execução, o grupo de métricas ("Training Metrics", um dos dois grupos expansíveis na seção Progresso) exibe oito valores ao vivo do loop de treinamento. Antes do início de um treinamento ele fica vazio ("Start training to see live metrics"). Todos os valores são atualizados a cada ~30 iterações (frequência de atualização das métricas ao vivo). A seção é somente leitura — nenhum elemento é clicável ou alterável. Para uma análise mais aprofundada, consulte os logs de treinamento JSONL em ~/Documents/RadianceKit/Logs/.
I30Iteration
ONDE
Inspector → Progresso → Training Metrics → Iteration. Somente leitura.
TÉCNICO
Exibição no formato „4523 / 40000" — iteração atual sobre o total de iterações planejadas. Conta em sincronia com o loop de treinamento, que envia os valores a cada ~30 iterações. O segundo número corresponde ao valor de Max Iterations no momento do início; ele não muda mais, mesmo que o usuário ajuste o stepper posteriormente — a execução em andamento usa sua própria cópia snapshot. Quando o app adiciona iterações através do menu Training (Continue Training +5K/+10K/+20K), o denominador aumenta.
I31Loss
ONDE
Inspector → Progresso → Training Metrics → Loss. Somente leitura.
TÉCNICO
Valor float com seis casas decimais (ex.: „0.024385"). Mede o loss combinado L1+SSIM (mix controlado via I21 SSIM Weight) mais, opcionalmente, Perceptual Loss (I29) e outros regularizadores. A escala não é absoluta, mas sim dependente da cena — exige, para a maioria das comparações, o mesmo conjunto de dados. Valores finais típicos em configurações boas: - Classic Quality 40K iters: 0.022–0.025 (Horse, Truck, Garden) - MCMC Full 200K iters: 0.024–0.028 - Drone externo 30K: 0.030–0.060 (pior devido à geometria) - Apartamentos internos: 0.018–0.025
Valores acima de 0.10 após 5K iterações indicam problemas de SfM (poses de câmera ruins) — interrompa e recalcule o SfM.
I32Learning Rate
ONDE
Inspector → Progresso → Training Metrics → Learning Rate. Somente leitura.
TÉCNICO
Exibição em notação científica (ex.: „1.60e-04"). Taxa de aprendizado atual para os parâmetros de posição (3DGS tem seis learning rates independentes para Position, SH-DC, SH-Rest, Opacity, Scale, Rotation — aqui é exibida a LR de Position como valor representativo). Valor inicial padrão de 1.6e-4, que decai através de um decaimento exponencial até ~1.6e-6 ao final do treinamento. O decaimento pode ser ajustado através do campo LR Schedule na configuração de treinamento (campo T no cap. 6). Se a LR permanecer incomumente alta (ex.: 1e-3 ou mais após 10K iterações), isso pode indicar uma configuração carregada incorretamente.
I33SH Degree
ONDE
Inspector → Progresso → Training Metrics → SH Degree. Somente leitura.
TÉCNICO
Número inteiro 0-3. Grau de Spherical Harmonics para a representação de cor. Começa em 0 (apenas o componente DC, ou seja, cor independente de direção por Gaussian — portanto apenas uma constante RGB) e aumenta progressivamente ao longo do treinamento até 3. O schedule padrão eleva o grau em 1 nas iterações 1000/2000/3000. SH-3 corresponde a 48 coeficientes de cor por Gaussian (3 canais RGB × 16 funções de base SH). Grau SH mais alto = mais reflexão dependente de direção (superfícies brilhantes parecem corretamente diferentes de vários ângulos de visão), mas também mais memória e treinamento mais lento.
I34Gaussians
ONDE
Inspector → Progresso → Training Metrics → Gaussians. Somente leitura.
TÉCNICO
Número atual de Gaussians no modelo, formatado com separador de localidade (ex.: „524.318"). Crescimento: - Classic: começa nos pontos de inicialização do SfM (tipicamente 50K-300K), cresce por Clone/Split até pouco antes de Densify Until, depois fica estático até o final do treinamento (módulo pruning) - MCMC: pontos de amostra são adicionados até o limite (cap) do MCMC, depois apenas relocação
Valores finais saudáveis: - Classic Quality: 400K-700K (Horse 524K, Garden 800K) - MCMC Full: exatamente no cap (padrão 150K, com Auto-Scale Multiplier × contagem de SfM dependendo da cena 500K-1.5M)
No MCMC, se o número cair para < 60% do cap → anomalia (indicador de collapse, indica regularizadores muito agressivos).
I35GPU Memory
ONDE
Inspector → Progresso → Training Metrics → GPU Memory. Somente leitura.
TÉCNICO
Estimativa do consumo de memória do buffer de Gaussians como contagem de Gaussians × 616 bytes (formatado no estilo de memória). 616 bytes é o tamanho de um Gaussian totalmente equipado (posição, escala, rotação, opacidade, coeficientes SH de grau 3, acumulador de gradiente). A exibição não captura o overhead do renderer (buffer de tiles, buffer de ordenação, buffer de backward) — a necessidade real de memória de GPU fica tipicamente 2-3× acima desse valor. Com 500K Gaussians: exibido ~290 MB, real ~700 MB. Com 1.5M Gaussians: exibido ~880 MB, real ~2.5 GB. Em um M3 Max com 64+ GB de memória unificada não é crítico, em um M3 Pro com 18 GB já é um limite.
I36Speed
ONDE
Inspector → Progresso → Training Metrics → Speed. Somente leitura.
TÉCNICO
Iterações por segundo com uma casa decimal („24.3 it/s"). Calculado pelo trainer como média móvel sobre as últimas ~100 iterações. Valores típicos: - Preset Quick (1K iters): 80-120 it/s (curto, sem estado estável) - Classic 20K @ 1.0 Render Scale (cena Truck, M3 Max): 25-35 it/s - Classic 20K @ 0.5 Render Scale: 80-120 it/s - MCMC 200K @ 0.5 Render Scale: 25-50 it/s (mais lento devido à relocação) - Com 1M+ Gaussians e resolução total: < 10 it/s
A diminuição da velocidade ao longo do treinamento é normal — mais Gaussians = mais processamento por iteração. Quedas repentinas (ex.: de 30 → 5 it/s) indicam throttling térmico da GPU ou apps concorrentes.
I37Elapsed
ONDE
Inspector → Progresso → Training Metrics → Elapsed. Somente leitura.
TÉCNICO
Tempo já decorrido como „4:23" (m:ss) ou „1:23:45" (h:mm:ss). Mudança de formato a partir de 1 hora. Mede apenas o tempo puro de treinamento, não as fases anteriores (cálculo de SfM, importação de imagens). Ao pausar/retomar, o relógio continua correndo — ou seja, é tempo de relógio (wall-clock), não tempo de CPU.
Seção do gráfico de perda (I39–I41)

O grupo do gráfico de perda ("Loss History", o segundo grupo recolhível na seção Progresso) visualiza o histórico de treinamento ao longo do tempo. Consiste em dois gráficos: um gráfico de curva de perda (grande, em cima, azul) e um gráfico de contagem de Gaussianas (menor, embaixo, laranja). Ambos são construídos ao vivo durante o treinamento e persistem até o próximo início de treinamento. Antes do primeiro treinamento, a área fica vazia ("Loss curve will appear during training"). Os gráficos são puramente desenhos SwiftUI-Path (sem o framework Swift Charts), para que renderizem de forma fluida mesmo com mais de 100 mil pontos.
I39Current Loss (exibição)
ONDE
Inspector → Progresso → Loss History → área de rótulo à esquerda "Current: 0.0075". Somente leitura.
TÉCNICO
Valor float do último ponto de amostra de perda, formatado com quatro casas decimais. Idêntico a I31 (Loss na seção de métricas), só que formatado de forma mais compacta aqui. A fonte é o histórico de perda — uma lista que recebe uma entrada a cada ~30 iterações. Apenas valores finitos são incluídos na lista — NaN/Infinity (muito raro, em caso de um bug de explosão de gradiente) são filtrados.
I40Min Loss (exibição)
ONDE
Inspector → Progresso → Loss History → área de rótulo à direita "Min: 0.0051" (verde). Somente leitura.
TÉCNICO
Mínimo de todos os valores de perda já vistos na execução de treinamento atual. É recalculado ao vivo a partir do histórico de perda — sem persistência separada. É exibido em texto verde, porque "Min" = "melhor até agora". A linha verde tracejada na borda inferior do gráfico marca essa posição Y visualmente. Em sessões de Continue Training, o rastreamento do mínimo recomeça — o histórico antigo é substituído na UI pelo novo (não anexado). Se o treinamento atual estiver indo pior do que o anterior, a exibição de Min pode, portanto, ser maior do que o resultado final anterior.
I41Gráfico Gaussian Count
ONDE
Inspector → Progresso → Loss History → segundo gráfico logo abaixo (laranja). Somente leitura.
TÉCNICO
Gráfico de linha do número de Gaussianas ao longo das iterações de treinamento. Fonte: o histórico de contagem de Gaussianas (lista de pares (Iter, Count), preenchida pelo treinador a cada ~30 iterações). Escala Y dinâmica entre o mínimo e o máximo do histórico. Na estratégia Classic, a curva tipicamente tem esta forma: subida constante até Densify Until, depois plana (com pequenas oscilações de pruning). No MCMC: subida acentuada até o limite (cap), depois uma linha horizontal (o Relocation mantém o número constante). Uma queda bem no final é normal — na imagem acima, a curva cai de cerca de 16K para 9.660, porque as passagens de limpeza atuam após a última iteração (I26). Só é preocupante uma queda no meio da execução: nesse caso, a densificação está fazendo pruning de forma agressiva demais — indício de defaults errados ou de um bug conhecido de colapso do MCMC (tema do hotfix v1.4.4).
Como ler a curva de perda?
O gráfico de perda é a ferramenta de diagnóstico mais importante no Inspector — nenhum outro indicador mostra de forma tão direta se o treinamento está progredindo de forma útil ou travado. A forma tipicamente saudável é uma queda rápida nas primeiras 1000-3000 iterações (de ~0,15 para ~0,05), seguida de uma queda lenta e constante até o fim do treinamento (para 0,020-0,030). Em escala logarítmica, a curva parece uma diagonal suave.
O que significa um platô na perda? Se a curva permanecer plana por vários milhares de iterações, há duas leituras possíveis: (a) O treinamento "convergiu" — a perda não consegue mais cair de forma significativa, porque o modelo está tão bom quanto pode ficar com os dados e configurações dados. Isso é desejável; significa "pronto". (b) O treinamento "travou" — a perda ainda poderia cair, mas a otimização está estagnada (mínimo local, taxa de aprendizado muito baixa, densificação desligada). Para diferenciar: se o valor de perda está numa faixa tipicamente boa (0,020-0,030 em cenas internas/ objetos, 0,040-0,060 em cenas externas) e a curva está plana há 5K iterações, convergiu. Se o valor está claramente mais alto do que em cenas comparáveis (por exemplo, 0,08), está travado.
Atenção: platô de Gaussianas ≠ platô de perda. Um platô no número de Gaussianas não significa "o treinamento terminou". Significa apenas que a densificação parou de adicionar novos pontos — seja porque foi atingido (Classic) ou porque o limite (cap) do MCMC está cheio. O treinamento continua depois disso, apenas refinando os pontos já existentes. O verdadeiro sinal de "pronto" você lê na curva de perda e no contador de iterações (I30), não aqui.
Regra prática para interromper: Se a curva de perda estiver acima de 0,08 após 5000+ iterações e quase não estiver mais caindo, há uma alta probabilidade de que a reconstrução SfM esteja errada. Interrompa o treinamento, verifique no Capítulo 9 se o backend SfM escolhido combina com a cena, se necessário mude para COLMAP/Native, e depois reinicie. É melhor investir 10 minutos em um SfM melhor do que 2 horas de treinamento com um alinhamento de câmera ruim.
Quando usar o Inspector?
Referência rápida: Qual seção + quais Controls para qual caso de uso típico?
| Tarefa comum | Seção | Control-IDs |
|---|---|---|
| Dessaturar as cores do splat finalizado | Look | L1 (Saturation) |
| Arredondar splats em forma de agulha/confete | Look | L2 (Splat length) |
| Preencher nuvem cheia de buracos / aumentar splats | Look | L3 (Splat size) |
| Ocultar "confete distante" em órbitas | Look | L4 (Fade far region) |
| Descartar ajustes de Look | Look | L5 (Reset finishing) |
| Carregar configuração pré-definida | Presets | I7 (clicar na linha) |
| Salvar configuração própria | Presets | I1 → I2 → I4 |
| Compartilhar configuração com colegas | Presets | I5 (Export) ou I6 (Import) |
| Trocar backend de SfM (por exemplo, porque o Apple-PG está instável) | Câmeras & Captura | I12 (ver cap. 9) |
| Processar frames de vídeo sem distância focal EXIF | Câmeras & Captura | I13 (FOV Override) |
| Performance do COLMAP: GLOMAP em vez de Clássico | Câmeras & Captura | I14 — somente em builds de desenvolvedor, no build da App Store o COLMAP não está disponível como backend |
| Mudar de Classic para MCMC | Configuração de treinamento | I15 |
| Deixar o treinamento rodar por mais tempo | Configuração de treinamento | I18 (Max Iter) + I20 (Densify Until) — acoplados via I19 |
| Reduzir pela metade o tempo de GPU | Configuração de treinamento | I22 (Render Scale em 50%) |
| Qualidade de treinamento +6% (MCMC) | Configuração de treinamento | I16 (MCMC Quality) |
| Cena externa com muitos pontos SfM | Configuração de treinamento | I17 (Auto-scale by scene) |
| Configurar / trocar o caminho do COLMAP | Câmeras & Captura | I23 / I24 / I25 — somente em builds de desenvolvedor |
| Reduzir o tamanho dos arquivos de exportação | Treinamento | I26 (deixar sempre ativado) |
| Último detalhe fino em estruturas delicadas | Treinamento | I29 (Perceptual Loss 0.05-0.1) |
| Monitorar o treinamento | Progresso ▸ Training Metrics | I30 (Progresso), I36 (Ritmo) — o tempo restante aparece na faixa de transporte abaixo do Viewport |
| Avaliar a qualidade cedo | Progresso ▸ Training Metrics | I31 (Loss < 0.05 após 5K = bom) |
| Suspeita de problema de SfM | Progresso (ambos os grupos) | I31 + I39 (Loss > 0.08 após 5K → refazer SfM) |
| Diferenciar Convergence de Stuck | Progresso ▸ Loss History | I39 + I40 (ler o platô de Loss) |
| Detectar problema de Densification | Progresso ▸ Loss History | I41 (curva Gaussian cai → bug) |