con un clic
xr
Vuer VR/AR/WebXR - hand tracking, controllers, AR mesh, haptics (plugin:vuer@vuer)
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Vuer VR/AR/WebXR - hand tracking, controllers, AR mesh, haptics (plugin:vuer@vuer)
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
VuerClient for connecting to Vuer servers and sending custom events (plugin:vuer@vuer)
Vuer 3D component reference - primitives, meshes, URDF, cameras, lighting, images (plugin:vuer@vuer)
Vuer event system - session APIs, custom events, handlers, RPC, streaming (plugin:vuer@vuer)
Common Vuer patterns - animation, URDF, point clouds, interactivity, batch updates (plugin:vuer@vuer)
Vuer quick start and basic usage patterns for real-time 3D visualization in robotics and AI applications (plugin:vuer@vuer)
Vuer server configuration, decorators, event handlers, SSL/TLS for VR (plugin:vuer@vuer)
| name | xr |
| description | Vuer VR/AR/WebXR - hand tracking, controllers, AR mesh, haptics (plugin:vuer@vuer) |
Requires wss://. Use ngrok: ngrok http 8012 then https://vuer.ai?ws=wss://xxxx.ngrok.io
session.set @ DefaultScene(Hands(key="hands", stream=True))
@app.add_handler("HAND_MOVE")
async def on_hands(event, session):
left = event.value.get('left')
if left:
wrist = left['wrist']
pinch = left.get('pinchStrength', 0)
Joints: wrist, thumbTip, indexTip, middleTip, ringTip, pinkyTip, pinchStrength, matrix
session.set @ DefaultScene(MotionController(key="ctrl", stream=True))
@app.add_handler("CONTROLLER_MOVE")
async def on_ctrl(event, session):
right = event.value.get('right')
if right:
pos, rot, buttons = right['position'], right['rotation'], right['buttons']
@app.add_handler("HAND_MOVE")
async def update_gripper(event, session):
r = event.value.get('right')
if r:
session.upsert @ Gripper(key="g", position=r['wrist'],
pinchWidth=0.08 * (1 - r.get('pinchStrength', 0)))
session.set @ DefaultScene(WebXRMesh(key="mesh", stream=False))
await asyncio.sleep(2)
mesh_data = await session.get_webxr_mesh(key="mesh")
for m in mesh_data.value.get('meshes', []):
vertices, indices, label = m['vertices'], m['indices'], m.get('semanticLabel')
from vuer.events import HapticActuatorPulse
session @ HapticActuatorPulse(left={"strength": 0.5, "duration": 100},
right={"strength": 1.0, "duration": 200})