Jayo's VRChat OSC Bridge for VNyan
A downloadable VNyan plugin
Launch sale! Order before Jan 18 @ 4AM EST to get this plugin at half price ($5 USD)
Provides a complete implementation of VRChat's OSC Interface. Respond to avatar parameter changes in the Node Graph and use triggers to drive parameters, inputs, and tracking!
Installation
- In VNyan, make sure you've enabled "Allow 3rd party plugins" from the Settings menu.
- Extract the contents of the ZIP file directly into your VNyan installation folder_. This will add the plugin files to your VNyan
Items\Assemblies
folders. If you built your own files you'll need to put them into the Assemblies folder directly. - Launch VNyan, confirm that a button for the plugin now exists in your Plugins window!
Usage
This plugin contains an OSC Sender and an OSC Receiver that can connect to VRChat and communicate between VRC and VNyan. This is a complete implementation of the VRChat OSC interface documented here: https://docs.vrchat.com/docs/osc-overview . Changes to avatar parameters in VRC will be set as VNyan parameters, and will activate a trigger so that your node graph can respond in real time. VNyan trigger can also be used to change VRC avatar parameters, drive control inputs, populate the chatbox, and send body-tracking and eye-tracking telemetry!
In order to avoid conflict with other plugins or VNyan internals, parameter and trigger names related to this plugin are prefixed with _xjvb_
.
Inbound Parameter Changes
Whenever an Avatar Parameter changes on your VRChat avatar, two things will happen in VNyan immediately:
- A Float Parameter is set with the received value. the name of this parameter is prefixed as described above, so if a parameter called
parameterName
is changed on the avatar, VNyan will update the value of the_xjvb_parameterName
Float Parameter. - A VNyan trigger is fired with the parameter details on its value sockets. This trigger is named
_xjvb_paramChange
, the name of the VRC Avatar Parameter will be on thetext1
value socket, and a string-encoded float representing the new value will be on thetext2
value socket.
Use this to sync up elements of your VNyan avatar and world with your VRChat avatar's state, activate haptics, or anything else that can be driven by VNyan's Node Graph!
In addition, whenever a new local VRChat avatar is loaded, a VNyan trigger is fired. This one is named _xjvb_avatarChange
, and the ID of the loaded avatar will be on the text1
value socket. We'll also set a VNyan String Parameter called _xjvb_avatar
to this ID.
For more technical info, check out VRChat's documentation of these features: https://docs.vrchat.com/docs/osc-avatar-parameters
Outbound Triggers
You can call specially-named triggers in the VNyan Node Graph to communicate back to VRChat! A few different types of messages are supported, allowing control over avatar parameters, nearly-complete control over avatar movement/inputs, as well as tracking information.
Set an Avatar Parameter
Use this trigger to set an Avatar Parameter on your VRChat Avatar from within VNyan. This could be used to allow VNyan redeems that work inside VRChat if you've built the necessary animations into your avatar!
Trigger Name: _xjvb_setParam
text1 Value Socket: The name of the VRChat Avatar Parameter to set
text2 Value Socket: string representation of the value to be set
If successful, this parameter change will also result in an inbound parameter change behaviour as described in the Inbound Parameter Changes section above.
Relevant VRChat Documentation: https://docs.vrchat.com/docs/osc-avatar-parameters
Set an Input Axis
Use this trigger to set the value of a VRChat Input Axis from within VNyan. This could be used to allow external control of your avatar from VNyan or any service connected to the Node Graph. Per VRChat's documentation, an Input Axis should be set to a float value between -1.0 and 1.0, where 0 means the axis is "neutral" or not in use. Valid axis names are:
Vertical
Horizontal
LookHorizontal
UseAxisRight
GrabAxisRight
MoveHoldFB
SpinHoldCwCcW
SpinHoldUD
SpinHoldLR
Trigger Name: _xjvb_setAxis
text1 Value Socket: The name of the VRChat Input Axis to set
text2 Value Socket: string representation of the value to be set
Relevant VRChat Documentation: https://docs.vrchat.com/docs/osc-as-input-controller#axes
Press or Release an Input Button
Use this trigger to "press" or "release" a VRChat Input Button from within VNyan. This could be used to allow external control of your avatar from VNyan or any service connected to the Node Graph. Per VRChat's documentation, an Input Button should be set to 1 to indicate when the button has been pressed, and 0 after it has been released. A button needs to be reset to 0 before setting it to 1 again will have any effect. Valid button names are:
MoveForward
MoveBackward
MoveLeft
MoveRight
LookLeft
LookRight
Jump
Run
ComfortLeft
ComfortRight
DropRight
UseRight
GrabRight
DropLeft
UseLeft
GrabLeft
PanicButton
QuickMenuToggleLeft
QuickMenuToggleRight
Voice
Trigger Names: _xjvb_buttonOn
and _xjvb_buttonOff
text1 Value Socket: The name of the VRChat Input Button to press/release
Relevant VRChat Documentation: https://docs.vrchat.com/docs/osc-as-input-controller#buttons
Post to the Chatbox
Use this Trigger to post a message to the chatbox. Per VRChat's documentation, the chatbox can only display 144 characters, and no more than 9 lines.
Trigger Name: _xjvb_setChatbox
value1 Value Socket: 1 if chat message should be send immediately, 0 if it should populate into the virtual keyboard
value2 Value Socket: 1 if the chatbox notification cound should play with this update, 0 if it should be silent
text1 Value Socket: the new contents of the chatbox
Relevant VRChat Documentation: https://docs.vrchat.com/docs/osc-as-input-controller#chatbox
Change Chatbox Typing State
Use this trigger to toggle the "typing" indicator in the chatbox.
Trigger Name: _xjvb_setTyping
value1 Value Socket: 1 to turn the typing indicator on, 0 to turn it off
Relevant VRChat Documentation: https://docs.vrchat.com/docs/osc-as-input-controller#chatbox
Set Tracker Position or Rotation
VRChat supports position and rotation tracking for up to 8 OSC body Trackers, as well as head tracking. Use these triggers to to update the tracker telemetry to control the avatar's movements and pose.
Note that there is no built-in mechnaism in VNyan to get this information in a format that is usable here! Tracker telemetry triggers are provided for feature-completeness with VRChat's OSC spec.
Trigger Names: _xjvb_trackerPos
and _xjvb_trackerRot
value1 Value Socket: the ID of the tracker to set (use 0 for the head tracker)
text1 Vale Socket: string representation of the X coordinate of the position or rotation vector
text2 Vale Socket: string representation of the Y coordinate of the position or rotation vector
text3 Vale Socket: string representation of the Z coordinate of the position or rotation vector
Relevant VRChat Documentation: https://docs.vrchat.com/docs/osc-trackers
Eye Tracking Control
VRChat supports eye tracking over OSC. This is handled by sending information about the amount that the eyes are open, and eye gaze information in one of six different formats. The finer points of how this works is out-of-scope for this document, please refer to VRChat's documentation to understand how it works.
Note that there is no built-in mechanismin VNyan to get current Gaze information and convert it to any of these formats! Eye tracking triggers are provided for feature-completeness with VRChat's OSC spec.
Relevant VRChat Documentation: https://docs.vrchat.com/docs/osc-eye-tracking
Eyes Closed Amount
Trigger Name: _xjvb_eyeClosed
text1 Value Socket: string representation of a float between 0.0 and 1.0 indicating how closed the eyes are
Set Eyes Center Pitch Yaw
Trigger Name: _xjvb_eyePitchYaw
text1 Value Socket: string representation of a float for the pitch of the eye gaze
text2 Value Socket: string representation of a float for the yaw of the eye gaze
Set Eyes Center Pitch Yaw Dist
Trigger Name: _xjvb_eyePitchYawDist
text1 Value Socket: string representation of a float for the pitch of the eye gaze
text2 Value Socket: string representation of a float for the yaw of the eye gaze
text3 Value Socket: string representation of a float for the distance of the eye gaze
Set Eyes Center Vector
Trigger Name: _xjvb_eyeCenterVec
text1 Value Socket: string representation of the X coordinate of the gaze vector
text2 Value Socket: string representation of the Y coordinate of the gaze vector
text3 Value Socket: string representation of the Z coordinate of the gaze vector
Set Eyes Center Vector Full
Trigger Name: _xjvb_eyeCenterVecFull
text1 Value Socket: string representation of the X coordinate of the gaze vector
text2 Value Socket: string representation of the Y coordinate of the gaze vector
text3 Value Socket: string representation of the Z coordinate of the gaze vector
Set Eyes Left Right Pitch Yaw
Trigger Name: _xjvb_eyeLRPitchYaw
text1 Value Socket: string respresentation of two floats (separated by commas) for the pitch and yaw of the left eye, e.g. 1.234,56.7
text2 Value Socket: string respresentation of two floats (separated by commas) for the pitch and yaw of the right eye, e.g. 1.234,56.7
Set Eyes Left Right Vector
Trigger Name: _xjvb_eyeLRVec
text1 Value Socket: string respresentation of three floats (separated by commas) for the gaze vector of the left eye, e.g. 1.234,56.7,-8
text2 Value Socket: string respresentation of three floats (separated by commas) for the gaze vector of the right eye, e.g. 1.234,56.7,-8
Purchase
In order to download this VNyan plugin you must purchase it at or above the minimum price of $5 USD. You will get access to the following files:
Leave a comment
Log in with itch.io to leave a comment.