diff --git a/README.md b/README.md index 5476bf8..41e5dd2 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ into full-body trackers for **SlimeVR-Server**. Plug a controller into your PC, strap it on, and it shows up in SlimeVR as a regular tracker — no extra hardware, no firmware flashing. +It also incorporates **Haptics** via the device's rumble, for information on how to set this up on your Avatar, go [HERE](#Haptics) + The bridge reads the controller's built-in IMU at its native sample rate, runs a sensor fusion filter (VQF or Madgwick) in Rust, and forwards the resulting quaternion to SlimeVR-Server over UDP using the official protocol. @@ -24,7 +26,6 @@ quaternion to SlimeVR-Server over UDP using the official protocol. > hardware-validated across the supported controllers. If you hit a snag, > please file an issue with reproduction steps and the logs from the **Logs** > tab. - ## Features - **9 controller families** supported across USB · BT Classic · BLE · TCP. @@ -116,6 +117,91 @@ page: Or build from source — see [Building from source](#building-from-source) below. +## HAPTICS +### VRChat Avatar Setup +You **MUST** have [VRCFury](https://vrcfury.com/download) on your Unity Project. + +You **MUST NOT** Upload the avatar as a *test*, as it prevents the inicialization of OSC protocols, please create a duplicate avatar and test it from there. + +1. Import the [IMUHaptics.unitypackage](https://github.com/matiaspalmac/everything-imu/releases/download/latest/IMUHaptics.unitypackage) into your Unity Project + +2. Drag and drop the prefab found under `Assets/MooshPaw/IMU Haptics` into your Avatar +image + +3. Move the GameObjects to match your avatar proportions + +image + +image + +4. (Optional) Disable Haptic points you won't use, this frees your PC from loading unnecesary parameters, even though the performance impact is minimal + +image + +5. Upload avatar and test + +### How to create more points of tracking? +Duplicate any of the existing tracking points and position it where you want them. Then, change the Avatar Parameter to `Haptics/{YourDesiredName}` and ***REPLACE*** the parent bone under **Armature Link** + +* You may also move the GameObject to the bone you want it parented to in the *Hierarchy* +* You should **avoid** putting the bone on the **Contact Receiver** Component as the [*Gizmo*](#guizmo) won't Sync + +***To create one from scratch***, take in mind the following: +You **MUST** Change the Parameter address. It's recommended to leave the `Haptic/` nomenclature for organization +You **Should** leave *Local Only* enabled, as there's no need to Sync this parameter since your Haptics run locally. This allows the avatar to get a better rating and avoid's VRChat's maximum contacts + +image + +**Armature Link** automatically parents your haptic point to a Humanoid bone. You must change this bone to the one you want parented to, or move the GameObject within a bone from the *Hierarchy*. + +**Avoid** putting the bone on the **Contact Receiver** Component as the [*Gizmo*](#guizmo) won't Sync + +image + +image + +### GUIZMO + +image + +The guizmo represents the center of the Contact Receiver, as well as where your IRL Tracker should be. +If your tracker is going to be at your stomach, your Haptic point should also be there + +image + +image + +### In-App setup + +image + +1. Go to the Haptics section +2. Enable the *Bridge* +3. Ensure the OSC Port is `9001` (VRChat's default output) +4. Test your devices +5. Add the mappings you need +6. Change the Parameter Name to `/avatar/parameters/Haptics/{YourHapticPoint}. It **MUST BE THE SAME NAME** as the one from the VRChat contact receiver component. If you misspell it, you won't get any haptic +7. Select the device that will rumble when your haptic point is triggered +8. Adjust settings accordingly + +***Proximity (variable)*** + +image + +Variable float strength from 0 to 1, will rumble more when the VRC contact receiver is touched at the center, and less when is touched at the edges. + +***Pulse (fixed)*** + +image + +Activates the Rumble **Once** for a certain amount of time (*Pulse (ms)*) before turning it off. Useful to pair with a VRC contact receiver set to **On Enter** + +***Select available OSC addresses*** + +image + +To avoid typing the address manually, you may add them via the **Discovered OSC Addresses** section. + ## Quickstart 1. **Install SlimeVR-Server** and leave it running. The default UDP port is `6969`.