Skip to content

Unofficial OSC Documentation

Lioncat6 edited this page Jul 2, 2023 · 22 revisions

Disclaimer: This is an unofficial record of what I've learned about the VRChat OSC and its parameters. WIP The goal of this page is to include every avatar parameter out there


All testing was done with python-osc so your results may vary across other osc platforms

Setable Parameters

(Parameters that can be set from another program or app)

Official Parameters

(Sources: osc-as-input-controller, osc-trackers, osc-eye-tracking)

Parameter Path Parameter Description
*modified from the official wiki
1.0 indicates a Float value while 1 on its own is synonymous with True
Parameter Data Type
*guess due to non-functioning parameter
Range
*guess due to non-functioning parameter
Notes
Float values: Make sure to send the value as a Float or the game occasionally interprets it as a bool
Boolean values: You can also send 1 or 0 respectively
/input/Vertical Move forwards (1.0) or Backwards (-1.0) Float -1 to 1
/input/Horizontal Move right (1.0) or left (-1.0)* Float -1 to 1
/input/LookHorizontal Look Left and Right. Smooth in Desktop, VR will do a snap-turn when the value is 1.0 if Comfort Turning is on* Float -1 to 1
/input/UseAxisRight Use held item, presumably, the one held in the right hand* bool* [True, False]* Does not work in my testing.
Tested int, Float, and bool data types on desktop
/input/GrabAxisRight Grab item, presumably, the one held in the right hand* bool* [True, False]* Does not work in my testing.
Tested int, Float, and bool data types on desktop
/input/MoveHoldFB Move a held object forwards (1.0) and backwards (-1.0)* Float -1 to 1
/input/SpinHoldCwCcw Spin a held object Clockwise (1.0) or Counter-Clockwise (-1.0)* Float -1 to 1
/input/SpinHoldUD Spin a held object Up (1.0) or Down (-1.0)* Float -1 to 1
/input/SpinHoldLR Spin a held object Left (1.0) or Right (-1.0)* Float -1 to 1
/input/MoveForward Move forward while this is 1. bool [True, False]
/input/MoveBackward Move backward while this is 1. bool [True, False]
/input/MoveLeft Move left while this is 1. bool [True, False]
/input/MoveRight Move right while this is 1. bool [True, False]
/input/LookLeft Turn to the left while this is 1. Smooth in Desktop, VR will do a snap-turn if Comfort Turning is on. bool [True, False]
/input/LookRight Turn to the right while this is 1. Smooth in Desktop, VR will do a snap-turn if Comfort Turning is on. bool [True, False]
/input/Jump Jump if the world supports it. bool [True, False]
/input/Run Walk faster if the world supports it. bool [True, False]
/input/ComfortLeft Snap-Turn to the left - VR Only. bool [True, False] Untested
/input/ComfortRight Snap-Turn to the right - VR Only. bool [True, False] Untested
/input/DropRight Drop the item held in your right hand - VR Only. bool [True, False] Untested
/input/UseRight Use the item highlighted by your right hand - VR Only. bool [True, False] Untested
/input/GrabRight Grab the item highlighted by your right hand - VR Only. bool [True, False] Untested
/input/DropLeft Drop the item held in your left hand - VR Only. bool [True, False] Untested
/input/UseLeft Use the item highlighted by your left hand - VR Only. bool [True, False] Untested
/input/GrabLeft Grab the item highlighted by your left hand - VR Only. bool [True, False] Untested
/input/PanicButton Turn on Safe Mode. bool [True, False]
/input/QuickMenuToggleLeft Toggle QuickMenu On/Off. Will toggle upon receiving '1' if it's currently '0'. bool [True, False] Functions the same as pressing escape on desktop
/input/QuickMenuToggleRight Toggle QuickMenu On/Off. Will toggle upon receiving '1' if it's currently '0'. bool [True, False] Functions the same as pressing escape on desktop
/input/Voice Toggle Voice - the action will depend on whether "Toggle Voice" is turned on in your Settings. If so, then changing from 0 to 1 will toggle the state of mute. If "Toggle Voice" is turned off, then it functions like Push-To-Mute - 1 is muted, 0 is unmuted. bool [True, False]
/chatbox/input s b n Input text into the chatbox. If b is True, send the text in s immediately, bypassing the keyboard. If b is False, open the keyboard and populate it with the provided text. n is an additional bool parameter that when set to False will not trigger the notification SFX (defaults to True if not specified). [str, bool, bool] ...
/chatbox/typing Toggle the typing indicator on or off. bool [True, False]
/tracking/trackers/1/position Hip Position https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/1/rotation Hip Rotation https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/2/position Chest Position https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/2/rotation Chest Rotation https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/3/position Foot 1 Position https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/3/rotation Foot 1 Rotation https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/4/position Foot 2 Position https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/4/rotation Foot 2 Rotation https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/5/position Knee 1 Position https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/5/rotation Knee 1 Rotation https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/6/position Knee 2 Position https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/6/rotation Knee 2 Rotation https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/7/position Elbow 1 Position https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/7/rotation Elbow 1 Rotation https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/8/position Elbow 2 Position https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/8/rotation Elbow 2 Rotation https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/head/position Head Position https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/trackers/head/rotation Head Rotation https://docs.vrchat.com/docs/osc-trackers [Float, Float, Float] ... Does not function at all when using desktop Mode
/tracking/eye/EyesClosedAmount 0~1 value for how closed the eyes are. Currently, we only support a single value simultaneously controlling the blink of both eyes. In the future, we'll add support for separate per-eye winking. Float 1 to 0
/tracking/eye/CenterPitchYaw https://docs.vrchat.com/docs/osc-eye-tracking [Float, Float] ...
/tracking/eye/CenterPitchYawDist https://docs.vrchat.com/docs/osc-eye-tracking [Float, Float, Float] ...
/tracking/eye/CenterVec https://docs.vrchat.com/docs/osc-eye-tracking [Float, Float, Float] ...
/tracking/eye/CenterVecFull https://docs.vrchat.com/docs/osc-eye-tracking [Float, Float, Float] ...
/tracking/eye/LeftRightPitchYaw https://docs.vrchat.com/docs/osc-eye-tracking [Float, Float, Float, Float] ...
/tracking/eye/LeftRightVec https://docs.vrchat.com/docs/osc-eye-tracking [Float, Float, Float,Float, Float, Float] ...

Unofficial Settable Parameters

Community-made parameters that only work on supporting avatars. Suggest your own parameters in the issues tab. THIS IS VERY WIP

Parameter Path Parameter Description
*modified from its official wiki
1.0 indicates a Float value while 1 on its own is synonymous with True
Parameter Data Type
*guess due to non-functioning parameter
Range
*guess due to non-functioning parameter
Notes
Float values: Make sure to send the value as a Float or the game occasionally interprets it as a bool
Boolean values: You can also send 1 or 0 respectively
/avatar/parameters/onesHR Ones spot in the Heart Rate reading; 123 (legacy) int 0 to 9
/avatar/parameters/tensHR Tens spot in the Heart Rate reading; 123 (legacy) int 0 to 9
/avatar/parameters/hundredsHR Hundreds spot in the Heart Rate reading; 123 (legacy) int 0 to 9
/avatar/parameters/isHRConnected Returns whether the device's connection is valid or not bool [True, False]
/avatar/parameters/isHRActive Returns whether the connection is valid or not bool [True, False]
/avatar/parameters/isHRBeat Estimation on when the heart is beating bool [True, False] Code demo for this included below
/avatar/parameters/HRPercent Range of HR between the MinHR and MaxHR config value Float ...
/avatar/parameters/FullHRPercent Range of HR between the MinHR and MaxHR config value on a scale of -1 to 1 Float -1 to 1
/avatar/parameters/HR HRtoVRChat_OSC - Returns the raw HR, ranged from 0 - 255. (required) int 0 to 255
isHRBeat Code Demo
while True:
    client.send_message("/avatar/parameters/isHRBeat", True)
    time.sleep(.1)
    client.send_message("/avatar/parameters/isHRBeat", False)
    if int(heartRate) <= 0: # Prevents Divide by zero error
        heartRate = 1
    if 60/int(heartRate) > 5: # prevents being stuck on a beat if the heartrate value is too low
        time.sleep(1)
    else:
        time.sleep(60/int(heartRate))

Readable Parameters

Can be read.