Skip to content

Commit 52ef619

Browse files
author
lawwong
committed
Fix curl value in WaveHandTrackingSubmodule
Now when signed angle between finger & palm is -90 to 0: curl value is 0 0 to 180: curl value lerp from 0 to 1 -180 to -90: curl value is 1
1 parent 25935df commit 52ef619

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

Assets/HTC.UnityPlugin/VRModule/Submodules/WaveHandTrackingSubmodule.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -528,22 +528,25 @@ public void UpdateDeviceInput(IVRModuleDeviceStateRW state, bool isLeft)
528528

529529
var indexCurl = GetFingerCurl(state, HandJointName.IndexTip);
530530
var middleCurl = GetFingerCurl(state, HandJointName.MiddleTip);
531-
var ringCurl = GetFingerCurl(state, HandJointName.MiddleTip);
531+
var ringCurl = GetFingerCurl(state, HandJointName.RingTip);
532532
var pinkyCurl = GetFingerCurl(state, HandJointName.PinkyTip);
533+
var curlAvg = (indexCurl + middleCurl + ringCurl + pinkyCurl) * 0.25f;
534+
533535
state.SetAxisValue(VRModuleRawAxis.IndexCurl, indexCurl);
534536
state.SetAxisValue(VRModuleRawAxis.MiddleCurl, middleCurl);
535537
state.SetAxisValue(VRModuleRawAxis.RingCurl, ringCurl);
536538
state.SetAxisValue(VRModuleRawAxis.PinkyCurl, pinkyCurl);
537-
state.SetAxisValue(VRModuleRawAxis.CapSenseGrip, (indexCurl + middleCurl + ringCurl + pinkyCurl) * 0.25f);
538-
state.SetButtonPress(VRModuleRawButton.Grip, indexCurl > 0.75f && middleCurl > 0.75f && ringCurl > 0.75f && pinkyCurl > 0.75f);
539-
state.SetButtonTouch(VRModuleRawButton.Grip, indexCurl > 0.5f && middleCurl > 0.5f && ringCurl > 0.5f && pinkyCurl > 0.5f);
539+
state.SetAxisValue(VRModuleRawAxis.CapSenseGrip, curlAvg);
540+
state.SetButtonPress(VRModuleRawButton.Grip, curlAvg > 0.75f);
541+
state.SetButtonTouch(VRModuleRawButton.Grip, curlAvg > 0.50f);
540542
}
541543

542544
private float GetFingerCurl(IVRModuleDeviceStateRW state, HandJointName finger)
543545
{
544546
var palmDir = state.pose.forward;
545547
var fingerDir = state.handJoints[finger].pose.forward;
546-
var angle = Vector3.SignedAngle(palmDir, fingerDir, state.handJoints[finger].pose.right);
548+
var angle = Vector3.SignedAngle(palmDir, fingerDir, state.pose.right);
549+
if (angle < -90f) { angle += 360f; }
547550
return Mathf.InverseLerp(0f, 180f, angle);
548551
}
549552

0 commit comments

Comments
 (0)