Vuer

Movable Grippers (in WebView and VR)

The movable component allows you to wrap objects inside, and change their position and orientation. The following exmaple shows how to detect the OBJECT_MOVE events.

Detecting Movement

To get the current location of the gripper, you can bind to the OBJECT_MOVE event. The event object also contains the key of the movable that is being moved. This is a way to identify the movable object.

I plan to make it possible to bind the event listener to a specific movable object for a more compact API.

@app.add_handler("OBJECT_MOVE")
async def handler(event, session):
    print(f"Movement Event: key-{event.key}", event.value)

As usual, we spawn the main session:

@app.spawn(start=True)
async def main(session: VuerSession):
    session.set @ DefaultScene()

    session.upsert @ Movable(Gripper(key="not-moving"))
    import numpy as np

    for i in range(10000):
        # We move the gripper at a const speed around the origin.
        x = np.sin(i / 60) / 2
        y = np.cos(i / 60) / 2
        session.upsert @ Movable(Gripper(), position=[x, y, 0], key='moving-one')
        await sleep(0.016)