VirtualHandController.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace EZXR.Glass.Inputs
  5. {
  6. public class VirtualHandController : MonoBehaviour
  7. {
  8. #region 单例
  9. private static VirtualHandController instance;
  10. public static VirtualHandController Instance
  11. {
  12. get
  13. {
  14. return instance;
  15. }
  16. }
  17. #endregion
  18. /// <summary>
  19. /// 所有手指节点数据,手腕是0,大拇指根节点是1,大拇指之间是4,食指指尖是8,以此类推
  20. /// </summary>
  21. Vector3[] keyPoints_Right = new Vector3[21];
  22. /// <summary>
  23. /// 所有手指的模型骨骼点,用于控制虚拟手的骨骼运动,从大拇指到小拇指,从根部到指尖
  24. /// </summary>
  25. public Transform[] fingers;
  26. public Transform palm;
  27. private void Awake()
  28. {
  29. instance = this;
  30. }
  31. // Start is called before the first frame update
  32. void Start()
  33. {
  34. }
  35. // Update is called once per frame
  36. void Update()
  37. {
  38. //右手
  39. //if (NativeSwapManager.iKData.hand2_valid)
  40. //{
  41. // //设置右手关节点的位置
  42. // if (NativeSwapManager.iKData.positions2 != null)
  43. // {
  44. // for (int i = 0; i < NativeSwapManager.iKData.positions2.Length; i++)
  45. // {
  46. // keyPoints_Right[i] = new Vector3(NativeSwapManager.iKData.positions2[i].x, NativeSwapManager.iKData.positions2[i].y, NativeSwapManager.iKData.positions2[i].z) ;
  47. // }
  48. // }
  49. // //计算食指0关节(根部关节)的旋转角
  50. // fingers[3].localEulerAngles = new Vector3(0, Vector3.Angle(keyPoints_Right[5] - keyPoints_Right[0], keyPoints_Right[6] - keyPoints_Right[5]), 0);
  51. //}
  52. }
  53. }
  54. }