โผ๏ธAuto Hand V4 What's-New
Last updated
Last updated
Hand logic is now split into additional scripts. None of these scripts need to be manually added. All these scripts and their recommended values will be automatically applied to each hand component.
Hand Follow
now manages the hand movement instead of Hand.cs. Includes public values and functions for previous movement settings, including exposing additional movement settings that were previously internal
Hand Follow
now includes options for dynamic hand mass. This will increase the hand mass based on its distance from the target position/rotation. This allows the hands to more realistically touch things without knocking them around.
Hand Follow
Some of the default settings have been changed for hand-hand movement. Hands should now feel more โsnappyโ and less โwobblyโ when dealing with rotation/weight. Hands feel less โcaveman-likeโ when touching dynamic objects, no longer as forceful until you push against the objects. Important for good feeling hand tracking.
Hand Follow
now manages two-handed grabbing forces better by limiting the range of the move target to be based on each other hands target positions. Things like a steering wheel and pulling objects apart in opposite directions should feel more realistic
Hand Grabbable Highlighter
now manages the internal highlight functions. Hand.cs still manages the highlight settings except internal OnHighlight and OnStopHighlight event delegates will need to be changed to hand.highlighter.OnHighlight += MyEventFunc
Hand Grabbable Highlighter
will now by default favor highlighting objects near the fingers/fingertips instead of the palm face. Use the highlighter palmForwardRightDirection value to choose which angle will have more priority when grabbing
Hand Animator
now manages the hand posing instead of Hand.cs. Includes the public values and settings for hand-posing and hand sway. Hand.cs still includes auto posting function
Each finger now requires a setting for which finger type it is (index, middle, ring, pinky, or thumb), and manually connected references for each finger joint transforms. This allows for more dynamic control over the finger data/posing and helps prevent data corruption when changing the handโs hierarchy
Existing poses will need to be updated through the update window.
When entering a new scene, if any deprecated pose data is detected, a window will open and prompt you for the left/right copies of all the hands used for poses in this scene. Include your hands, press โFind Prefab Posesโ if youโre using these included hands in your prefabs. Finally press โUpdate Posesโ
The hand will now take two new poses for Pinch Open, Pinch Closed. The hand will also take a new value called โPinch Pointโ value. The โPinch pointโ is similar to the โPalmโ value in that it represents the center point of the pinch grab. It should be centered between the index/middle/thumb when the hand is in a closed pinch pose state.
The previous hand-tracking solution took the data from the hand-tracking pose and used it to interpolate each finger from open to closed. This solution worked to support hand tracking (in a minimalistic sense) without compromising other features, but it was a stiff and limited solution.
The new solution allows for complete freedom of movement for each finger, it allows for multiple options for grab/release triggering: including finger-tip touch grabbing and making a grasping motion while targeting a grabbable, this combination makes for a much more natural feeling hand tracking experience.
Added a simple demo for desktop users at [Auto Hand/Examples/Scenes/Desktop], which controls the left/right hand by holding the left/right mouse. Pressing space will toggle grab/release for hand when holding left/right mouse button. WASD to move and the mouse will turn head when not controlling hands. Not meant to be a game-ready solution just useful for testing simple features without going in and out of VR
Added OpenXR Hand Tracking
component
Added OpenXR Hand Tracking Grabber
component
Allow for grabbing to be triggered through grasping gesture settings
Allows for finger-tip touching grabbing settings
Supports held object finger movement
Supports held gesture with finger movement
Added Hand Gesture Event
component
Added Hand Finger Gesture Event
component, which takes two fingers and triggers an event for when they start/stop touching
Added Finger Trigger Area Events
component + simple example in the demo
Added No Hand Friction
toggle to hand, enabled by default, will automatically apply a no friction material to the hands colliders
Added Finger Weight options to Grabbable Pose Animation
Added direction smoothing settings for Teleporter, UI Pointer, and Distance Grabber
Fixed bug with full-body hands sometimes separating from the grab target
The Auto Hand Player uses a new method to move the body to match the head as closely as possible within tracking movement; the previous method was unstable and sometimes jittery. The new method also properly โliftsโ the feet to prevent unwanted activation
Fixed bug where the grounding system would return false negative when walking on a static mesh collider like a staircase and standing against a step that is just too high to step up
Added assembly definitions to root scripts of each input package (Autohand, Autohand.OpenXR, Autohand.XR, Autohand.SteamVR, Autohand.OculusIntergation)
Head collision will now push the whole body back along the x-z axis instead of creating a sort of โmovement debtโ that was unrealistic and disorienting
Fixed possible phantom โflickerโ that some people report when moving the player with thumbstick
Increased stability and snappiness of two-handed grabbing
Hand now properly transitions pose when releasing
Highlights when targeting multiple objects will favor grabbing objects more in the direction of fingertips than the direction of the palm including a setting on the HandGrabbableHighlighter for personal adjustments
Fixed bug with hand velocity not rotating properly when using smooth/snap rotation and moving your hands around
Added virtual tag to more values/functions in the Finger/Player/Grabbable components
Added fix for player head-body sync colliding with held colliders in some conditions
Added fix with Player SetPosition function not working as expected under some conditions
Added many new null checks across the project to prevent errors spamming when missing references or deleting certain objects
Found source of build bug โHideFlags.DontSave but is included in the build:โ and fixed
You can now toggle โGrab Lockโ by enabling/disabling the script
Fixed missing prefab in hand tracking scene
Added an automatic Rebinder() call in AutoHandVRIK to fix a bug for full body ik that breaks because of animator
HandPoseData can now be added to components using the HandPoseDataContainer interface. This will include all the default settings for adding a new hand editor copy and saving right/left pose data
HandPoseData now uses FingerPoseData[] to manage the data of each fingerโs pose instead of an array that relies on the hands hierarchy order. This allows for individual finger weights that can be used for masking or blending poses. Important for future features.
Example for getting finger pose data in hand pose data:
poseData.fingerPoseData[(int)Finger.FingerEnum.Index].SetFingerPose(finger);
Grabbables set to grab type pinch will be pinch grabbed from any angle if the hands are setup for pinching