DEV Community

babycat
babycat

Posted on

lingbot-map's 3D Scene Needs an Accessible Event List Beside the Canvas

Robbyant/lingbot-map is an Apache-2.0 feed-forward 3D foundation model for reconstructing scenes from streaming data. A browser visualization is a natural way to explore such output.

A canvas can show geometry beautifully. It cannot, by itself, give every user a stable reading order, searchable object history, or keyboard path.

The accessible frontend needs one shared scene model and two views.

Shared data, not an afterthought transcript

type SceneEvent = {
  id: string;
  frame: number;
  kind: "camera" | "surface" | "object" | "warning";
  label: string;
  confidence?: number;
  timestampMs: number;
};
Enter fullscreen mode Exit fullscreen mode

Feed this event stream to both the WebGL renderer and a semantic event list. Do not derive accessibility text by scraping pixels after rendering.

Semantic companion view

<section aria-labelledby="scene-events-title">
  <h2 id="scene-events-title">Scene events</h2>
  <p id="scene-status" role="status" aria-live="polite"></p>
  <ol id="scene-events"></ol>
</section>
Enter fullscreen mode Exit fullscreen mode

Each list item should expose frame number, event type, label, and confidence when confidence changes the user's decision. Selecting an item should focus the corresponding object in the canvas; selecting an object in the canvas should update the list selection.

Do not announce every frame

Streaming reconstruction may produce many events per second. Announcing each one overwhelms assistive technology. Keep the durable list complete, but throttle the live region to meaningful summaries:

Frame 320: two new surfaces mapped; tracking confidence stable.
Enter fullscreen mode Exit fullscreen mode

Warnings such as tracking loss can use an assertive announcement. Routine geometry updates should not.

Keyboard contract

  • Tab reaches the canvas controls and event list.
  • Arrow keys move within the selected event group only when that behavior is documented.
  • Enter focuses the corresponding 3D object.
  • Escape returns to the event list.
  • A “Pause updates” control stops motion and live announcements without discarding history.

Respect prefers-reduced-motion. Camera transitions should be instant or substantially reduced when requested.

Failure states

The semantic view must remain useful when WebGL fails, the model stream disconnects, or reconstruction confidence falls below a threshold. Show the last confirmed frame, connection state, and recovery action.

Test matrix

Test Expected evidence
Keyboard-only navigation Every event and control reachable
Screen reader Ordered events with bounded announcements
Reduced motion No animated camera transition
WebGL disabled Event history and status remain visible
Reconnect No duplicate event IDs

Limitations

I have not evaluated lingbot-map's demo with assistive technologies. This is a proposed frontend architecture for streaming 3D evidence, not a claim about the project's current accessibility. The repository description and license were checked; implementation details may change.

A 3D model answers “where?” The semantic companion view must also answer “what changed, in what order, and what can I do next?”

Top comments (0)