GetData.cs 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using UnityEngine;
  6. namespace EZXR.Glass.Inputs
  7. {
  8. public class GetData : MonoBehaviour
  9. {
  10. [Serializable]
  11. public class Root
  12. {
  13. /// <summary>
  14. /// 大拇指,相对于相机的localPosition和屏幕坐标,数组从0到3依次是指尖到手指根部关节点
  15. /// </summary>
  16. public Vector3[] f03;
  17. public Vector2[] f02;
  18. /// <summary>
  19. /// 食指
  20. /// </summary>
  21. public Vector3[] f13;
  22. public Vector2[] f12;
  23. /// <summary>
  24. /// 中指
  25. /// </summary>
  26. public Vector3[] f23;
  27. public Vector2[] f22;
  28. /// <summary>
  29. /// 无名指
  30. /// </summary>
  31. public Vector3[] f33;
  32. public Vector2[] f32;
  33. /// <summary>
  34. /// 小拇指
  35. /// </summary>
  36. public Vector3[] f43;
  37. public Vector2[] f42;
  38. /// <summary>
  39. /// 手腕
  40. /// </summary>
  41. public Vector3[] f53;
  42. public Vector2[] f52;
  43. public Root()
  44. {
  45. f03 = new Vector3[4];
  46. f02 = new Vector2[4];
  47. f13 = new Vector3[4];
  48. f12 = new Vector2[4];
  49. f23 = new Vector3[4];
  50. f22 = new Vector2[4];
  51. f33 = new Vector3[4];
  52. f32 = new Vector2[4];
  53. f43 = new Vector3[4];
  54. f42 = new Vector2[4];
  55. f53 = new Vector3[1];
  56. f52 = new Vector2[1];
  57. }
  58. }
  59. public Camera mainCamera;
  60. /// <summary>
  61. /// 大拇指
  62. /// </summary>
  63. public Transform[] joints_DaddyFinger;
  64. /// <summary>
  65. /// 食指
  66. /// </summary>
  67. public Transform[] joints_MommyFinger;
  68. /// <summary>
  69. /// 中指
  70. /// </summary>
  71. public Transform[] joints_BrotherFinger;
  72. /// <summary>
  73. /// 无名指
  74. /// </summary>
  75. public Transform[] joints_SisterFinger;
  76. /// <summary>
  77. /// 小拇指
  78. /// </summary>
  79. public Transform[] joints_BabbyFinger;
  80. /// <summary>
  81. /// 手腕
  82. /// </summary>
  83. public Transform[] joints_Wrist;
  84. // Start is called before the first frame update
  85. void Start()
  86. {
  87. Root jointsData = new Root();
  88. jointsData.f03[0] = transform.InverseTransformPoint(joints_DaddyFinger[0].position);
  89. jointsData.f03[1] = transform.InverseTransformPoint(joints_DaddyFinger[1].position);
  90. jointsData.f03[2] = transform.InverseTransformPoint(joints_DaddyFinger[2].position);
  91. jointsData.f03[3] = transform.InverseTransformPoint(joints_DaddyFinger[3].position);
  92. jointsData.f02[0] = mainCamera.WorldToScreenPoint(joints_DaddyFinger[0].position);
  93. jointsData.f02[0] = new Vector2(jointsData.f02[0].x, Screen.height - jointsData.f02[0].y);
  94. jointsData.f02[1] = mainCamera.WorldToScreenPoint(joints_DaddyFinger[1].position);
  95. jointsData.f02[1] = new Vector2(jointsData.f02[1].x, Screen.height - jointsData.f02[1].y);
  96. jointsData.f02[2] = mainCamera.WorldToScreenPoint(joints_DaddyFinger[2].position);
  97. jointsData.f02[2] = new Vector2(jointsData.f02[2].x, Screen.height - jointsData.f02[2].y);
  98. jointsData.f02[3] = mainCamera.WorldToScreenPoint(joints_DaddyFinger[3].position);
  99. jointsData.f02[3] = new Vector2(jointsData.f02[3].x, Screen.height - jointsData.f02[3].y);
  100. jointsData.f13[0] = transform.InverseTransformPoint(joints_MommyFinger[0].position);
  101. jointsData.f13[1] = transform.InverseTransformPoint(joints_MommyFinger[1].position);
  102. jointsData.f13[2] = transform.InverseTransformPoint(joints_MommyFinger[2].position);
  103. jointsData.f13[3] = transform.InverseTransformPoint(joints_MommyFinger[3].position);
  104. jointsData.f12[0] = mainCamera.WorldToScreenPoint(joints_MommyFinger[0].position);
  105. jointsData.f12[0] = new Vector2(jointsData.f12[0].x, Screen.height - jointsData.f12[0].y);
  106. jointsData.f12[1] = mainCamera.WorldToScreenPoint(joints_MommyFinger[1].position);
  107. jointsData.f12[1] = new Vector2(jointsData.f12[1].x, Screen.height - jointsData.f12[1].y);
  108. jointsData.f12[2] = mainCamera.WorldToScreenPoint(joints_MommyFinger[2].position);
  109. jointsData.f12[2] = new Vector2(jointsData.f12[2].x, Screen.height - jointsData.f12[2].y);
  110. jointsData.f12[3] = mainCamera.WorldToScreenPoint(joints_MommyFinger[3].position);
  111. jointsData.f12[3] = new Vector2(jointsData.f12[3].x, Screen.height - jointsData.f12[3].y);
  112. jointsData.f23[0] = transform.InverseTransformPoint(joints_BrotherFinger[0].position);
  113. jointsData.f23[1] = transform.InverseTransformPoint(joints_BrotherFinger[1].position);
  114. jointsData.f23[2] = transform.InverseTransformPoint(joints_BrotherFinger[2].position);
  115. jointsData.f23[3] = transform.InverseTransformPoint(joints_BrotherFinger[3].position);
  116. jointsData.f22[0] = mainCamera.WorldToScreenPoint(joints_BrotherFinger[0].position);
  117. jointsData.f22[0] = new Vector2(jointsData.f22[0].x, Screen.height - jointsData.f22[0].y);
  118. jointsData.f22[1] = mainCamera.WorldToScreenPoint(joints_BrotherFinger[1].position);
  119. jointsData.f22[1] = new Vector2(jointsData.f22[1].x, Screen.height - jointsData.f22[1].y);
  120. jointsData.f22[2] = mainCamera.WorldToScreenPoint(joints_BrotherFinger[2].position);
  121. jointsData.f22[2] = new Vector2(jointsData.f22[2].x, Screen.height - jointsData.f22[2].y);
  122. jointsData.f22[3] = mainCamera.WorldToScreenPoint(joints_BrotherFinger[3].position);
  123. jointsData.f22[3] = new Vector2(jointsData.f22[3].x, Screen.height - jointsData.f22[3].y);
  124. jointsData.f33[0] = transform.InverseTransformPoint(joints_SisterFinger[0].position);
  125. jointsData.f33[1] = transform.InverseTransformPoint(joints_SisterFinger[1].position);
  126. jointsData.f33[2] = transform.InverseTransformPoint(joints_SisterFinger[2].position);
  127. jointsData.f33[3] = transform.InverseTransformPoint(joints_SisterFinger[3].position);
  128. jointsData.f32[0] = mainCamera.WorldToScreenPoint(joints_SisterFinger[0].position);
  129. jointsData.f32[0] = new Vector2(jointsData.f32[0].x, Screen.height - jointsData.f32[0].y);
  130. jointsData.f32[1] = mainCamera.WorldToScreenPoint(joints_SisterFinger[1].position);
  131. jointsData.f32[1] = new Vector2(jointsData.f32[1].x, Screen.height - jointsData.f32[1].y);
  132. jointsData.f32[2] = mainCamera.WorldToScreenPoint(joints_SisterFinger[2].position);
  133. jointsData.f32[2] = new Vector2(jointsData.f32[2].x, Screen.height - jointsData.f32[2].y);
  134. jointsData.f32[3] = mainCamera.WorldToScreenPoint(joints_SisterFinger[3].position);
  135. jointsData.f32[3] = new Vector2(jointsData.f32[3].x, Screen.height - jointsData.f32[3].y);
  136. jointsData.f43[0] = transform.InverseTransformPoint(joints_BabbyFinger[0].position);
  137. jointsData.f43[1] = transform.InverseTransformPoint(joints_BabbyFinger[1].position);
  138. jointsData.f43[2] = transform.InverseTransformPoint(joints_BabbyFinger[2].position);
  139. jointsData.f43[3] = transform.InverseTransformPoint(joints_BabbyFinger[3].position);
  140. jointsData.f42[0] = mainCamera.WorldToScreenPoint(joints_BabbyFinger[0].position);
  141. jointsData.f42[0] = new Vector2(jointsData.f42[0].x, Screen.height - jointsData.f42[0].y);
  142. jointsData.f42[1] = mainCamera.WorldToScreenPoint(joints_BabbyFinger[1].position);
  143. jointsData.f42[1] = new Vector2(jointsData.f42[1].x, Screen.height - jointsData.f42[1].y);
  144. jointsData.f42[2] = mainCamera.WorldToScreenPoint(joints_BabbyFinger[2].position);
  145. jointsData.f42[2] = new Vector2(jointsData.f42[2].x, Screen.height - jointsData.f42[2].y);
  146. jointsData.f42[3] = mainCamera.WorldToScreenPoint(joints_BabbyFinger[3].position);
  147. jointsData.f42[3] = new Vector2(jointsData.f42[3].x, Screen.height - jointsData.f42[3].y);
  148. jointsData.f53[0] = transform.InverseTransformPoint(joints_Wrist[0].position);
  149. jointsData.f52[0] = mainCamera.WorldToScreenPoint(joints_Wrist[0].position);
  150. jointsData.f52[0] = new Vector2(jointsData.f52[0].x, Screen.height - jointsData.f52[0].y);
  151. File.WriteAllText(Application.dataPath + "/Capture" + 0 + ".json", JsonUtility.ToJson(jointsData));
  152. }
  153. }
  154. }