Ir para o conteúdo

Calibration Tool e baseline de compatibilidade 1.5

Este documento registra a referência visual e contratual da linha 1.x final. Ele não presume que um teste headless possa validar GPU, projetor, lente ou receiver. A prontidão consolidada está em Prontidão para Release.

Baseline Histórica

A primeira trava foi levantada sobre a versão 1.4.0, com Java 17, Processing core 4.5.6, Devolay 2.2.0-vic.1 e JUnit 5.10.0. O snapshot textual da API pública daquela etapa permanece em docs/qualification/public-api-1.4-head.txt como evidência bruta, fora da navegação localizada.

Os testes automatizados preservam:

  • nome da fachada pública, construtor, lifecycle e acessores essenciais;
  • ordem dos enums ViewType, InitState, outputs e modos de log;
  • contrato de Scene.sceneRender(PGraphicsOpenGL) e eventos default;
  • política de resolução do preview esférico;
  • buckets de aspect ratio do output Standard;
  • defaults de roteamento e seleção independente por output;
  • política de RenderMode, layout do painel e orientação por quaternion.

Execute a qualificação automatizada com:

./gradlew clean qualificationTests

Para validar também os pacotes Processing:

./gradlew buildReleaseArtifacts

Harness Visual

examples/CalibrationTool/ contém duas cenas complementares para qualificação de GPU, projeção, foco, cor e output.

Cena 1: faces do cubo

Seis alvos GLSL 4.10 usam coordenadas locais explícitas 0..1 em um cubo fechado. A camada de anotações é composta no mesmo passe, enquanto linhas, pontos, grades e degradês dependentes de resolução continuam procedurais. O conjunto acompanha a matriz esférica compartilhada de pitch, yaw e roll.

Verifique:

Área Critério
Identidade índices e rótulos +X, -X, +Y, -Y, +Z, -Z distinguíveis
Alinhamento grades 24 x 24, safe areas, círculos, raios e crosshairs centrados
Orientação marcadores UP, R e cantos sem espelhamento ou giro indevido
Foco pares de linhas de 1, 2, 4 e 8 pixels separáveis
Amostragem pontos de 1, 2, 3 e 4 pixels e estrelas revelam bloom e resampling
Cor rampas RGB/CMY e barras RGB/CMY/W/K distintas e ordenadas
Luminância rampa contínua, nove passos e patches próximos ao preto/branco sem clipping inesperado
Emendas ordem das faces e continuidade nas bordas correspondem ao baseline

Cena 2: referência esférica 360 graus

A cena seleciona um dos padrões equiretangulares v14 originais e não modificados de Paul Bourke: 2400 x 1200, 4096 x 2048, 4800 x 2400 ou 8192 x 4096. Com outputs ativos, o bucket acompanha a resolução esférica; sem outputs, usa a fonte mais próxima da janela.

A textura cobre uma esfera completa de 1800 unidades centrada em (0, 0, 0), com polo norte em +Z, polo sul em -Z e equador em Z=0. Autoria, hashes e condições de redistribuição estão em examples/CalibrationTool/THIRD_PARTY.md.

Controles Manuais

Controle Ação
Setas esquerda/direita Trocar entre as duas cenas
1, 2, 3, 4 Domemaster, equiretangular, skybox e Standard
[ / ] Reduzir/aumentar Size%
- / = Reduzir/aumentar FOV
p, y, r Avançar pitch, yaw e roll
f Alternar domemaster flutuante
0 Restaurar o estado canônico de calibração
Cena 2: Espaço Alternar uma volta em 60 segundos
Cena 2: t Alternar perfis temporais de 30 fps/1800 frames e 60 fps/3600 frames
Cena 2: , / . Girar um grau e pausar
Cena 2: c Restaurar a orientação da fonte e pausar

O sketch não chama ziviDome.draw() porque a biblioteca registra o próprio hook de desenho no Processing.

Limite da Automação

Não são fabricadas golden images. Cada máquina qualificada deve registrar OS, arquitetura, GPU, driver, Processing, resolução, receiver, capturas e erros OpenGL observados. A mesma sequência deve ser repetida para NDI e para o backend local suportado pela plataforma.