### Control Skeleton Per Bone with Quaternion (OpenVR Driver Space) Source: https://gpsnmeajp.github.io/VirtualMotionTrackerDocument/api Controls individual bones using OpenVR Driver's right-handed space, quaternions, and hand space. This enables complete hand reproduction. Requires index, bone index, and quaternion components (x, y, z, w) along with positional data (x, y, z). ```VMT /VMT/Skeleton/Driver (int)index, (int)boneIndex, (float)x, (float)y, (float)z, (float)qx, (float)qy, (float)qz, (float)qw ``` -------------------------------- ### Control Skeleton Per Bone with Euler Angles (Unity Space) Source: https://gpsnmeajp.github.io/VirtualMotionTrackerDocument/api Controls individual bones using Unity's left-handed space, Euler angles (degrees), and hand space. This method also allows for full hand reproduction. Requires index, bone index, and Euler angle components (x, y, z) along with positional data (x, y, z). ```VMT /VMT/Skeleton/UEuler (int)index, (int)boneIndex, (float)x, (float)y, (float)z, (float)rx, (float)ry, (float)rz ``` -------------------------------- ### Control Skeleton Per Bone with Quaternion (Unity Space) Source: https://gpsnmeajp.github.io/VirtualMotionTrackerDocument/api Controls individual bones using Unity's left-handed space, quaternions, and hand space. This allows for full hand reproduction, including finger spacing and hand twist. Requires index, bone index, and quaternion components (x, y, z, w). ```VMT /VMT/Skeleton/Unity (int)index, (int)boneIndex, (float)x, (float)y, (float)z, (float)qx, (float)qy, (float)qz, (float)qw ``` -------------------------------- ### Control Skeleton with Bone Sets (Virtual Motion Tracker) Source: https://gpsnmeajp.github.io/VirtualMotionTrackerDocument/api Controls the skeleton using bone set units in a linear space, recommended for simple reproduction based on hand opening degree. It uses an index, bone set index, and a value representing the deformation from fist to open hand. ```VMT /VMT/Skeleton/Scalar (int)index, (int)boneSetIndex, (float)value, (int)0, (int)0 ``` -------------------------------- ### Input Operations Source: https://gpsnmeajp.github.io/VirtualMotionTrackerDocument/api Endpoints for sending various types of input data, including button presses, trigger actions, and joystick movements. ```APIDOC ## /VMT/Input/Button ### Description Sends button press or release input. ### Method POST ### Endpoint /VMT/Input/Button ### Parameters #### Path Parameters - **index** (int) - Required - Index of the device. - **buttonIndex** (int) - Required - Index of the button (0-17). - **timeoffset** (float) - Required - Time offset in seconds. - **value** (int) - Required - 1 for press, 0 for release. ### Request Example ```json { "index": 0, "buttonIndex": 1, "timeoffset": 0.01, "value": 1 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Input/Button/Touch ### Description Sends button touch input. ### Method POST ### Endpoint /VMT/Input/Button/Touch ### Parameters #### Path Parameters - **index** (int) - Required - Index of the device. - **buttonIndex** (int) - Required - Index of the button (0-17). - **timeoffset** (float) - Required - Time offset in seconds. - **value** (int) - Required - 1 for touch, 0 for release touch. ### Request Example ```json { "index": 0, "buttonIndex": 1, "timeoffset": 0.01, "value": 1 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Input/Trigger ### Description Sends trigger input. ### Method POST ### Endpoint /VMT/Input/Trigger ### Parameters #### Path Parameters - **index** (int) - Required - Index of the device. - **triggerIndex** (int) - Required - Index of the trigger (0-8). - **timeoffset** (float) - Required - Time offset in seconds. - **value** (float) - Required - Trigger value (0.0 to 1.0). ### Request Example ```json { "index": 0, "triggerIndex": 0, "timeoffset": 0.01, "value": 0.5 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Input/Trigger/Touch ### Description Sends trigger touch input. ### Method POST ### Endpoint /VMT/Input/Trigger/Touch ### Parameters #### Path Parameters - **index** (int) - Required - Index of the device. - **triggerIndex** (int) - Required - Index of the trigger (0-8). - **timeoffset** (float) - Required - Time offset in seconds. - **value** (int) - Required - 1 for touch, 0 for release touch. ### Request Example ```json { "index": 0, "triggerIndex": 0, "timeoffset": 0.01, "value": 1 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Input/Trigger/Click ### Description Sends trigger click input. ### Method POST ### Endpoint /VMT/Input/Trigger/Click ### Parameters #### Path Parameters - **index** (int) - Required - Index of the device. - **triggerIndex** (int) - Required - Index of the trigger (0-8). - **timeoffset** (float) - Required - Time offset in seconds. - **value** (int) - Required - 1 for click, 0 for release click. ### Request Example ```json { "index": 0, "triggerIndex": 0, "timeoffset": 0.01, "value": 1 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Input/Joystick ### Description Sends joystick input. ### Method POST ### Endpoint /VMT/Input/Joystick ### Parameters #### Path Parameters - **index** (int) - Required - Index of the device. - **joystickIndex** (int) - Required - Index of the joystick (0-3). - **timeoffset** (float) - Required - Time offset in seconds. - **x** (float) - Required - X-axis value (-1.0 to 1.0). - **y** (float) - Required - Y-axis value (-1.0 to 1.0). ### Request Example ```json { "index": 0, "joystickIndex": 0, "timeoffset": 0.01, "x": 0.5, "y": -0.5 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Input/Joystick/Touch ### Description Sends joystick touch input. ### Method POST ### Endpoint /VMT/Input/Joystick/Touch ### Parameters #### Path Parameters - **index** (int) - Required - Index of the device. - **joystickIndex** (int) - Required - Index of the joystick (0-3). - **timeoffset** (float) - Required - Time offset in seconds. - **value** (int) - Required - 1 for touch, 0 for release touch. ### Request Example ```json { "index": 0, "joystickIndex": 0, "timeoffset": 0.01, "value": 1 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Input/Joystick/Click ### Description Sends joystick click input. ### Method POST ### Endpoint /VMT/Input/Joystick/Click ### Parameters #### Path Parameters - **index** (int) - Required - Index of the device. - **joystickIndex** (int) - Required - Index of the joystick (0-3). - **timeoffset** (float) - Required - Time offset in seconds. - **value** (int) - Required - 1 for click, 0 for release click. ### Request Example ```json { "index": 0, "joystickIndex": 0, "timeoffset": 0.01, "value": 1 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ``` -------------------------------- ### Driver Control Operations Source: https://gpsnmeajp.github.io/VirtualMotionTrackerDocument/api Endpoints for controlling the driver, such as resetting, loading settings, and managing pose updates. ```APIDOC ## /VMT/Reset ### Description Turns off all trackers. ### Method POST ### Endpoint /VMT/Reset ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/LoadSetting ### Description Reloads the driver's setting JSON. ### Method POST ### Endpoint /VMT/LoadSetting ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/SetRoomMatrix ### Description Sets and saves the Room Matrix. This operation writes settings to the drive and should not be sent periodically. ### Method POST ### Endpoint /VMT/SetRoomMatrix ### Parameters #### Path Parameters - **m1** to **m12** (float) - Required - The 12 elements of the Room Matrix. ### Request Example ```json { "m1": 1.0, "m2": 0.0, "m3": 0.0, "m4": 0.0, "m5": 0.0, "m6": 1.0, "m7": 0.0, "m8": 0.0, "m9": 0.0, "m10": 0.0, "m11": 1.0, "m12": 0.0 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Set/RoomMatrix ### Description Sets and saves the Room Matrix. This operation writes settings to the drive and should not be sent periodically. ### Method POST ### Endpoint /VMT/Set/RoomMatrix ### Parameters #### Path Parameters - **m1** to **m12** (float) - Required - The 12 elements of the Room Matrix. ### Request Example ```json { "m1": 1.0, "m2": 0.0, "m3": 0.0, "m4": 0.0, "m5": 0.0, "m6": 1.0, "m7": 0.0, "m8": 0.0, "m9": 0.0, "m10": 0.0, "m11": 1.0, "m12": 0.0 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/SetRoomMatrix/Temporary ### Description Sets the Room Matrix temporarily. This setting is volatile and will be lost on restart. ### Method POST ### Endpoint /VMT/SetRoomMatrix/Temporary ### Parameters #### Path Parameters - **m1** to **m12** (float) - Required - The 12 elements of the Room Matrix. ### Request Example ```json { "m1": 1.0, "m2": 0.0, "m3": 0.0, "m4": 0.0, "m5": 0.0, "m6": 1.0, "m7": 0.0, "m8": 0.0, "m9": 0.0, "m10": 0.0, "m11": 1.0, "m12": 0.0 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Set/RoomMatrix/Temporary ### Description Sets the Room Matrix temporarily. This setting is volatile and will be lost on restart. ### Method POST ### Endpoint /VMT/Set/RoomMatrix/Temporary ### Parameters #### Path Parameters - **m1** to **m12** (float) - Required - The 12 elements of the Room Matrix. ### Request Example ```json { "m1": 1.0, "m2": 0.0, "m3": 0.0, "m4": 0.0, "m5": 0.0, "m6": 1.0, "m7": 0.0, "m8": 0.0, "m9": 0.0, "m10": 0.0, "m11": 1.0, "m12": 0.0 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/SetAutoPoseUpdate ### Description Sets pose auto-update. Enable to turn on, disable to turn off. ### Method POST ### Endpoint /VMT/SetAutoPoseUpdate ### Parameters #### Path Parameters - **enable** (int) - Required - 1 to enable, 0 to disable. ### Request Example ```json { "enable": 1 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Set/AutoPoseUpdate ### Description Sets pose auto-update. Enable to turn on, disable to turn off. ### Method POST ### Endpoint /VMT/Set/AutoPoseUpdate ### Parameters #### Path Parameters - **enable** (int) - Required - 1 to enable, 0 to disable. ### Request Example ```json { "enable": 1 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Get/Devices/List ### Description Gets the list of OpenVR devices as a string. ### Method GET ### Endpoint /VMT/Get/Devices/List ### Response #### Success Response (200) - **devices** (string) - A string containing the list of OpenVR devices. #### Response Example ```json { "devices": "[Device1, Device2, ...]" } ``` ## /VMT/Subscribe/Device ### Description Subscribes to OpenVR device coordinates, sending updates every frame. ### Method POST ### Endpoint /VMT/Subscribe/Device ### Parameters #### Path Parameters - **serial** (string) - Required - The serial number of the device to subscribe to. ### Request Example ```json { "serial": "VMT-SERIAL-123" } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Unsubscribe/Device ### Description Unsubscribes from OpenVR device coordinates. ### Method POST ### Endpoint /VMT/Unsubscribe/Device ### Parameters #### Path Parameters - **serial** (string) - Required - The serial number of the device to unsubscribe from. ### Request Example ```json { "serial": "VMT-SERIAL-123" } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/RequestRestart ### Description Prompts the user to restart Steam VR. ### Method POST ### Endpoint /VMT/RequestRestart ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/SetDiagLog ### Description Enables or disables the diagnostic log, which outputs to the SteamVR Web Console. ### Method POST ### Endpoint /VMT/SetDiagLog ### Parameters #### Path Parameters - **enable** (int) - Required - 1 to enable, 0 to disable. ### Request Example ```json { "enable": 1 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Set/DiagLog ### Description Enables or disables the diagnostic log, which outputs to the SteamVR Web Console. ### Method POST ### Endpoint /VMT/Set/DiagLog ### Parameters #### Path Parameters - **enable** (int) - Required - 1 to enable, 0 to disable. ### Request Example ```json { "enable": 1 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Config ### Description Writes to the JSON configuration. This operation writes settings to the drive and should not be sent periodically. ### Method POST ### Endpoint /VMT/Config ### Parameters #### Path Parameters - **name** (string) - Required - The name of the configuration key. - **value** (string) - Required - The value to set for the configuration key. ### Request Example ```json { "name": "some_setting", "value": "some_value" } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Set/Destination ### Description Switches the destination for OSC responses from the driver. ### Method POST ### Endpoint /VMT/Set/Destination ### Parameters #### Path Parameters - **ip_address** (string) - Required - The IP address of the destination. - **port** (int) - Required - The port number of the destination. ### Request Example ```json { "ip_address": "192.168.1.100", "port": 9000 } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure. #### Response Example ```json { "status": "success" } ``` ## /VMT/Debug ### Description Sends a debug command to the driver. Refer to the driver source for available commands. ### Method POST ### Endpoint /VMT/Debug ### Parameters #### Path Parameters - **command** (string) - Required - The debug command to execute. ### Request Example ```json { "command": "get_status" } ``` ### Response #### Success Response (200) - **output** (string) - The output of the debug command. #### Response Example ```json { "output": "Driver is running." } ``` ``` -------------------------------- ### Apply Skeleton Changes (Virtual Motion Tracker) Source: https://gpsnmeajp.github.io/VirtualMotionTrackerDocument/api Applies the registered bone information to the virtual skeleton. This is a required step after updating bone data. It takes an index and a time offset as parameters. ```VMT /VMT/Skeleton/Apply (int)index, (float)timeoffset ``` -------------------------------- ### OSC Protocol Messages for Virtual Tracker Control Source: https://gpsnmeajp.github.io/VirtualMotionTrackerDocument/api This section details the OSC messages used to control virtual trackers. It specifies the address patterns, data types, and their meanings for various control aspects like position, rotation, and device serial. These messages are crucial for integrating custom devices or software as trackers in SteamVR. ```osc /VMT/Room/Unity (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)qx, (float)qy, (float)qz, (float)qw ``` ```osc /VMT/Room/UEuler (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)rx, (float)ry, (float)rz ``` ```osc /VMT/Room/Driver (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)qx, (float)qy, (float)qz, (float)qw ``` ```osc /VMT/Raw/Unity (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)qx, (float)qy, (float)qz, (float)qw ``` ```osc /VMT/Raw/UEuler (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)rx, (float)ry, (float)rz ``` ```osc /VMT/Raw/Driver (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)qx, (float)qy, (float)qz, (float)qw ``` ```osc /VMT/Joint/Unity (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)qx, (float)qy, (float)qz, (float)qw, (string)serial ``` ```osc /VMT/Joint/UEuler (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)rx, (float)ry, (float)rz, (string)serial ``` ```osc /VMT/Joint/Driver (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)qx, (float)qy, (float)qz, (float)qw, (string)serial ``` ```osc /VMT/Follow/Unity (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)qx, (float)qy, (float)qz, (float)qw, (string)serial ``` ```osc /VMT/Follow/UEuler (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)rx, (float)ry, (float)rz, (string)serial ``` ```osc /VMT/Follow/Driver (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)qx, (float)qy, (float)qz, (float)qw, (string)serial ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.