Skip to content

Haptics (VRChat)

everything-imu can turn VRChat OSC contact events into controller rumble, so a tracker you’re wearing buzzes when something touches that part of your avatar.

You need VRCFury in your Unity project.

Do not upload the avatar as a test - test uploads block OSC initialization. Duplicate the avatar and test from the copy.

  1. Import the IMUHaptics Unity package (published with the desktop app on the releases page).
  2. Drag the prefab from Assets/MooshPaw/IMU Haptics onto your avatar.
  3. Move the haptic GameObjects to match your avatar’s proportions - each point should sit where the real tracker sits on your body.
  4. (Optional) Disable haptic points you won’t use to keep the parameter count low.
  5. Upload the avatar and test.

Duplicate an existing haptic point, reposition it, and set its avatar parameter to Haptics/{YourName}. Re-link the parent bone under Armature Link (or move the GameObject onto the target bone in the hierarchy). Keep the parameter Local Only - haptics run locally, so there’s no need to sync, and it keeps your avatar’s rating down.

  1. Open the Haptics section.
  2. Enable the Bridge.
  3. Set the OSC port to 9001 (VRChat’s default output).
  4. Test your devices.
  5. Add the mappings you need.
  6. Set each mapping’s parameter to /avatar/parameters/Haptics/{YourPoint} - it must match the VRChat contact-receiver name exactly, or nothing fires.
  7. Pick the device that rumbles for that point and tune the settings.
  • Proximity (variable): rumble strength scales 0..1 - stronger toward the center of the contact, weaker at the edges.
  • Pulse (fixed): a single rumble burst for a set duration, then off. Pair it with a contact receiver set to On Enter.

Use the Discovered OSC Addresses list to add addresses without typing them.

You can register host:port endpoints as virtual rumble devices, so a remote setup (for example a phone on your LAN) receives haptics over the network.