-
VIVE Wave
-
SDK
-
发布您的应用程序
-
-
VIVE SRWorks
-
VIVE 眼球和面部追踪
-
VIVE 手势追踪
-
VIVE 3DSP Audio
-
VIVEPORT
-
VIVE Business 串流
-
面部追踪
-
如何在同一场景内切换不同的姿势追踪设置?
如果您创建了两个或以上的头部(head)来保存不同的姿势追踪设置,在未激活一个 head 而又停用另一个 head 的情况下进行切换时,head 会使用错误的姿势数据。
请按照以下步骤操作,以避免出现此问题。
以下列出了在同一场景中查找 head 的两种方法。两种方法利用了追踪原点(TrackingUniverseSeated 和TrackingUniverseStanding)在两个 head 之间切换。使用 ChooseDoF 的公共标记 HowToFindHead 选择要使用的查找方法。
public class ChooseDoF :MonoBehaviour { public ETrackingUniverseOrigin trackingSpace = ETrackingUniverseOrigin.TrackingUniverseSeated; public bool HowToFindHead = false; void OnEnable() { if (HowToFindHead) method1(); else method2(); } // For method 1, it makes use of the Transform function to find the head you would like to take. void method1() { #if UNITY_5_5_OR_NEWER // Global find GameObject body1 = transform.root.Find("Body1").gameObject; GameObject body2 = transform.root.Find("Body2").gameObject; #else // Children find GameObject body1 = transform.Find("Body1").gameObject; GameObject body2 = transform.FindChild("Body2").gameObject; #endif if (trackingSpace == ETrackingUniverseOrigin.TrackingUniverseSeated) body1.SetActive(true); else body2.SetActive(true); } // For method 2, it traverses the component list to find the head you would like to take. void method2() { // Children find var list = GetComponentsInChildren<WaveVR_Render>(true); foreach (WaveVR_Render render in list) { var obj = render.transform.parent.gameObject; if (trackingSpace == ETrackingUniverseOrigin.TrackingUniverseSeated) { if (obj.name == "Body1") { obj.SetActive(true); break; } } else { if (obj.name == "Body2") { obj.SetActive(true); break; } } } } }
-
运行之前,所有的 head 都是未激活状态。
-
在 GameObject下,执行下列操作之一:
- 在 Tracking Space 中,选择Tracking Universe Seated 以使 Body1 Head 处于激活状态。
- 在 Tracking Space 中,选择Tracking Universe Standing 以使 Body2 Head 处于激活状态。
- 在 Tracking Space 中,选择Tracking Universe Seated 以使 Body1 Head 处于激活状态。
此内容对您有帮助吗?
是
否
提交
谢谢!您的反馈可以帮助其他人了解最有用的信息。