Apostila completa de Spatial Computing, XR & WebXR
Spatial computing coloca a interface no espaço à sua volta — em headsets como Vision Pro e Quest, em óculos, e no navegador via WebXR. Esta apostila cobre o vocabulário (AR/VR/MR, 3DoF/6DoF), conforto e segurança como requisitos, os modelos de interação (mãos, olhar, voz), o design de UI espacial, WebXR na prática com three.js/R3F, os assets 3D e os orçamentos de performance, as plataformas nativas (visionOS, Meta, Android XR), os recursos avançados (occlusion, anchors, multiusuário), e a produção, o negócio e a ética.
O que é spatial computing
Objetivo: o vocabulário (AR/VR/MR/XR, o continuum, 3DoF/6DoF), o panorama de dispositivos, e onde vale a pena de verdade.
1.1 O continuum
- VR (realidade virtual): o mundo real é substituído; você está "dentro" de um ambiente sintético.
- AR (realidade aumentada): conteúdo virtual sobreposto ao mundo real (do celular ao headset).
- MR (realidade mista): o virtual interage com o real — objetos virtuais são tapados por móveis reais, pousam na sua mesa, respondem à geometria da sala.
- XR / spatial computing: guarda-chuva para tudo isso. "Spatial computing" é o termo que a Apple popularizou; na prática, sinônimo de XR com foco em passthrough e UI espacial.
- Milgram & Kishino descreveram isso como um continuum realidade↔virtualidade — não caixas separadas.
Esta apostila complementa a apostila Realidade Aumentada (que foca em AR mobile e conceitos) com UI espacial, WebXR e o estado de 2026 (headsets de MR, óculos, o ecossistema de dev).
1.2 3DoF × 6DoF
- 3DoF (3 graus de liberdade): rastreia só a rotação da cabeça (olhar em volta). Cardboard, headsets antigos, alguns óculos. Você não pode se mover no mundo virtual.
- 6DoF: rotação e translação (andar, agachar, inclinar). O padrão dos headsets atuais (Quest, Vision Pro). Habilita presença e interação real.
- Controllers e mãos também são 3DoF ou 6DoF.
1.3 Os dispositivos (panorama 2026)
| Categoria | Exemplos | Perfil |
|---|---|---|
| Headset de MR premium | Apple Vision Pro | passthrough de alta qualidade, olhar + pinça + voz, sem controllers por padrão, visionOS |
| Headset de MR "mainstream" | Meta Quest 3 / 3S | controllers + hand tracking, passthrough colorido, catálogo de jogos, preço acessível |
| Plataforma XR mobile | Android XR (Samsung/Google), ARCore | headsets e óculos com Android; Gemini integrado |
| Smart glasses | óculos com display leve / assistente | AR "glanceable", campo de visão pequeno, foco em notificações, câmera, IA |
| AR no celular | ARKit (iOS), ARCore (Android) | o maior alcance instalado; a base da apostila Realidade Aumentada |
1.4 Onde vale — e onde é hype
- Vale hoje: treinamento e simulação (soldagem, procedimentos, segurança), revisão de design 3D (arquitetura, produto, cenografia), telepresença/colaboração 3D, manutenção e campo com AR (instruções sobrepostas), saúde (reabilitação, exposição terapêutica), varejo "veja na sua sala" (AR de móvel/produto), educação imersiva.
- Ainda hype / não vale: substituir o monitor para trabalho de escritório o dia todo (conforto, resolução, fadiga), "metaverso social" de massa, reuniões genéricas que uma chamada de vídeo resolve melhor, qualquer coisa que force o headset onde uma tela 2D é superior.
- A pergunta: este problema se beneficia de escala real, profundidade, presença no espaço ou sobreposição ao mundo? Se não, é uma tela.
Conforto e performance não são "polimento" — são requisitos de entrada. Uma experiência espacial que enjoa, cansa ou cai de frame rate falhou, por melhor que seja o conceito. Toda decisão de design e de engenharia passa primeiro por "isto é confortável e roda a 90 fps?".
Perguntas de abertura: "Diferença entre AR, VR e MR?" (sobrepor / substituir / o virtual interagir com o real), "3DoF vs 6DoF?" (só rotação vs rotação + translação — andar), "O que é 'spatial computing'?" (termo da Apple para XR com passthrough e UI espacial), "Onde XR entrega valor hoje?" (treinamento, design review 3D, campo/manutenção, telepresença, varejo AR — não "substituir o monitor").
✏️ Exercício 1 — Tela ou espaço
Para cada ideia, diga se XR agrega valor real ou se uma tela resolve melhor, e por quê: (a) treinar técnicos a trocar uma peça de um motor a jato; (b) um dashboard de vendas da empresa; (c) mostrar como um sofá fica na sala do cliente; (d) uma reunião de status semanal de 6 pessoas; (e) revisar o modelo 3D de um prédio antes de construir.
Gabarito (uma boa resposta): (a) XR — escala real, sequência de passos sobreposta à peça, praticar sem o equipamento caro; AR/MR. (b) tela — números e tabelas se leem melhor em 2D; XR só adicionaria fadiga. (c) XR (AR mobile) — escala e contexto no espaço real é exatamente o ponto; USDZ/model-viewer. (d) tela — chamada de vídeo é melhor; "reunião em VR" genérica cansa e não agrega. (e) XR — ver o prédio em escala 1:1, andar por ele, revisar espaço e circulação antes de gastar concreto; VR ou MR.
Percepção, conforto e segurança
Objetivo: entender o enjoo (cybersickness), por que frame rate é saúde, a fadiga física, e as práticas para uma experiência confortável e segura.
2.1 Cybersickness (enjoo)
- Causa principal: conflito sensorial — seus olhos veem movimento que o seu ouvido interno (sistema vestibular) não sente. É o oposto do enjoo de carro (onde você sente movimento e não vê).
- Vection: a sensação ilusória de auto-movimento induzida pela visão. Locomoção virtual, câmeras que se movem sozinhas, aceleração e rotação são os grandes vilões.
- Latência motion-to-photon alta (você move a cabeça e a imagem demora a acompanhar) causa enjoo direto — por isso o headset tem que manter o frame rate.
2.2 Frame rate é um requisito de saúde
- Alvos: 72–90 Hz mínimo, 90–120 Hz ideal. Abaixo disso, judder e desconforto.
- Não pode "cair" — uma queda momentânea já basta para enjoar. Melhor reduzir qualidade visual do que perder frames.
- Técnicas do sistema: reprojection / timewarp / spacewarp (o headset reprojeta o último frame para a nova pose da cabeça enquanto o app renderiza) — ajuda, mas não substitui um app que roda no ritmo.
2.3 Locomoção confortável
| Técnica | Conforto |
|---|---|
| Roomscale (andar de verdade no espaço físico) | o mais confortável; limitado pelo espaço real |
| Teleporte (aponta e "pisca" para o destino) | muito confortável; quebra a imersão; padrão em jogos |
| Locomoção suave (analógico move o personagem) | imersivo mas causa vection; mitigar com vignette (tunneling) nas bordas, velocidade constante, sem aceleração |
| Rotação "snap" (gira 30–45° por clique) | bem mais confortável que rotação suave |
Ofereça opções e deixe o usuário escolher; assuma o preset mais confortável por padrão.
2.4 Fadiga física
- "Gorilla arm": manter os braços erguidos para interagir cansa rápido. Coloque alvos na zona ergonômica (abaixo da linha dos olhos, perto do corpo), permita interação sentado, use ray + pinch (mão baixa) em vez de direct touch para conteúdo distante.
- Peso do headset e pontos de pressão → sessões curtas; não projete tarefas de 2 horas.
- Vergência–acomodação: os olhos convergem para a distância virtual mas focam na tela do headset — desconforto em uso prolongado, sobretudo com conteúdo muito perto. Mantenha a UI a ~1–2 m.
2.5 Segurança
- Guardian / boundary: o limite do espaço físico; nunca force o usuário a andar até a borda; alerte ao se aproximar.
- Consciência do entorno: em VR total, avise sobre obstáculos; em MR/passthrough, o usuário vê a sala.
- Epilepsia fotossensível: nada de flashes > 3×/s (WCAG 2.3.1 vale aqui também), cuidado com estroboscópio e alto contraste piscante.
- Avisos de conteúdo (altura, movimento intenso), pausas sugeridas, "reset da vista".
Perguntas: "Por que se enjoa em VR?" (conflito sensorial: os olhos veem movimento que o vestibular não sente; vection; latência alta), "Por que frame rate é tão crítico?" (é requisito de saúde; queda momentânea já enjoa; 72–120 Hz), "Como fazer locomoção confortável?" (roomscale > teleporte > suave com vignette + snap turn; oferecer opções), "O que é gorilla arm e como evitar?" (fadiga de braço erguido — zona ergonômica, sentado, ray+pinch).
✏️ Exercício 2 — Auditoria de conforto
Um protótipo de VR de "passeio por um museu" tem: locomoção suave com o analógico (com aceleração), a UI de informações flutuando a 40 cm do rosto, botões que exigem tocar diretamente objetos a 2 m de distância, e o frame rate oscilando entre 65 e 90 fps. Liste os problemas e as correções.
Gabarito (uma boa resposta): (1) locomoção suave com aceleração → forte vection/enjoo; trocar por teleporte como padrão, oferecer locomoção suave opcional com velocidade constante (sem aceleração) e vignette nas bordas durante o movimento; adicionar snap turn. (2) UI a 40 cm → estresse de vergência-acomodação e difícil de ler; mover para ~1.5–2 m, com tamanho angular adequado. (3) tocar diretamente objetos a 2 m → gorilla arm e mira imprecisa; usar ray + pinch (apontar com a mão baixa e "clicar" com pinça) ou olhar + pinça. (4) frame rate caindo a 65 → inaceitável; travar em 72/90 Hz reduzindo qualidade (menos polígonos, luz assada, menos pós-processamento) até nunca cair; medir no device.
Interação espacial
Objetivo: os modelos de input (controllers, mãos, olhar, voz, cabeça), quando usar cada um, e as regras de alvo, alcance e feedback.
3.1 Os modelos de input
| Input | Como | Bom para |
|---|---|---|
| Controllers | botões, gatilhos, thumbstick, 6DoF, haptics | jogos, precisão, ações rápidas; padrão no Quest |
| Hand tracking — direct touch | a mão "toca" o botão virtual no espaço | conteúdo ao alcance do braço; natural mas cansa e falta feedback tátil |
| Hand tracking — ray + pinch | a mão aponta um raio; juntar polegar e indicador = "clique" | conteúdo distante, mão baixa e relaxada; padrão do Quest sem controller |
| Eye tracking + pinch (visionOS) | você olha o elemento (ele destaca) e pincha para ativar | rápido, sem esforço, mão no colo; o modelo do Vision Pro |
| Voz | comandos, ditado, "toque para falar" | entrada de texto, atalhos, acessibilidade (ver IA de Voz e Áudio) |
| Cabeça (gaze) | a direção do olhar da cabeça como ponteiro; "dwell" para selecionar | 3DoF, hands-free, acessibilidade; lento |
3.2 Regras de alvo e alcance
- Alvos grandes — o tamanho angular é o que importa (um alvo pequeno mas perto pode ser fácil; grande mas longe, difícil). Mínimos generosos (equivalente a 60+ px numa tela, mais em XR).
- Espaçamento entre alvos maior que em 2D — a mira treme.
- Zona ergonômica: conteúdo interativo entre a cintura e a linha dos olhos, a ~0.5–2 m; nada que exija olhar muito para cima ou esticar.
- Não coloque UI presa perto demais dos olhos nem exija movimentos amplos e repetidos.
3.3 Feedback
- Sem o toque físico de um botão, o feedback tem que vir por outros canais: destaque visual no hover/olhar, som curto no "clique", haptics no controller, animação de "pressionado".
- Estados claros: focado (olhar/hover), pressionado, desabilitado — como em 2D (ver Motion de Interface), mas mais fortes.
- Confirme ações à distância — o usuário precisa saber que "pegou".
3.4 Gestos do sistema vs do app
- Cada plataforma reserva gestos (abrir o menu do sistema, recentralizar, home) — não os sobrescreva.
- Prefira os padrões da plataforma (pinça no visionOS, o botão do menu no Quest) a inventar gestos próprios que o usuário terá que aprender e que colidem com o sistema.
Perguntas: "Quais os modelos de input em XR?" (controllers, hand tracking direct/ray+pinch, eye tracking + pinch, voz, gaze da cabeça), "Como o Vision Pro funciona sem controller?" (olhar para focar + pinça para ativar), "O que define o tamanho de um alvo em XR?" (o tamanho angular, não o físico; alvos e espaçamento generosos porque a mira treme), "Como dar feedback sem toque físico?" (visual + som + haptics + animação).
✏️ Exercício 3 — Escolha o input
Para cada app, escolha o(s) modelo(s) de input e descreva a interação: (a) um jogo de tênis de mesa; (b) um app de produtividade com janelas e listas no Vision Pro; (c) um treinamento de montagem industrial no Quest; (d) um app "glanceable" de navegação em smart glasses.
Gabarito (uma boa resposta): (a) controllers 6DoF (ou hand tracking se preciso e bem rastreado) — a raquete precisa de posição/velocidade precisas e haptics no impacto. (b) olhar + pinça (o modelo nativo do visionOS): olha o botão/link (destaca), pincha para ativar; scroll com movimento da mão pinçada; texto por voz/teclado virtual; nada de "tocar" janelas distantes. (c) hand tracking direct touch para manipular as peças ao alcance + ray + pinch para menus, e voz para "próximo passo"; controllers como alternativa. (d) voz + botão físico no aro dos óculos + talvez um gesto simples; a UI é mínima e periférica; nada de mira precisa num display pequeno.
Design de UI espacial
Objetivo: o modelo mental de janelas/volumes/espaços imersivos, as âncoras (world/head/hand-locked), e as regras de profundidade, escala, tipografia e material em XR.
4.1 Janelas, volumes, espaços
O modelo do visionOS é um bom vocabulário geral:
- Window — um painel 2D flutuante (basicamente uma tela de app no espaço). A maior parte da produtividade vive aqui; nem tudo precisa ser 3D.
- Volume — uma caixa 3D delimitada com conteúdo tridimensional (um modelo, um jogo de tabuleiro), que convive com outros apps.
- Immersive space — o app assume o ambiente todo (parcial "mixed" ou total "full"); use com moderação, para experiências que merecem tomar o espaço.
- Regra: comece com uma Window; suba para Volume/Immersive só quando a profundidade e o espaço são o valor.
4.2 Âncoras: onde o conteúdo "mora"
| Âncora | Segue… | Use para |
|---|---|---|
| World-locked | fica fixo num ponto do mundo real | quase tudo: janelas, objetos na mesa, conteúdo persistente. O padrão confortável |
| Head-locked (HUD) | gruda na sua visão, sempre à frente | quase nada — enjoa e incomoda; só alertas críticos brevíssimos, e mesmo assim com cuidado |
| Body/lazy-follow | acompanha você com atraso e amortecimento | um menu que "vem junto" quando você anda para longe, sem colar na cara |
| Hand-locked | preso à mão/pulso | uma paleta de ferramentas, um relógio, um menu rápido "na palma" |
Head-locked é a armadilha nº 1 de quem vem do 2D: "vou colar o dashboard na frente do usuário". Não — deixe o mundo segurar a UI.
4.3 Profundidade, escala e legibilidade
- Distância: UI de leitura a ~1–2 m; conteúdo manipulável ao alcance do braço.
- Tamanho angular é o que decide legibilidade — texto e alvos devem manter o mesmo tamanho aparente a qualquer distância (escalar com a distância).
- Profundidade com moderação: um pouco de separação em Z ajuda a hierarquia (o modal à frente do conteúdo); camadas demais confundem e forçam refoco constante.
- Paralaxe sutil dá "solidez"; exagerada, enjoa.
4.4 Tipografia, cor e material em XR
- Passthrough muda tudo: o fundo é a sala real do usuário — imprevisível, com qualquer cor e luz atrás. Não dá para garantir contraste com um fundo. Solução: painéis com material próprio (o "glass" do visionOS: translúcido, com blur e realce), sombra/vinheta atrás do texto, e testar em ambientes claros e escuros.
- Texto: maior e mais pesado que em tela; evitar fontes finas; alto contraste dentro do painel; ver Tipografia e Cor.
- Material translúcido ("glassmorphism" de verdade aqui): deixa a sala "vazar" e integra a UI ao ambiente — mas cuide da legibilidade (o mesmo problema de contraste da apostila Cor).
- Não use branco puro em VR total (ofusca) nem preto puro em passthrough (some).
4.5 Ergonomia de layout
- Layouts levemente curvos (côncavos para o usuário) mantêm tudo à mesma distância e ângulo de leitura.
- Largura limitada — não faça o usuário girar a cabeça 120° para ler; o "campo de conforto" é ~±30–40° horizontais.
- Coloque o essencial na altura dos olhos; o secundário abaixo; quase nada acima.
Perguntas: "Window, volume ou immersive space — como escolher?" (comece com janela 2D; suba só quando profundidade/espaço são o valor), "Quais tipos de âncora e quando usar?" (world-locked por padrão; head-locked quase nunca — enjoa; hand/body para menus que acompanham), "Por que head-locked é ruim?", "Por que a tipografia e o contraste são mais difíceis em XR?" (passthrough = fundo real imprevisível; usar painel com material próprio; testar em ambientes variados).
✏️ Exercício 4 — Traga um app 2D para o espaço
Você tem um app web de gestão de tarefas (listas, cards, um painel de métricas) e quer uma versão para Vision Pro. Descreva as decisões: o que vira Window, o que (se algo) vira Volume/Immersive, as âncoras, e os ajustes de tipografia/material/alvo.
Gabarito (uma boa resposta): a maior parte fica em Windows — a lista de tarefas, o board e o painel de métricas são conteúdo 2D e se leem melhor assim; não force 3D. Talvez um Volume opcional para uma visualização 3D de "carga da equipe ao longo do tempo" se houver valor real em ver profundidade. Nada de immersive space — isso não merece tomar o ambiente. Âncoras: tudo world-locked (o usuário posiciona as janelas na sala e elas ficam); talvez um pequeno menu de ações rápidas hand-locked na palma. Ajustes: texto maior e mais pesado, contraste alto dentro do painel de vidro do visionOS, alvos e espaçamento generosos (olhar + pinça treme), layout levemente curvo, largura limitada (não girar a cabeça para ler), cores sem branco/preto puro, e testar com uma sala clara e uma escura atrás.
WebXR na prática
Objetivo: a WebXR Device API, os frameworks (three.js, React Three Fiber, Babylon, A-Frame, model-viewer), e o progressive enhancement.
5.1 A WebXR Device API
- Sessão:
navigator.xr.requestSession('immersive-vr' | 'immersive-ar'), precedida deisSessionSupportede disparada por um gesto do usuário (um botão "Entrar em VR/AR"). - Reference spaces: o sistema de coordenadas —
local,local-floor(origem no chão),bounded-floor(com o boundary),unbounded,viewer(head-locked). - Loop de render:
session.requestAnimationFrame(não o dowindow) →frame.getViewerPose→ renderizar uma vez por view (um olho cada), noXRWebGLLayer. - Input:
session.inputSources(controllers/mãos), eventosselect/squeeze,frame.getPosepara posição. - Módulos AR: hit test (raycast contra o mundo real — pousar objetos), anchors (fixar no mundo), depth sensing (occlusion), light estimation, DOM overlay (HTML 2D sobre a cena AR no mobile), hand input (25 juntas por mão).
- Suporte: Quest (browser), Android Chrome (AR); no visionOS o Safari suporta WebXR (com particularidades). Sempre feature-detect.
5.2 Os frameworks
| Ferramenta | É / para |
|---|---|
| three.js + WebXR | a base; renderer.xr.enabled = true + VRButton/ARButton; controle total, mais código |
| React Three Fiber + @react-three/xr | three.js declarativo em React; <XR>, <Controllers>, <Hands>, hooks de hit test; ótimo DX |
| Babylon.js | engine completa com WebXR de primeira classe (Default XR Experience, teleporte, hit test, mãos prontos) |
| A-Frame | HTML declarativo (<a-scene>); rápido para protótipo e cenas simples; sobre three.js |
| PlayCanvas | engine com editor visual, boa para jogos web e XR |
| <model-viewer> | web component do Google: mostra um glTF e um botão "ver em AR" que aciona Scene Viewer (Android) e Quick Look (iOS, via USDZ) — o caminho mais rápido para "produto na sua sala" sem escrever WebXR |
| Ver as apostilas Computação Gráfica & Three.js e 3D em Tempo Real & Motion Graphics para Web. | |
5.3 Progressive enhancement
- O site deve funcionar sem XR — a versão 2D/3D na tela é o baseline; "Entrar em AR/VR" é um aprimoramento para quem tem o dispositivo.
- Feature-detect
navigator.xre o modo de sessão; esconder o botão se não suportado. - Para "ver em AR" de um produto,
<model-viewer>já entrega isso em iOS e Android sem sessão WebXR.
// esqueleto WebXR com three.js renderer.xr.enabled = true; document.body.appendChild(ARButton.createButton(renderer, { requiredFeatures: ['hit-test'], optionalFeatures: ['dom-overlay', 'anchors'] })); renderer.setAnimationLoop((t, frame) => { if (frame) { // obter hit test, atualizar retículo, etc. } renderer.render(scene, camera); });
Perguntas de front-end: "Como se entra numa sessão WebXR?" (navigator.xr.requestSession após isSessionSupported, disparado por gesto; loop com session.requestAnimationFrame, renderizar por view), "O que são reference spaces?" (local-floor, bounded-floor, viewer…), "Como fazer 'ver em AR' de um produto rápido?" (<model-viewer> + glTF + USDZ; Scene Viewer/Quick Look), "three.js puro ou React Three Fiber?" (controle vs DX declarativo; R3F + @react-three/xr para produtividade).
✏️ Exercício 5 — Visualizador de produto AR
Um e-commerce quer "veja este móvel na sua casa". Descreva a solução para o alcance máximo (iOS + Android + desktop), o que cada plataforma usa, os assets necessários, e o fallback.
Gabarito (uma boa resposta): usar <model-viewer>: um glTF/GLB otimizado para a visualização 3D interativa na página (funciona em desktop e mobile, girar/zoom), e um USDZ equivalente para o "ver em AR" do iOS (Quick Look). No Android, o botão AR aciona o Scene Viewer com o mesmo glTF (via ARCore). No iOS, aciona o Quick Look com o USDZ. Assets: modelo em escala real (metros), materiais PBR, texturas comprimidas (KTX2), < alguns MB; gerar o USDZ a partir do glTF no pipeline. Fallback: em navegador/dispositivo sem AR, o usuário ainda tem o 3D interativo na página; o botão "ver em AR" só aparece quando canActivateAR é verdadeiro. Para uma experiência AR mais rica (medir a parede, trocar acabamento no lugar), aí sim WebXR com hit test — mas o model-viewer cobre 90% do valor com 5% do esforço.
Assets 3D e performance para XR
Objetivo: formatos (glTF, USDZ), pipeline de otimização, e os orçamentos de performance brutais do XR (renderiza 2× por olho, a 90 fps).
6.1 Formatos
- glTF / GLB — o "JPEG do 3D" para a web e para a maioria das engines: malha, PBR, animação, num arquivo. GLB é a versão binária (tudo empacotado).
- USDZ — o formato do Quick Look da Apple (iOS/visionOS); gere-o a partir do glTF no pipeline (Reality Converter, ferramentas de linha de comando).
- USD (não zipado) e Reality Composer Pro — a base de cenas no visionOS/RealityKit.
- Autoria: Blender → exportar glTF (ver Blender 3D); ou DCCs profissionais.
6.2 Pipeline de otimização
- Geometria: reduzir polígonos (decimate/retopo), Draco ou Meshopt para comprimir malhas, LODs (versões mais leves ao longe).
- Texturas: KTX2 / Basis Universal (compressão GPU, transcodifica no device) em vez de PNG/JPEG gigantes; resolução adequada (2K é muito para um objeto pequeno); atlas para reduzir binds.
- Materiais: menos materiais únicos = menos draw calls; instancing para objetos repetidos.
- Iluminação: baked (assada em lightmaps) sempre que possível — luz dinâmica é cara; poucos lights em tempo real.
- Ferramentas:
gltf-transform,gltfpack, o gltf-report; no R3F,gltfjsx.
6.3 Os orçamentos
| Restrição | Por quê |
|---|---|
| Renderiza 2× por frame | uma vez por olho — dobra o custo de tudo |
| 90 fps (piso) = ~11 ms por frame | para os dois olhos; margem apertadíssima |
| Draw calls | o gargalo mais comum; alvo baixo (dezenas a poucas centenas em standalone) |
| Fill rate / overdraw | telas de alta resolução por olho; transparências empilhadas matam |
| GPU standalone (Quest) | é um chip móvel; pense "console portátil", não PC |
- Foveated rendering: renderiza em alta resolução só onde o olho olha (fixed ou eye-tracked) — ganho grande de fill rate; o sistema oferece, você habilita.
- Occlusion culling, frustum culling, static batching — o básico de tempo real, aqui obrigatório (ver Unity, Computação Gráfica & Three.js).
- Teste no dispositivo-alvo, com o profiler dele (OVR Metrics / RenderDoc / Instruments). O desktop mente.
Importar um modelo de arquiteto de 5M de polígonos "só para ver". Texturas 4K PNG. Dezenas de materiais únicos. Luz dinâmica e sombras em tudo. Transparências sobrepostas (partículas, glass). Testar só no editor/desktop e "otimizar depois". Ignorar foveated rendering. Não usar LOD. Postprocessing pesado (bloom, DOF) num chip móvel.
Perguntas: "glTF ou USDZ?" (glTF/GLB para web e engines; USDZ para Quick Look da Apple, gerado a partir do glTF), "Por que o orçamento de performance de XR é tão apertado?" (renderiza 2× por olho, 90 fps = ~11 ms, chip móvel no standalone), "Como otimizar um asset para XR?" (reduzir polígonos, Draco/Meshopt, KTX2, poucos materiais, luz assada, LOD, instancing), "O que é foveated rendering?".
✏️ Exercício 6 — Otimize a cena
Um cliente entregou um modelo de showroom para VR: 8M de polígonos, 30 texturas 4K PNG, 60 materiais, todas as luzes dinâmicas com sombra. Roda a 22 fps no Quest. Faça o plano de otimização em ordem de impacto.
Gabarito (uma boa resposta): (1) geometria: retopo/decimate para um alvo realista (centenas de milhares, não milhões), LODs, remover o que nunca é visto; Meshopt/Draco na exportação. (2) iluminação: bake toda a luz estática em lightmaps; deixar 0–2 luzes dinâmicas no máximo, sombras só onde essencial (ou sombras assadas / blob shadows). (3) materiais: consolidar 60 → poucos, com atlas de textura; instancing nos objetos repetidos (cadeiras, luminárias) → derruba draw calls. (4) texturas: 4K PNG → KTX2/Basis em resolução adequada (1–2K no que é grande, menos no resto). (5) habilitar foveated rendering, culling agressivo, static batching. (6) tirar postprocessing pesado. Medir no Quest a cada passo; alvo estável de 72/90 fps antes de adicionar qualquer detalhe de volta.
Plataformas nativas e o ecossistema
Objetivo: visionOS, Meta/Quest, Android XR, OpenXR e Unity/Unreal — o que cada um é e quando escolher nativo vs Unity vs WebXR.
7.1 visionOS (Apple)
- SwiftUI para as janelas/volumes 2D-3D + RealityKit (o motor 3D/física/áudio) + ARKit (rastreamento de mãos, planos, world) + Reality Composer Pro (autoria de cenas, materiais Shader Graph, USD).
- Modelo de espaço: Shared Space (seu app convive com outros — janelas e volumes) vs Full Space (seu app sozinho, acesso a mais recursos como ARKit completo).
- Interação: olhar + pinça pelo sistema (o app recebe eventos de "tap" já resolvidos); privacidade forte (o app não vê a câmera crua nem para onde você olha, exceto o alvo já resolvido).
- Apps de iPad/iPhone rodam "de graça" como janelas; a experiência espacial exige código visionOS.
7.2 Meta / Quest
- Unity ou Unreal + o Meta XR SDK (Interaction SDK, Passthrough, Scene, Movement/body tracking) — o caminho da maioria dos apps/jogos.
- Meta Spatial SDK — para apps 2D/panel-first em Kotlin/Android, sem Unity.
- WebXR pelo browser do Quest (bom alcance, sem loja).
- Recursos: passthrough colorido, Scene understanding (a malha e os planos da sua sala), Shared Spatial Anchors, colocalização.
7.3 Android XR
- Plataforma XR baseada em Android (Google + Samsung), com Jetpack XR (Compose para XR, Scene) e ARCore; integração com Gemini.
- Suporta OpenXR e Unity/Unreal; e apps Android 2D como janelas.
7.4 OpenXR e o caminho multiplataforma
- OpenXR (Khronos) é o padrão comum de runtime XR — Quest, Android XR, PC VR, e outros o implementam. Programar contra OpenXR (ou uma engine que o usa) dá portabilidade.
- Unity (com o XR Interaction Toolkit / OpenXR plugin) e Unreal são o caminho para publicar no maior número de headsets com uma base de código. Ver Unity.
- visionOS fica um pouco à parte — o suporte a Unity existe (via PolySpatial) mas o "melhor" de visionOS é nativo (SwiftUI + RealityKit).
7.5 Nativo × Unity × WebXR
| Escolha | Quando |
|---|---|
| Nativo (visionOS / Meta Spatial SDK / Jetpack XR) | uma plataforma-alvo, quer o melhor da UX e da integração do sistema, app "produtividade/utilidade" mais que jogo |
| Unity / Unreal | multiplataforma (Quest + PC VR + Android XR), jogo ou simulação 3D pesada, time já domina a engine |
| WebXR | alcance sem loja, distribuição por link, "ver em AR" de e-commerce, protótipo, integrar num site existente; aceita as limitações de performance e API da web |
| model-viewer | só "ver produto em AR" no celular — o mínimo esforço |
Perguntas: "O que compõe um app visionOS?" (SwiftUI + RealityKit + ARKit + Reality Composer Pro; Shared vs Full Space), "Como se desenvolve para Quest?" (Unity/Unreal + Meta XR SDK; ou Spatial SDK em Kotlin; ou WebXR no browser), "O que é OpenXR?" (padrão comum de runtime XR → portabilidade), "Nativo, Unity ou WebXR — como decidir?" (uma plataforma e melhor UX → nativo; multiplataforma/jogo → Unity; alcance sem loja/e-commerce/protótipo → WebXR).
✏️ Exercício 7 — Escolha a plataforma
Para cada projeto, recomende nativo, Unity/Unreal ou WebXR (e por quê): (a) um treinamento de segurança para operários, a ser usado em Quest 3 nas fábricas; (b) uma feature de "meça e visualize a reforma na sua sala" para o app iOS de uma loja de materiais; (c) um jogo de ritmo para vender na Meta Store e na Steam VR; (d) um configurador 3D de carros no site da montadora.
Gabarito (uma boa resposta): (a) Unity + Meta XR SDK — Quest-alvo único mas simulação 3D interativa com física e cenários; a engine acelera; publicar via Meta (ou distribuição empresarial). (b) nativo iOS (ARKit + RealityKit) dentro do app existente — melhor integração, Quick Look/USDZ para o resultado; ou WebXR se precisar rodar fora do app. (c) Unity ou Unreal — multiplataforma (Meta Store + SteamVR), jogo, precisa de performance e das ferramentas de engine. (d) WebXR (three.js/R3F ou Babylon) + model-viewer para o "ver em AR" — no site, sem loja, alcance máximo; o 3D interativo funciona em desktop e o AR no celular.
Recursos espaciais avançados
Objetivo: usar a sala real (plane/mesh detection), occlusion, anchors persistentes e compartilhadas, multiusuário colocalizado, passthrough/privacidade e spatial audio.
8.1 Scene understanding
- Plane detection (chão, paredes, mesas) e mesh / scene reconstruction (a geometria da sala) — o app pode usar o ambiente: pousar objetos em superfícies reais, fazer coisas quicarem no chão, colar UI numa parede.
- No visionOS e no Quest, o usuário faz uma varredura da sala (ou o sistema mantém um modelo); o app pede permissão para acessá-lo.
8.2 Occlusion
- Objetos reais devem tapar os virtuais (sua mão passa na frente do robô virtual, o sofá esconde a bola). Sem isso, o virtual "flutua" e quebra a ilusão de MR.
- Feito com o depth do dispositivo (ou a malha da sala) escrito no depth buffer antes de renderizar o virtual. WebXR tem o módulo depth-sensing; engines nativas têm occlusion pronta.
- Hand occlusion específico (as mãos tapando a UI) é quase sempre esperado.
8.3 Anchors persistentes e compartilhadas
- Persistent / world anchor: você deixa um objeto na sua mesa, fecha o app, volta amanhã — está lá. O sistema salva a âncora (localmente ou na nuvem).
- Shared spatial anchor: duas pessoas na mesma sala veem o mesmo objeto no mesmo lugar — colocalização. Base de jogos e revisão de design multiusuário presenciais.
- Cross-device/cross-platform é o difícil (cada sistema tem seu serviço de anchor na nuvem — Meta, ARCore Cloud Anchors, Apple).
8.4 Multiusuário
- Remoto: pessoas em lugares diferentes num espaço compartilhado — SharePlay (visionOS, via FaceTime), sessões próprias (netcode — ver Unity), avatares (Spatial Personas no visionOS, avatares Meta).
- Colocalizado: mesma sala, shared anchors + sincronização de estado por rede local.
- Sincronizar posição de objetos e ações entre clientes é o mesmo problema de rede de jogos (autoridade, interpolação, latência).
8.5 Passthrough, câmera e privacidade
- visionOS: o app não tem acesso à imagem crua das câmeras nem ao mapa detalhado da sala nem ao ponto exato do olhar (recebe só o alvo já resolvido de uma interação). Isso limita alguns usos (CV custom) mas é uma escolha de privacidade forte.
- Quest: acesso a passthrough e à malha da sala com permissão (e recentemente uma API de câmera para desenvolvedores, com restrições).
- Projete assumindo o modelo mais restritivo se quiser portabilidade.
8.6 Spatial audio
- Som posicionado no espaço 3D com HRTF (o cérebro localiza a fonte), oclusão e reverberação acústica da sala (um som atrás da parede soa abafado), e ambisonics para ambientes.
- É um enorme reforço de presença e de direção de atenção (um som à esquerda faz você virar). Ver IA de Voz e Áudio e Produção e Edição Musical.
Perguntas: "O que é occlusion em MR e como se faz?" (objetos reais tapam virtuais; via depth do dispositivo escrito no depth buffer), "O que é um shared spatial anchor?" (duas pessoas na mesma sala veem o mesmo objeto no mesmo lugar — colocalização), "O que o visionOS não deixa o app acessar?" (câmera crua, mapa detalhado da sala, ponto exato do olhar — só o alvo resolvido), "Por que spatial audio importa?" (presença + direção de atenção).
✏️ Exercício 8 — Revisão de design multiusuário
Uma construtora quer que 4 pessoas (2 na mesma sala, 2 remotas) revisem o modelo 3D de um apartamento em escala real, apontando e comentando. Descreva os recursos espaciais que você usaria e os desafios.
Gabarito (uma boa resposta): Colocalização das 2 presenciais via shared spatial anchors — as duas veem o modelo do apê ancorado no mesmo ponto da sala; occlusion e scene understanding para o modelo conviver com o espaço real. Os 2 remotos entram num espaço compartilhado (SharePlay/sessão própria) representados por avatares/personas, com sincronização de posição e de laser pointers/comentários. Comentários como anchors 3D fixos no modelo (uma nota "vão de 90 cm aqui" presa à parede virtual), persistentes entre sessões. Spatial audio para saber quem está falando de onde. Desafios: sincronização de estado e latência (mesmo problema de netcode de jogo — autoridade sobre o modelo, interpolação dos avatares); cross-platform de anchors (se uns usam Quest e outros Vision Pro); performance do modelo 3D pesado a 90 fps (otimizar — Módulo 6); alinhar a escala e a origem entre presenciais e remotos; permissões de scan da sala.
Produção, negócio e ética
Objetivo: os casos que pegam vs os que não, distribuição e custo, QA em XR, acessibilidade a fundo, e a privacidade extrema do XR.
9.1 Casos que realmente pegam
- Treinamento e simulação — soldagem, procedimentos médicos, segurança, atendimento; ROI claro (menos material, menos risco, repetível, medível).
- Design review 3D — arquitetura, produto, automotivo, cenografia: ver em escala 1:1 antes de fabricar.
- Campo e manutenção com AR — instruções sobrepostas ao equipamento, assistência remota "veja o que eu vejo".
- Telepresença / colaboração 3D em times distribuídos.
- Saúde — reabilitação motora, terapia de exposição, distração para dor.
- Varejo — "veja o móvel/tênis/maquiagem" via AR mobile (o de maior alcance, e o mais fácil —
model-viewer). - Não pega (hoje): substituir o desktop para trabalho o dia todo, redes sociais imersivas de massa, reuniões genéricas.
9.2 Distribuição e custo
- Lojas: App Store (visionOS), Meta Horizon Store, Google Play (Android XR) — revisão, comissão, alcance limitado à base instalada.
- Web: WebXR não precisa de loja — link, atualização instantânea, menor alcance de recursos.
- Empresarial: distribuição gerenciada (MDM), device management de uma frota de headsets.
- Custo: produção 3D é cara (modelagem, otimização, teste em device); um app espacial "sério" custa bem mais que um app 2D equivalente. A base instalada ainda é pequena — dimensione a aposta.
9.3 QA em XR
- Conforto é caso de teste: sessões longas com várias pessoas, medir enjoo, fadiga, "gorilla arm".
- Matriz de dispositivos: Quest 2/3/3S, Vision Pro, PC VR, Android XR — cada um com hardware, campo de visão, input e performance diferentes.
- Ambientes reais: sala clara/escura, pequena/grande, bagunçada; iluminação para hand/eye tracking.
- Frame rate monitorado o tempo todo; profilers do device.
- Testar de pé e sentado, com pessoas de alturas diferentes, canhotas, com óculos.
9.4 Acessibilidade em XR
- Modos de conforto (Módulo 2) como acessibilidade: teleporte, snap turn, vignette, "reduzir movimento" — essenciais, não opcionais.
- Sentado / altura ajustável: nunca exigir ficar de pé, agachar, ou alcançar longe; oferecer recentralizar e ajustar a altura da UI.
- Sem as mãos: navegação por olhar + dwell, por voz, por cabeça — para quem não pode usar as mãos.
- Legendas espaciais para áudio/fala (posicionadas, legíveis, não presas na cara); audiodescrição.
- Baixa visão: magnificação do sistema, alto contraste, tamanho de texto; daltonismo (não só cor — ver Cor).
- Audição: não depender só de spatial audio para informação crítica; sinal visual redundante.
- visionOS, Quest e Android XR têm APIs de acessibilidade (VoiceOver espacial, etc.) — use-as.
9.5 Privacidade extrema
- Eye tracking revela atenção, intenção, estado cognitivo, e é biométrico — dado altíssimamente sensível. Por isso o visionOS não entrega o olhar ao app. Se você tiver acesso (pesquisa, alguns modos), trate como dado de saúde: consentimento explícito, minimização, não usar para publicidade/perfilamento.
- Mapa da casa: a geometria da sala, os móveis, as pessoas ao redor — não exfiltre, não guarde além do necessário.
- Expressões faciais / corpo (para avatares): idem — biométrico.
- Câmera de passthrough: pode capturar terceiros sem consentimento; APIs restringem por isso.
- Aplique os princípios da apostila Governança de IA, Ética & EU AI Act e as regras de privacidade (LGPD/GDPR) — e note que XR gera categorias de dado que a lei ainda está alcançando.
9.6 Uso responsável
- Pausas, avisos de tempo de uso, limites para menores.
- Não force VR onde uma tela resolve — respeite o custo físico e cognitivo do usuário.
- Cuidado com desconforto psicológico (alturas, espaços fechados, conteúdo intenso) — avisos e opções de sair.
Perguntas: "Que casos de XR têm ROI real hoje?" (treinamento/simulação, design review 3D, campo/manutenção AR, telepresença, saúde, varejo AR mobile — não "substituir o monitor"), "O que muda no QA de um app XR?" (conforto como caso de teste, matriz de dispositivos, ambientes reais, frame rate, sentado/de pé/alturas), "Por que eye tracking é um problema de privacidade?" (revela atenção/intenção/estado, é biométrico — por isso o visionOS não expõe ao app), "Que acessibilidade um app XR precisa?" (modos de conforto, sentado, sem mãos, legendas espaciais, magnificação, redundância visual).
✏️ Exercício 9 — Plano de produto e ética
Uma empresa de logística quer um app de treinamento de operação de empilhadeira em VR (Quest 3), para funcionários internos. Liste: por que XR faz sentido aqui, o plano de QA e acessibilidade, os cuidados de dados/privacidade, e um risco do projeto.
Gabarito (uma boa resposta): Por que XR: praticar manobras e situações de risco (quase-colisões, carga instável) sem uma empilhadeira real, sem risco físico, repetível, com métricas objetivas (tempo, erros, checklist) — ROI de treinamento é o caso mais forte de XR. QA: testar conforto com dezenas de operadores em sessões de 20–30 min (a locomoção da empilhadeira é o risco de enjoo — velocidade constante, vignette, opção de teleporte entre estações); matriz Quest 2/3/3S; testar de pé e sentado (a cabine), com óculos, canhotos; frame rate travado a 72/90. Acessibilidade: modo sentado, opções de conforto ligadas por padrão, legendas para as instruções faladas, alto contraste, não depender só de spatial audio para alertas (buzina + visual). Dados/privacidade: os dados de desempenho são de RH — consentimento, finalidade clara (treinamento, não punição arbitrária), retenção definida, sem eye tracking para avaliar "atenção" do funcionário (invasivo e provavelmente ilegal); LGPD. Risco: transferência para o mundo real — o treinamento em VR precisa ser validado (o operador que passou no VR opera bem a empilhadeira de verdade?); e adoção (headset é fricção — logística de higienização, carga, suporte na operação).
Mercado de trabalho: roadmap, entrevistas e portfólio
Objetivo: converter o conteúdo dos módulos em contratação — onde a habilidade é usada, um plano de estudo, um banco de perguntas e projetos que geram entrevista.
10.1 Onde XR pesa
- XR / spatial designer: a experiência espacial — conforto, interação, UI, playtesting.
- WebXR developer: experiências 3D/AR na web (e-commerce, marketing, ferramentas, protótipos).
- Unity/Unreal XR developer: apps e jogos para Quest/PC VR/Android XR.
- visionOS developer: Swift + RealityKit para o ecossistema Apple.
- 3D technical artist: pipeline de assets, otimização, shaders para o orçamento de XR.
- Setores: treinamento corporativo, arquitetura/AEC, automotivo, saúde, defesa, varejo, entretenimento.
10.2 Roadmap de estudo (6–8 semanas)
| Semanas | Foco | Prática |
|---|---|---|
| 1 | Vocabulário, conforto (Módulos 1–2) | Se possível, usar 3–4 apps de referência num headset e anotar o que enjoa/cansa/funciona |
| 2 | Interação e UI espacial (Módulos 3–4) | Redesenhar um app 2D seu para o espaço no papel/Figma; decidir Windows vs Volume, âncoras, alvos |
| 3 | WebXR (Módulo 5) | Uma cena com three.js + WebXR: entrar em AR, hit test, pousar um objeto; testar no Quest/Android |
| 4 | Assets e performance (Módulo 6) | Otimizar um modelo do Blender para glTF (Draco, KTX2, LOD) e medir draw calls/fps no device |
| 5 | Nativo (Módulo 7) | Um "hello spatial" em visionOS (SwiftUI + RealityKit) ou em Unity + Meta XR SDK |
| 6 | Recursos avançados (Módulo 8) | Adicionar occlusion e um persistent anchor à cena WebXR; experimentar spatial audio |
| 7–8 | Produção, ética, portfólio (Módulo 9) | Escrever os estudos de caso com o raciocínio de conforto, performance e ética |
10.3 Banco de perguntas (com a resposta que aprova)
Júnior/pleno — "Por que se enjoa em VR e como você mitiga?"
Conflito sensorial: os olhos veem movimento que o vestibular não sente; vection e latência alta pioram. Mitigações: manter o frame rate (72–120 Hz, nunca cair), preferir teleporte a locomoção suave, e quando usar suave: velocidade constante, sem aceleração, com vignette nas bordas; snap turn em vez de rotação suave; oferecer as opções e assumir o preset confortável.
Pleno — "3DoF vs 6DoF; world-locked vs head-locked."
3DoF rastreia só rotação (olhar em volta); 6DoF rastreia rotação e translação (andar) — o padrão atual. World-locked: o conteúdo fica fixo no mundo real — o padrão confortável para janelas e objetos. Head-locked: gruda na visão — enjoa e incomoda, use quase nunca. Body/lazy-follow para menus que acompanham sem colar na cara.
Pleno — "Como funciona a interação no Vision Pro?"
Olhar + pinça: você olha o elemento (o sistema o destaca) e junta polegar e indicador para ativar; a mão pode ficar no colo. O app recebe eventos de "tap" já resolvidos e não tem acesso ao ponto exato do olhar (privacidade). Scroll e manipulação com a mão pinçada movendo.
Pleno/front-end — "Como se faz 'ver em AR' de um produto na web?"
<model-viewer> com um glTF/GLB (3D interativo na página, desktop e mobile) e um USDZ equivalente; o botão AR aciona Scene Viewer no Android (ARCore) e Quick Look no iOS. Sem escrever WebXR. Fallback: sem AR, fica o 3D na página. Para AR mais rico (medir, trocar acabamento no lugar), aí WebXR com hit test.
Pleno/artist — "Por que o orçamento de performance de XR é tão apertado?"
Renderiza duas vezes por frame (um olho cada), com alvo de 90 fps (~11 ms para os dois), muitas vezes num chip móvel (Quest standalone). Draw calls e overdraw são os gargalos. Otimiza-se com menos polígonos, Draco/Meshopt, KTX2, poucos materiais, luz assada, LOD, instancing, culling e foveated rendering — e testando no device, não no desktop.
Sénior — "Nativo, Unity ou WebXR?"
Nativo (visionOS/Meta Spatial SDK/Jetpack XR) para uma plataforma-alvo com a melhor UX e integração de sistema, apps de utilidade. Unity/Unreal para multiplataforma (Quest + PC VR + Android XR) e jogos/simulação 3D pesada. WebXR para alcance sem loja, e-commerce, integração num site, protótipos — aceitando os limites de API e performance da web. model-viewer para o mínimo "ver produto em AR".
Sénior — "Que preocupações de privacidade o XR traz?"
Eye tracking (atenção, intenção, estado cognitivo — biométrico; o visionOS não expõe ao app por isso), o mapa 3D da casa e dos móveis, expressões faciais/corpo para avatares, e a câmera de passthrough (que capta terceiros). Tratar tudo como dado sensível: consentimento explícito, minimização, sem perfilamento/publicidade, retenção curta — e ciente de que a regulação ainda está alcançando essas categorias.
Armadilha — "É só portar a UI 2D para dentro do headset"
Colar o dashboard head-locked na frente do usuário enjoa e incomoda; contraste não se garante sobre o passthrough; alvos de 2D são pequenos demais para a mira que treme; texto fino some. UI espacial exige world-locking, painéis com material próprio, tamanho angular generoso, layout curvo e a maior parte do conteúdo em janelas — e só ir para 3D onde profundidade e espaço agregam.
10.4 Projetos de portfólio que geram entrevista
- Experiência WebXR (âncora): uma cena AR com hit test (pousar objeto numa superfície), occlusion (depth), um persistent anchor e spatial audio — three.js/R3F, testada no Quest e no Android, com fallback 2D.
- App nativo "hello spatial": um visionOS (SwiftUI + RealityKit) ou Quest (Unity + Meta XR SDK) com uma janela + um volume 3D + interação por mãos/olhar, e o raciocínio de conforto.
- Visualizador de produto AR:
model-viewer+ glTF otimizado + USDZ, integrado numa página de e-commerce fake, com o pipeline de asset documentado (Blender → Draco/KTX2 → USDZ). - Estudo de conforto: a mesma cena com locomoção suave vs teleporte vs vignette, com relato de teste com 5 pessoas.
- UI espacial: um app 2D redesenhado para o espaço, com os três tipos de âncora demonstrados e a justificativa de cada escolha.
10.5 Fontes para continuar
- WebXR: a especificação do W3C Immersive Web e immersiveweb.dev (samples); docs de three.js WebXR, @react-three/xr, Babylon.js WebXR, A-Frame; model-viewer (modelviewer.dev).
- visionOS: Apple — Human Interface Guidelines (seção de spatial), "Design for spatial user interfaces", as sessões da WWDC sobre visionOS/RealityKit; a documentação de RealityKit e ARKit.
- Meta: as Meta Quest design guidelines e a documentação do Meta XR SDK / Interaction SDK / Spatial SDK; o blog de desenvolvedores da Meta.
- Android XR: a documentação do Jetpack XR e ARCore; OpenXR (Khronos).
- Fundacional: The VR Book (Jason Jerald); palestras de Michael Abrash; o continuum de Milgram & Kishino; guias de AR do Google.
- Nesta trilha: Realidade Aumentada, Computação Gráfica & Three.js, 3D em Tempo Real & Motion Graphics para Web, Unity, Blender 3D, Motion de Interface, Cor, Tipografia, Acessibilidade Digital & WCAG, IA de Voz e Áudio.
Cinco ideias sustentam spatial computing: (1) conforto e 90 fps são requisitos de entrada — o que enjoa ou trava falhou; (2) interação por mãos, olhar e voz com alvos grandes (tamanho angular), na zona ergonômica, com feedback multi-canal; (3) UI espacial ≠ UI 2D colada na cara — world-locking, painéis com material próprio, comece com janelas e suba para 3D só onde profundidade agrega; (4) WebXR (three.js/R3F) e model-viewer para alcance sem loja; Unity/OpenXR para multiplataforma; nativo para a melhor UX de uma plataforma; (5) os orçamentos de performance são brutais (2× por olho, chip móvel) e o XR traz privacidade e acessibilidade de outra ordem (eye tracking biométrico, conforto como a11y).