d8b085e5bd
Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com>
46 lines
2.4 KiB
Markdown
46 lines
2.4 KiB
Markdown
## Contexto
|
|
|
|
O grid vermelho/azul que aparece perto de paredes/objetos é o **Space Sense / Guardian** do Quest 3 — renderizado pelo runtime da Meta, não pelo app. O app não consegue desligá-lo por código. Porém, **a sensibilidade desse sistema aumenta** quando a WebXR session pede features como `mesh-detection`, `depth-sensing`, `anchors`, etc. Hoje o app usa `createXRStore({...})` sem lista explícita de features, então a lib `@react-three/xr` solicita o conjunto default — que inclui várias features que não usamos.
|
|
|
|
## O que vou fazer (Onda 2, sem quebrar nada)
|
|
|
|
**Auditoria do `createXRStore` em `src/pages/XRSession.tsx`** para pedir só o que realmente usamos:
|
|
|
|
- **Manter (usado):**
|
|
- `hit-test` — usado por `XRHitTestPlacement`
|
|
- `plane-detection` — usado por `XRHitTestPlacement` (snap) e `XRPlaneOverlay`
|
|
- `local-floor` — reference space padrão
|
|
- `hand-tracking` — usado
|
|
- **Remover do request (não usado):**
|
|
- `mesh-detection` — não há leitor de meshes no código
|
|
- `anchors` — não criamos âncoras persistentes
|
|
- `depth-sensing` — não usado
|
|
- `light-estimation` — não usado
|
|
|
|
Configuração proposta (passada para `createXRStore`):
|
|
|
|
```ts
|
|
const store = createXRStore({
|
|
hand: { left: true, right: true },
|
|
controller: { left: true, right: true },
|
|
sessionInit: {
|
|
requiredFeatures: ['local-floor'],
|
|
optionalFeatures: ['hit-test', 'plane-detection', 'hand-tracking'],
|
|
},
|
|
});
|
|
```
|
|
|
|
Tudo continua como `optionalFeatures`, então se o Quest não suportar algum, a sessão ainda inicia. Nenhuma ferramenta atual (hit-test, snap em planos, mãos, grip, joystick, medição, screenshot, inspeção, compartilhamento) depende das features removidas.
|
|
|
|
## O que NÃO faço
|
|
|
|
- Não mexo em `useModelStore`, `XRHud`, `XRHudInWorld`, `XRHitTestPlacement`, `XRPlaneOverlay` — comportamento das ferramentas fica igual.
|
|
- Não adiciono botão de "desligar Guardian" — impossível por código.
|
|
|
|
## Resultado esperado
|
|
|
|
Reduz a chance de o Space Sense ativar o grid de segurança perto de objetos, porque a sessão XR não pede mais permissões além das necessárias. Se o grid continuar aparecendo, é configuração do headset (Settings → Segurança → Space Sense) e o usuário precisa desligar lá — posso adicionar depois um painel "Ajuda" com o passo-a-passo se quiser.
|
|
|
|
## Arquivo alterado
|
|
|
|
- `src/pages/XRSession.tsx` (apenas o objeto passado para `createXRStore`) |