|
|
|
|
@ -2,7 +2,7 @@ using NaughtyAttributes; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using TouchSocket.Core; |
|
|
|
|
using UnityEngine; |
|
|
|
|
//IMU UNITY统一位姿版 2025/12/15 4574验证 |
|
|
|
|
//IMU UNITY彻底修复版 2026/3/3更新 |
|
|
|
|
|
|
|
|
|
public class HandDriver : MonoBehaviour |
|
|
|
|
{ |
|
|
|
|
@ -448,26 +448,15 @@ public class HandDriver : MonoBehaviour |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Quaternion ConvertQuaternion(Quaternion quat, bool isRightHand) |
|
|
|
|
private Quaternion ConvertQuaternion(Quaternion q, bool isRightHand) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quaternion q = new Quaternion(quat.x, quat.y, quat.z, quat.w); |
|
|
|
|
|
|
|
|
|
Vector3 e = q.eulerAngles; |
|
|
|
|
// Euler(z, -x, y) |
|
|
|
|
Quaternion result = Quaternion.Euler(e.z, -e.x, e.y); |
|
|
|
|
// IMU→Unity 坐标轴映射,直接重映射四元数分量 |
|
|
|
|
// 左手: IMU(X,Y,Z) → Unity(-Y, Z, X) 右手: IMU(X,Y,Z) → Unity(-Y, -Z, -X) |
|
|
|
|
if (isRightHand) |
|
|
|
|
{ |
|
|
|
|
result = Quaternion.Euler(-e.z , -e.x , -e.y ); |
|
|
|
|
return new Quaternion(-q.z, -q.x, -q.y, q.w); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
/* |
|
|
|
|
Quaternion quat_r = new Quaternion(quat.x, quat.y, quat.z, quat.w); |
|
|
|
|
quat_r = Quaternion.Euler(quat_r.eulerAngles.z, -quat_r.eulerAngles.x, quat_r.eulerAngles.y); |
|
|
|
|
return quat_r; |
|
|
|
|
*/ |
|
|
|
|
return new Quaternion(q.z, -q.x, q.y, q.w); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void UpdateThumb() |
|
|
|
|
|