Paint in spatial strokes.
Follow the official XR painter contract: a controller pivot becomes a
cursor, select events open and close a stroke, squeeze changes brush
size, and TubePainter turns the sampled path into a tube mesh.
Preparing TubePainter, controller spaces, and the WebXR session entry point...
- mode
- -
- controllers
- -
- strokes
- -
- vertices
- -
- brush
- -
- events
- -
- draws
- -
- frames
- -
Connect a virtual controller, selectstart to begin painting, move through its synthetic path, then selectend to cap the stroke.
The event log records the last eight controller lifecycle and gesture transitions.
moveTo(position)start without a segmentlineTo(position)extend the tubesetColor(color)color new segmentssetSize(size)size new segmentsupdate()upload changed buffersThe official addon owns a dynamic position/normal/color buffer. Clear replaces each painter so its internal update cursor and GPU resources reset together.
Desktop paths verify controller events and TubePainter buffer updates; physical controller pose and immersive frame timing still require a headset.
The XR button is a real session entry point. Use ?forceWebGL=1 for the WebGL2 companion; desktop controller paths are labeled simulation.