1 O contínuo entre o sintético e o real — Resumo

Versão de revisão. Esta é a passagem rápida pelo vocabulário do primeiro capítulo, na ordem em que ele foi construído. O desenvolvimento longo, com os exemplos completos e os casos discutidos um a um, está na versão integral deste capítulo e no capítulo correspondente do livro. Use este texto para conferir se cada critério ficou de pé e volte lá onde ele não estiver.

Um capítulo inteiro sem desenhar um polígono na tela. O que se ganha nele é o direito de olhar um sistema qualquer e dizer o que ele faz, sem repetir o que estava escrito na caixa.

1.1 O eixo que substituiu duas caixas

Em 1994, dois engenheiros trocaram uma briga sem saída por uma pergunta que tem resposta.

Paul Milgram era engenheiro na Universidade de Toronto quando publicou, com Fumio Kishino, uma taxonomia de visores. O campo vivia travado numa disputa que não andava. Cada aparelho novo reabria a mesma briga: aquilo era realidade virtual, ou não era? A saída dos dois foi elegante e quase preguiçosa. Eles pararam de fazer a pergunta.

Repare onde estava o defeito. Os aparelhos eram inocentes, e o formato da pergunta condenava qualquer resposta. Toda pergunta do tipo “isto é X?” exige uma fronteira, e ninguém desenhava uma que não jogasse caso absurdo para o lado errado. No lugar dela entrou uma pergunta de grau. Quanto de mundo real este sistema mostra, e quanto de mundo construído? Grau admite medida, e medida admite comparar coisas que ninguém batizou antes.

flowchart LR
    R["Ambiente real puro<br/>nenhuma imagem sintetica"] --> A["O real domina<br/>e recebe acrescimos<br/>construidos"]
    A --> B["O construido domina<br/>e recebe pedacos<br/>do real"]
    B --> S["Ambiente sintetico puro<br/>nada do comodo<br/>onde voce esta"]
    A -.- N1["A engrenagem apoiada<br/>na sua mesa"]
    B -.- N2["A oficina inteira,<br/>com suas maos reais<br/>capturadas por camera"]
Figura 1: O contínuo entre o real e o sintético: um eixo com duas faixas largas no meio, em vez de duas caixas separadas.

Entre as pontas ficam duas faixas, separadas por quem domina a cena. Numa delas o real domina e recebe acréscimos. Na outra, o construído domina e recebe pedaços do real. Daí sai a consequência que mais salva projeto: um sistema pode se mover ao longo do eixo enquanto roda. Com duas caixas, isso exigiria outro programa; com um eixo, muda um parâmetro.

Guarde também o recorte da ferramenta, porque esconder recorte transforma ferramenta em superstição. O eixo mede uma coisa só. É a relação entre o que se exibe e o mundo de quem observa. Ele não mede preço, não mede nitidez, não mede conforto e não mede crença. Sobra a parte incômoda de todo capítulo de vocabulário: três palavras centrais circulam com dois sentidos cada.

Realidade mista nomeia, na taxonomia, a faixa inteira do meio; no comércio, virou categoria de produto, com oclusão e colisão contra a sala. Um requisito escrito com ela pode custar uma tarde ou custar meses. Imersivo virou elogio, quando no uso técnico é grandeza do aparelho, medida em graus e em milissegundos. E virtual, na conversa comum, quer dizer falso; no uso técnico, quer dizer gerado por computação. Escreva o comportamento observável no lugar do rótulo, e ninguém lerá a frase de dois jeitos.

1.2 Três verbos e uma escada de registro

A pergunta que substitui o rótulo é rude e cabe em oito palavras: o que este sistema fez com o cômodo?

Só há três respostas para ela. O sistema substituiu o cômodo, preservou o cômodo, ou exibiu algo sem tocar nele. A classificação sai desses três verbos. Nenhum deles depende de marca, de preço ou do nome que o fabricante deu à linha. Cada verbo é uma promessa técnica que o ambiente terá de cumprir mais adiante.

Um visor opaco substitui, e a promessa aí é a mais pesada das três. O chão inteiro passa a ser responsabilidade do sistema, e a imagem precisa acompanhar o pescoço sem atraso perceptível. O segundo caso preserva a sala e deposita coisas sobre ela. O objeto depositado tem de ficar onde foi posto enquanto você caminha em volta. Errar isso se vê a olho nu: a engrenagem desliza sobre a mesa, e ninguém precisa de instrumento para notar.

flowchart TB
    Q{"O que o sistema fez<br/>com o comodo onde<br/>a pessoa esta?"}
    Q -->|"substituiu"| S["O chao e responsabilidade sua<br/>origem presa ao piso medido"]
    Q -->|"preservou"| P["O objeto tem de ficar<br/>onde foi posto<br/>origem numa superficie real"]
    Q -->|"nao tocou"| E["Janela numa tela<br/>origem arbitraria<br/>nada externo para conferir"]
    E --> R0["registro: nenhum"]
    S --> R1["registro: parcial<br/>o chao e real, as paredes nao"]
    P --> R2["registro: completo<br/>o erro aparece como escorregao"]
Figura 2: Os três verbos, o espaço de referência que cada um adota e quanto mundo real cada um precisa acertar.

O terceiro caso exibe a cena numa janela e não toca no cômodo. É a promessa mais modesta, e por isso o regime mais subestimado do percurso. Ele roda em qualquer máquina comum, e é para onde tudo degrada quando o aparelho não oferece coisa melhor. Um ambiente que só existe com o visor no rosto deixa de existir para quase todo mundo. Aqui esse regime é o caso base, nunca a sobra.

A escada do registro ordena os três por uma pergunta só. Onde fica a origem das coordenadas? Numa janela ela é arbitrária, fixada por quem modelou a cena, e não existe nada externo com que discordar. Num visor opaco ela passa a ser o chão físico da sala. Chão estimado dez centímetros abaixo do real produz bancada alta demais, e o corpo percebe o erro antes de a cabeça conseguir explicá-lo.

Na cena aumentada, a origem é uma superfície real escolhida: a mesa, o tampo do balcão, o chão à sua frente. A cada degrau o sistema passa a depender de mais uma medida do mundo que ele não controla. O efeito colateral costuma surpreender quem começa. Quanto mais alto o degrau, mais barato fica errar de forma visível, porque existe referência externa denunciando o engano. Construa pelo degrau de baixo e confira pelo mais alto que o seu equipamento alcançar.

1.3 Por onde a luz do cômodo chega aos olhos

Duas soluções ópticas, contas de latência opostas, e uma delas nunca consegue desenhar preto.

Preservar o cômodo é um problema óptico antes de ser um problema de software. A luz da sala precisa chegar aos olhos junto com a imagem gerada, e há duas famílias de solução. No ver-através óptico, a luz real chega direto e a imagem é somada a ela por um espelho semitransparente ou por um guia de onda. No ver-através por vídeo, câmeras capturam a sala, o sistema compõe sobre esse vídeo e exibe tudo numa tela opaca.

flowchart TB
    Q{"Por onde a luz do<br/>comodo chega aos olhos?"}
    Q -->|"direto, somada<br/>por espelho ou guia de onda"| O["Ver-atraves optico"]
    Q -->|"por camera, composta<br/>numa tela opaca"| V["Ver-atraves por video"]
    O --> O1["mundo sem atraso,<br/>imagem gerada atrasada:<br/>o desencontro aparece"]
    O --> O2["soma luz e nunca subtrai:<br/>nao desenha preto,<br/>nao oclui"]
    V --> V1["mundo e imagem atrasam<br/>juntos e podem ser coerentes"]
    V --> V2["controla cada ponto:<br/>oclui, escurece,<br/>responde pela seguranca"]
Figura 3: As duas famílias de ver-através e o que cada uma cobra em troca do que oferece.

A conta de latência é contraintuitiva. No óptico, o mundo chega instantâneo e a imagem gerada chega atrasada, e é o desencontro entre os dois que a pessoa percebe. Quanto melhor a visão da sala, mais evidente fica o atraso do que foi desenhado sobre ela. No de vídeo, os dois atrasam juntos e podem atrasar de forma coerente. Em troca, a sala inteira chega aos seus olhos com atraso.

A segunda diferença é definitiva. O óptico soma luz e nunca subtrai, portanto não desenha preto nem esconde o que está atrás do objeto virtual. Uma engrenagem escura que deveria tapar a mesa vira fantasma pousado no ar. O de vídeo controla cada ponto da imagem final e substitui a região inteira. Cada família falha com sintoma próprio. O óptico erra por desalinhamento e perde contraste sob luz forte. O de vídeo cobra o atraso do mundo e o desconforto que vem com ele.

Uma pista de campo para levar no bolso. Diante de um aparelho desconhecido, tape uma das câmeras frontais com o dedo. Se a imagem do mundo escurecer, é ver-através por vídeo. Se a sala continuar visível e apenas o rastreamento se degradar, é óptico.

O teste de um vocabulário não é explicar os casos para os quais ele foi feito. Aplique o critério a um simulador de voo com cabine física, que ninguém vende como realidade virtual. A cabine é preservada inteira, com manetes, assento e o peso do cinto no ombro; o que foi substituído foi apenas a janela. Ele ocupa dois pontos do eixo ao mesmo tempo, e isso não é falha da taxonomia. Fica a lição de projeto: preservar o pedaço do mundo que já está certo sai sempre mais barato do que reproduzi-lo.

1.4 Imersão, presença e registro

Um objeto grosseiro com o tamanho certo é aceito pelo corpo; um objeto lindíssimo com meio segundo de atraso enjoa em minutos.

A frase só surpreende quem confunde três coisas. Imersão é propriedade do sistema. Presença é resposta da pessoa. Registro é relação com o mundo físico. Separar as três custa meia página aqui e economiza o percurso inteiro depois.

flowchart TB
    P["A mesma sessao,<br/>tres perguntas diferentes"] --> I["Imersao<br/>onde se mede: no aparelho"]
    P --> PR["Presenca<br/>onde se mede: na pessoa"]
    P --> RG["Registro<br/>onde se mede: contra o<br/>mundo fisico visivel"]
    I --> I2["campo de visao, latencia,<br/>graus de liberdade,<br/>taxa de atualizacao"]
    PR --> P2["comportamento observavel:<br/>desviar, hesitar,<br/>estender a mao"]
    RG --> R2["o objeto fica onde foi posto<br/>enquanto voce anda em volta"]
Figura 4: Três grandezas e três lugares de medição: a mesma sessão responde a perguntas diferentes conforme onde se põe o instrumento.

Imersão mede-se no aparelho, sem ninguém vestir nada. Conte campo de visão em graus, latência entre movimento e imagem, graus de liberdade rastreados, taxa de quadros sustentada. Repare que a definição sequer menciona um observador humano. Ela serve como critério de compra e falha como critério de sucesso. Presença mede-se na pessoa, e mede-se por comportamento observado. Alguém desvia de um obstáculo que sabe não existir, ou desacelera o braço perto de um objeto que não está lá.

Presença é o palco acertando escala e tempo; fidelidade é a pintura do cenário, e cenário pintado não segura ninguém no lugar. Registro, a terceira palavra, é a correspondência geométrica entre o objeto sintético e o referencial real a que ele foi associado. Num ambiente que substitui o mundo não há referencial visível, logo não há registro a avaliar. E escala entra nessa conta: objeto na posição certa com o dobro do tamanho está tão errado quanto um deslocado.

O caso de 1968 fecha o argumento melhor do que qualquer definição. Ivan Sutherland apresentou um visor acoplado à cabeça pesado demais para um pescoço humano, e a solução foi pendurá-lo num braço mecânico preso ao teto do laboratório. O apelido ficou: espada de Dâmocles, pela peça suspensa sobre quem sentava embaixo. O aparelho desenhava arestas de arame, sem superfície, sem cor e sem sombra. Ainda assim quem o usou relatou ter diante de si um objeto tridimensional.

Por que aquilo funcionava? Um cubo de arame visto de um ângulo fixo é um emaranhado ambíguo de linhas. O mesmo cubo, girando com o pescoço de quem olha, deixa de ser ambíguo em menos de um segundo. O cérebro desfaz a ambiguidade pelo movimento, não pela textura, e isso é requisito de tempo, não de aparência. Sutherland acertou escala e resposta ao movimento, errou em quase tudo o mais, e o campo nasceu ali.

Dois detalhes daquele trabalho envelheceram melhor do que a fama deles. O braço não apenas sustentava peso: media também a posição e a orientação da cabeça, com juntas rígidas de geometria conhecida. É o ancestral do rastreamento por infraestrutura externa, e a troca era brutal, movimento por certeza. O mesmo trabalho descreve um segundo medidor, por ultrassom, sem contato com o teto. O rígido acertava mais e prendia mais; o sem contato libertava e errava mais.

E as duas telas minúsculas não entregavam a imagem direto à vista. O desenho chegava aos olhos refletido em espelhos semitransparentes, que deixam passar o que está atrás deles. Quem vestia aquilo via as arestas de arame e via a sala do laboratório, sobrepostas. Somar luz sem nunca subtrair é a definição de ver-através óptico. O ancestral do campo inteiro não nasceu no extremo sintético: nasceu do lado que hoje se chama de aumentado.

Uma ressalva sobre esse relato, e ela cobra alguma coisa de quem escreve. Números daquele aparelho, como campo de visão, peso e taxa de atualização, circulam em versões que não batem entre si, e boa parte vem de recontagem. Não os repito aqui. Número errado dito com confiança é pior do que número nenhum, e o que o próprio trabalho descreve já basta ao argumento.

A pergunta que desarma o encantamento. Frederick Brooks passou anos em Chapel Hill pondo químicos para encaixar moléculas com um braço mecânico de retorno de força montado sobre a bancada. No balanço de 1999, escreveu que a realidade virtual tinha saído do estágio de quase funcionar para o de mal e mal funcionar. Quem escreveu aquilo trabalhava na área e tinha motivo de sobra para exagerar na direção contrária. Diante de qualquer demonstração, faça a pergunta que ele autoriza: contra o que esta cena está registrada, e como o sistema obteve essa referência?

1.5 Quando o contínuo vira campo de dado

A taxonomia de 1994 acabou virando três valores que a plataforma informa em tempo de execução.

Um aparelho de ver-através por vídeo pode, em software, escurecer por completo o vídeo do mundo. Nesse instante ele deixa de preservar o cômodo e passa a substituí-lo, sem trocar de equipamento e sem trocar de programa. A posição no eixo é estado do sistema em execução, e não atributo do produto. Estado assim precisa virar dado, em vez de suposição espalhada pelo código.

flowchart LR
    S["Sessao ativa informa<br/>o modo de composicao<br/>do fundo"] --> OP["opaco"]
    S --> AD["aditivo"]
    S --> MP["mesclado por<br/>transparencia"]
    OP --> V1["substituir:<br/>o chao e responsabilidade sua"]
    AD --> V2["preservar somando luz:<br/>proibido depender de preto"]
    MP --> V3["preservar compondo video:<br/>pode ocluir, herda o atraso"]
Figura 5: Os três modos de composição do fundo e o que cada um concede em troca da conta que cobra.

A plataforma de realidade estendida do navegador informa, para cada sessão ativa, como o fundo é composto: opaco, aditivo ou mesclado por transparência. São os três verbos traduzidos para a linguagem da composição de imagem. Opaco carrega a promessa pesada de que o chão é responsabilidade sua. Aditivo é o ver-através óptico escrito como valor de configuração, com a proibição embutida de contar com preto. Mesclado por transparência permite ocluir e escurecer, e herda em troca a responsabilidade sobre o atraso.

Antes da sessão existe uma pergunta mais grosseira. Este aparelho entra neste regime? Ela parece ter duas respostas e tem três: sim, não, e não sei. A terceira aparece quando o navegador não implementa a interface, ou quando a página está fora de contexto seguro. É assim que a Bancada, a oficina de montagem que serve de implementação de referência ao longo do livro, faz a triagem antes de desenhar qualquer coisa.

export type Suporte = 'sim' | 'nao' | 'desconhecido';

async function suporteDe(id: RegimeId): Promise<Suporte> {
  const xr: XRSystem | undefined = sistemaXr();
  if (xr === undefined) {
    return 'desconhecido';
  }
  try {
    const suportado: boolean = await xr.isSessionSupported(id);
    return suportado ? 'sim' : 'nao';
  } catch {
    return 'desconhecido';
  }
}

Repare no que o tipo impede. Com três valores declarados, ninguém consegue guardar ausência de resposta no mesmo lugar de uma negativa sobre o aparelho. O bloco que captura a falha devolve o terceiro estado porque promessa rejeitada também é não responder. Tratar as duas coisas como iguais produz um relatório confiante e errado, que roda, preenche a tabela e apresenta um resultado plausível. Ninguém abre chamado por causa de relatório que funciona.

1.6 Um domínio sem tarefa é uma cena bonita e vazia

O erro mais caro deste ponto do percurso não custa nada na hora em que é cometido.

Peça a dez pessoas que descrevam um ambiente tridimensional e você recebe dez cenários. Uma estação espacial, um museu, uma floresta com bichos. Todas são cenas, e nenhuma é um ambiente interativo. Uma cena se olha. Um ambiente interativo faz alguém tentar alguma coisa, conseguir ou falhar, e saber qual dos dois aconteceu.

A palavra que separa os dois é tarefa, e a exigência é seca: existe algo que a pessoa está tentando fazer aqui, e esse algo cabe em uma frase. Num museu virtual, andar e olhar descreve um passeio, e passeio não tem fim. Ambiente sem fim obriga alguém, capítulos adiante, a inventar um critério artificial de sucesso. Numa oficina de montagem, a pessoa encaixa cada peça no lugar certo, na ordem em que uma depende da outra. Aquilo tem começo, meio e fim, e tem erro possível.

flowchart TB
    D["Dominio escolhido"] --> T["Tarefa em UMA frase<br/>com uma acao e um fim"]
    T --> E["Estado final observavel<br/>de fora, sem abrir o codigo"]
    E --> C{"Conferencia mecanica"}
    C -->|"peca sem encaixe"| X1["decoracao disfarcada<br/>de conteudo"]
    C -->|"encaixe sem peca"| X2["passo da tarefa que<br/>voce esqueceu de escrever"]
    C -->|"tudo emparelhado"| OK["dominio fechado"]
Figura 6: Do domínio à conferência mecânica: peça órfã e encaixe órfão são os dois defeitos que a máquina encontra em milissegundos.

Erro possível é o que torna o ambiente ensinável. Ambiente em que nada dá errado não ensina nada. O estado final tem de ser visível de fora, e o teste é o mais barato que existe. Alguém que nunca abriu o seu código, olhando a cena, consegue dizer se a tarefa terminou? “O usuário completou a montagem” apenas repete a tarefa com outras palavras. Já as cinco peças encaixadas nos lugares compatíveis, na ordem válida, com o mecanismo girando, dispensam relatório de depuração.

Há ainda a conferência que não depende de julgamento nenhum: toda peça declarada encaixa em algum lugar, e todo encaixe recebe alguma peça. Isso a máquina confere em milissegundos, e é a razão de a delimitação ser escrita como dado tipado, e não como texto corrido. Intenção em prosa tem uma propriedade perigosa. Ela continua parecendo certa meses depois de ter deixado de ser, porque nada nela apodrece.

Sobre o que a fidelidade compra, cuidado com o exagero na direção oposta. Aparência serve ao reconhecimento. Quem não distingue a engrenagem grande da pequena não cumpre a tarefa. Serve também à posição: sombra e oclusão são evidência de lugar, e um objeto sem sombra flutua mesmo no ponto geométrico certo. No regime que preserva o mundo, parte da aparência vira registro, e ali a separação entre palco e pintura se afrouxa.

Pare um instante e responda. Pense na última demonstração desta área que você viu. Aquele detalhe visual que impressionou estava ajudando alguém a entender o que fazer, ou apenas a acreditar no que via? A segunda coisa colapsa fora do palco da demonstração.

O saldo é um vocabulário que classifica sistemas por decisão técnica e um domínio delimitado antes da primeira linha de desenho. Fica de pé a pergunta grande do capítulo seguinte: como um equipamento que não sabe nada sobre a sua sala descobre onde está o chão dela? O braço mecânico de 1968 cobrava a imobilidade de quem o usava. A resposta moderna é outra, e é estranha. O aparelho desenha a planta da sala enquanto atravessa a sala, e corrige o desenho toda vez que reconhece um canto por onde já passou.