graphics-3d: accessible DOM mirror for 3D objects
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- three.js, typescript
- Área
- accessibility, frontend
Línea de trabajo
Start with docs/docs/lib-graphic-3d/index.mdx and inspect the graphics-3d package’s tick, ctx.graphics.worldToScreen, and __clear entry points. Check how components-systems defines ECS components before deciding where the API belongs. Done means an opt-in DOM mirror supports positioning, keyboard focus and activation, and cleanup, with tests and documentation covering those behaviors.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Which package or utils is this feature request for?
graphics-3d
Feature
Three.js draws everything into a canvas. Screen readers and keyboard navigation (Tab, Enter) cannot reach the objects of a 3D scene, so a game made with @nanoforge-dev/graphics-3d is not accessible to blind or keyboard-only players (benchmark criterion E2, scored ❌ for Three.js).
Ideal solution or implementation
An opt-in way to mirror a 3D object as a hidden DOM element:
- data: a label, an ARIA role (
button,img…), and whether it is focusable; - each tick, the element is positioned over the object with
ctx.graphics.worldToScreen, inside the game container (incontainer.ownerDocument, so pop-out keeps working); - focus and Enter/Space are forwarded to game code (a callback or an event);
- the element is hidden visually but not from assistive tech, and removed on
__clear.
If the API is an ECS component (e.g. Accessible3D(label, role, focusable)), it belongs in components-systems, and the library only provides the positioning helper.
Small, documented, and tested (positioning, focus, cleanup).
Alternative solutions or implementations
Babylon's @babylonjs/accessibility does the same thing with a DOM tree mirrored from the scene. We could port the idea instead of the code.
Other context
Deferred from the first version of graphics-3d. See docs/docs/lib-graphic-3d/index.mdx (E2).
- Lenguaje dominante
- TypeScript
- Estrellas
- 7
- Forks
- 2
- Merge medio
- 1 d 17 h
- PR fusionados (30 d)
- 17
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de NanoForge-dev/Engine
-
dependencies enhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
NanoForge-dev/Engine#513 ·
Los mantenedores suelen responder en 1 día
-
bug chore tests
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
NanoForge-dev/Engine#511 ·
Los mantenedores suelen responder en 1 día
-
docs(network): TSDoc says ICE_SERVERS defaults to an empty list, the code uses public STUN serversAbiertodocumentation good first issue modules:network
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
NanoForge-dev/Engine#509 ·
Los mantenedores suelen responder en 1 día
-
documentation modules:ecs packages:asset packages:core
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
NanoForge-dev/Engine#508 ·
Los mantenedores suelen responder en 1 día
-
bug good first issue modules:music modules:sound
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
NanoForge-dev/Engine#505 ·
Los mantenedores suelen responder en 1 día
Todos los issues de NanoForge-dev/Engine
Issues similares
-
Mend: dependency security vulnerability
Dificultad 1/5 1-3 horas Aptitud para principiantes 65/100
fdm-monster/fdm-monster#5563 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
be-BOP-io-SA/be-BOP#2849 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
Los mantenedores suelen responder en 1 día
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
growilabs/growi#12246 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
🐛 The Rulekeeper - An index run that gives up on the lock ends SucceededPosiblemente ocupada @github-actions la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
SSWConsulting/SSW.Rules#2809 · 1 comentario ·
Los mantenedores suelen responder en 1 día