H-View
The application more directed towards other developers who might want to modify it or learn how some parts work.
This application has two parts:
External Expressions Menu
External Expressions Menu is a Unity Editor tool that relies on the VRChat SDK.
When the avatar is being built, it will write a large JSON file in the AppData/LocalLow/VRChat/vrchat/OSC/<userid>/Hai/ folder.
- It does not require NDMF, and it does not require VRCFury either.
- If you do happen to use NDMF or Modular Avatar, it will execute itself as a NDMF plugin instead of an avatar preprocessor.
- If you have Modular Avatar or NDMF, use Tools > NDM Framework > Manual bake avatar to generate the JSON file without needing to build your avatar (it might not work if you have stuff generated by VRCFury, but I'm not sure about this).
- The tool will always execute during a build. To turn that off, uninstall the tool using ALCOM.
This file contains the following:
- The entire Expressions Menu, including all of its icons,
- All Contacts that have parameters,
- All PhysBones that have parameters,
- The entire Expressions Parameters list.
This tool can be downloaded through ALCOM using my listing (you must enable pre-release packages to see it),
and the source code is at https://github.com/hai-vr/external-expressions-menu if you want to include this package yourself for modification.
The JSON file contains the icons as PNGs, encoded into base64 strings.
For this reason you should not share the JSON file with other users as it contains graphical assets that might have been granted to you under a license that would not permit redistribution.
Treat this JSON file no differently to an avatar file.
H-View
H-View is one of my personal OSC Query applications that I use for debugging.
The source code is available at https://github.com/hai-vr/h-view.
The application can be downloaded through the Releases tab in GitHub.
Once launched, it will:
- Open a window on your desktop.
- Open an OSC Query service,
- Open an OSC service,
- Communicate with VRChat using OSC and OSC Query,
- Read any file on-demand located in
AppData/LocalLow/VRChat/vrchat/OSC/that start withExternalExpressionsMenu_, - Read the files in
AppData/Roaming/H-View/, creating the directory if it doesn't exist.
If SteamVR is running, it will also create a dashboard overlay (accessible by pressing the system menu).
Costumes
The Costumes tab will search for .png files starting with avtr_ in the %APPDATA%/H-View/Costumes/ folder. The filename is the avatar ID.
OSC Address tabs
The following tabs are directly sourced from the OSC addresses received from VRChat's OSC Query service:
- The Avatar tab shows all OSC addresses starting with
/avatar/parameters/and the/avatar/changeaddress, except addresses starting with/avatar/parameters/FT/. - The Face Tracking tab shows all OSC addresses starting with
/avatar/parameters/FT/. - The Input tab shows all OSC addresses starting with
/input/and/chatbox/. - The Tracking tab shows all OSC addresses starting with
/tracking/.
Red text
When a line of text is red, it means the value has only ever changed to a different value less than 2 times. You can find out stale parameters using this.
Clipboard
You can right-click an address to copy the OSC address, the parameter name, or the parameter value.
Columns
- The
=column contains the wordlocalif the data contained in the External Expressions Menu JSON file indicates that this parameter is not synced. - The
+containsrif the address is read-only,wif the address is write-only, andrwwhen the address can be both read and written. - The
Typecolumn containsint,float,bool,string, or a sequence of letters representing the multiple value types of that OSC address, whereiis an integer,fis a float,Tis a boolean, andsis a string.
On writable addresses, the rightmost column lets you submit a value for that address.
- On
floatvalues, you have a slider between -1 and 1, and buttons0and1to set those values. - On
boolvalues, you have a button to toggle, and a button that inverts the value when it is held down. - On
intvalues, you have:- a button to change the value between 0 and 255,
-and+buttons to decrement and increment,0and1buttons to set those values,- and a
!button to flip the value.
- The chatbox address has a dedicated control.