SkillAgentSearch skills...

VRCPimaxEyeTracker

A VRChat plugin supporting VRCSDK3 avatar eye tracking using the 7invensun Droolon Pi1 eye tracker designed for Pimax headsets.

Install / Use

/learn @NGenesis/VRCPimaxEyeTracker
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

VRCPimaxEyeTracker

VRCPimaxEyeTracker is a VRChat plugin supporting VRCSDK3 avatar eye tracking using the 7invensun Droolon Pi1 eye tracker designed for Pimax headsets.

:warning: This documentation is a work in progress and may change over time.

Installation

:warning: USE THIS PLUGIN AT YOUR OWN RISK!

Modifying the VRChat client is a breach of VRChat's Terms of Service and can result in temporary or permanent account suspension. Any authors or contributers of this plugin will not be held responsible for suspended accounts, privacy breaches, etc.

:warning: Ensure that the aSeeVR Runtime software is installed (typically installed via PiTool) and running, and that your Droolon Pi1 eye tracker is correctly installed and calibrated using the aSeeVR calibration utility before using this plugin.

  1. Download and install MelonLoader (requires 0.3.0 or higher).
  2. Download VRCPimaxEyeTracker.
  3. Copy VRCPimaxEyeTracker.dll to the Mods folder located in your VRChat installation folder.

Supported Parameters

| Name | Eye | Type | Value / Range | Description | | --- | :---: | :---: | :---: | --- | | UseEyeTracker | - | Bool | False, True | When set to true by the user via the quick menu or an animator, hardware eye tracking will be enabled. | | LeftEyeBlink | Left | Bool | False, True | Returns true when the user's left eye is closed. | | RightEyeBlink | Right | Bool | False, True | Returns true when the user's right eye is closed. | | LeftEyeLid | Left | Float | 0.0 ~ 1.0 | Returns 0.0 when the user's left eye is fully closed and 1.0 when fully open. | | RightEyeLid | Right | Float | 0.0 ~ 1.0 | Returns 0.0 when the user's right eye is fully closed and 1.0 when fully open. | | LeftEyeX | Left | Float | -1.0 ~ 1.0 | Returns -1.0 when the user's left eye is looking to the left, 0.0 when looking forward and 1.0 when looking to the right. | | RightEyeX | Right | Float | -1.0 ~ 1.0 | Returns -1.0 when the user's right eye is looking to the left, 0.0 when looking forward and 1.0 when looking to the right. | | LeftEyeY | Left | Float | -1.0 ~ 1.0 | Returns -1.0 when the user's left eye is looking down, 0.0 when looking forward and 1.0 when looking up. | | RightEyeY | Right | Float | -1.0 ~ 1.0 | Returns -1.0 when the user's right eye is looking down, 0.0 when looking forward and 1.0 when looking up. | | EyesX | Left / Right | Float | -1.0 ~ 1.0 | Returns -1.0 when the user's left or right eye is looking to the left, 0.0 when looking forward and 1.0 when looking to the right. | | EyesY | Left / Right | Float | -1.0 ~ 1.0 | Returns -1.0 when the user's left or right eye is looking down, 0.0 when looking forward and 1.0 when looking up. |

Avatar Creation

Blend Shapes

| Name | Preview | | --- | --- | | Eyes Blink | Eyes Blink | | Right Eye Blink | Right Eye Blink | | Left Eye Blink | Left Eye Blink | | Eyes Look Forward | Eyes Look Forward | | Right Eye Look Right Up | Right Eye Look Right Up | | Right Eye Look Up | Right Eye Look Up | | Right Eye Look Left Up | Right Eye Look Left Up | | Right Eye Look Right | Right Eye Look Right | | Right Eye Look Left | Right Eye Look Left | | Right Eye Look Right Down | Right Eye Look Right Down | | Right Eye Look Down | Right Eye Look Down | | Right Eye Look Left Down | Right Eye Look Left Down | | Left Eye Look Right Up | Left Eye Look Right Up | | Left Eye Look Up | Left Eye Look Up | | Left Eye Look Left Up | Left Eye Look Left Up | | Left Eye Look Right | Left Eye Look Right | | Left Eye Look Left | Left Eye Look Left | | Left Eye Look Right Down | Left Eye Look Right Down | | Left Eye Look Down | Left Eye Look Down | | Left Eye Look Left Down | Left Eye Look Left Down |

Expression Parameters

The following parameters will be used in this guide, which will support toggling between hardware and simulated eye tracking, independent eye blinking, independent horizontal left/right eye movement and combined vertical left/right movement for optimization.

Please refer to Support Parameters for a complete list of available parameters.

| Name | Type | Default | Saved | | --- | --- | --- | --- | | UseEyeTracker | Bool | True | True | | LeftEyeBlink | Bool | False | False | | RightEyeBlink | Bool | False | False | | LeftEyeX | Float | 0 | False | | RightEyeX | Float | 0 | False | | EyesY | Float | 0 | False |

Expression Menu

Add a VRC Expression Menu with a toggle button to start / stop the eye tracker and switch between hardware or default simulated eye tracking.

| Name | Type | Parameter | | --- | --- | --- | | Eye Tracker | Toggle | UseEyeTracker |

Simulated Eye Tracking

Simulated eye tracking should be set up as normal in the VRC Avatar Descriptor. The Blink blend shape should be set to Eyes Blink and eye bones should be assigned (indicated as Eye_L and Eye_R in this guide).

Avatar Constraints

These constraints will be used to reset the eye bone transforms while hardware eye tracking is active.

  • Create a dummy object for each eye bone (e.g. Eye_L_EyeTrackerDisabled and Eye_R_EyeTrackerDisabled) that has the same transform as the original respective eye bone (e.g. Eye_L and Eye_R) under the Head bone.
  • On the left eye bone (e.g. Eye_L):
    • Add a Rotation Constraint component to each original bone
      • Uncheck Is Active
      • Set Weight to 1
      • Add the dummy object (e.g. Eye_L_EyeTrackerDisabled) to Source with a weight of 1
  • On the right eye bone (e.g. Eye_R):
    • Add a Rotation Constraint component to each original bone
      • Uncheck Is Active
      • Set Weight to 1
      • Add the dummy object (e.g. Eye_R_EyeTrackerDisabled) to Source with a weight of 1

Avatar Masks

Create avatar masks called Left Eye and Right Eye using each eye's respective eye bones (e.g. Eye_L and Eye_R) that will be assigned to the layers below.

Animator Parameters

| Name | Type | Default | | --- | --- | --- | | UseEyeTracker | Bool | False | | LeftEyeBlink | Bool | False | | RightEyeBlink | Bool | False | | LeftEyeX | Float | 0.0 | | RightEyeX | Float | 0.0 | | EyesY | Float | 0.0 |

Layers

All layers should be added to the FX animation controller.

Use Eye Tracker

Animator

Layer Settings

| Property | Value | | --- | --- | | Weight | 1 | | Mask | None | | Blending | Override |

States

  • Eye Tracker Disabled

    • Set Motion to Disable Eye Tracker
    • Add Behaviours:
      • VRCAnimatorTrackingControl - Set Eyes & Eyelids to Tracking
      • VRCAnimatorLayerControl - Set Playable to FX, set Layer to 2, and set Goal Weight to 0
      • VRCAnimatorLayerControl - Set Playable to FX, set Layer to 3, and set Goal Weight to 0
      • VRCAnimatorLayerControl - Set Playable to FX, set Layer to 4, and set Goal Weight to 0
      • VRCAnimatorLayerControl - Set Playable to FX, set Layer to 5, and set Goal Weight to 0
  • Eye Tracker Enabled

    • Set Motion to Enable Eye Tracker
    • Add Behaviours:
      • VRCAnimatorTrackingControl - Set Eyes & Eyelids to Animation
      • VRCAnimatorLayerControl - Set Playable to FX, and set Layer to 2, and set Goal Weight to 1
      • VRCAnimatorLayerControl - Set Playable to FX, and set Layer to 3, and set Goal Weight to 1
      • VRCAnimatorLayerControl - Set Playable to FX, and set Layer to 4, and set Goal Weight to 1
      • VRCAnimatorLayerControl - Set Playable to FX, and set Layer to 5, and set Goal Weight to 1

:warning: Note that layer numbers may need to be adjusted accordingly so that they correspond with the following layers:

Transitions

| Source State | Destination State | Conditions | | --- | --- | --- | | Any State | Eye Tracker Disabled | UseEyeTracker: false | | Any State | Eye Tracker Enabled | UseEyeTracker: true |

Left Eye Blink

Animator

Layer Settings

| Property | Value | | --- | --- | | Weight | 0 | | Mas

View on GitHub
GitHub Stars8
CategoryCustomer
Updated2y ago
Forks1

Languages

C#

Security Score

70/100

Audited on Jan 10, 2024

No findings