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 VCC/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 VCC/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 addressed received from VRChat's OSC Query service:
- The Avatar tab shows all OSC addresses starting with
/avatar/parameters/
and the/avatar/change
address, 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 wordlocal
if the data contained in the External Expressions Menu JSON file indicates that this parameter is not synced. - The
+
containsr
if the address is read-only,w
if the address is write-only, andrw
when the address can be both read and written. - The
Type
column containsint
,float
,bool
,string
, or a sequence of letters representing the multiple value types of that OSC address, wherei
is an integer,f
is a float,T
is a boolean, ands
is a string.
On writable addresses, the rightmost column lets you submit a value for that address.
- On
float
values, you have a slider between -1 and 1, and buttons0
and1
to set those values. - On
bool
values, you have a button to toggle, and a button that inverts the value when it is held down. - On
int
values, you have:- a button to change the value between 0 and 255,
-
and+
buttons to decrement and increment,0
and1
buttons to set those values,- and a
!
button to flip the value.
- The chatbox address has a dedicated control.