b3d-panel
A declarative spatial-UI panel you drop into the scene as a child of <tosi-b3d>,
instead of hard-wiring panels in code. It mounts in XR via frame-panel,
anchored to an XR reference frame, and you tune its placement with
plain attributes — so you can iterate on offsets directly.
<tosi-b3d gamepad>
...
<tosi-b3d-panel frame="eye" azimuth="-60" elevation="45" title="Inventory"></tosi-b3d-panel>
<tosi-b3d-panel frame="eye" azimuth="60" elevation="45" title="Inventory"></tosi-b3d-panel>
<tosi-b3d-panel frame="eye" azimuth="0" elevation="-45" title="Quick Access"></tosi-b3d-panel>
<tosi-b3d-panel frame="face" position="0 0 2" reveal="always" blend="add" view="first" url="/reticle.svg" width="0.24"></tosi-b3d-panel>
<tosi-b3d-panel frame="left-hand" preset="wrist" title="Menu" width="0.09"></tosi-b3d-panel>
</tosi-b3d>
If ANY <tosi-b3d-panel> children are present they replace the built-in default
set, so you have full control. Panels exist only inside an immersive session.
Attributes
| Attribute | Default | Description |
|---|---|---|
frame |
eye |
eye / rig / world / body / neck / face / left-hand / right-hand |
preset |
'' |
A named anchor (waist, left-shoulder, right-shoulder, overhead, wrist). Overrides the angular fields. |
azimuth / elevation |
0 / 0 |
Degrees off the frame's eye: +az right, +el up |
distance |
1.4 |
Metres from the eye |
position |
'' |
Explicit "x y z" local position (overrides az/el/distance) |
roll |
0 |
Roll about the panel normal (deg) |
reveal |
gaze |
gaze (look toward it) or always |
blend |
composite |
composite or add (additive HUD glyphs) |
view |
both |
first / third / both — restrict to a camera view |
title |
'' |
Placeholder card title (ignored if url set) |
url |
'' |
SVG URL (e.g. a reticle) |
width |
0.26 |
Panel width (m); height follows aspect |
reveal-start / reveal-full |
50 / 25 |
Gaze half-angles (deg) where the reveal begins / completes |
max-distance |
0 |
Hide beyond this distance (m); 0 = no limit |