插件中Calibration Void是一项标准场景,位于SenseGlove/Calibration文件夹内。
它有两种变体:一种适用于非XR应用**(CalibrationVoid)** ,另一种适用于XR应用**(Calibration Void_XR)**。
它借助逻辑脚本 SG_CalibrationVoid来通过上述描述的 SGCalibrationSequence 启动和结束校准过程。
这一场景将"锁定"用户于一个专用界面中,界面上的指示会随着用户的视线移动而变化,并通过示例手势展示一系列动作以进行校准。如果用户的手部动作已足够充分,他们可通过做出"竖起大拇指"的示意来确认校准过程,之后便可(自动)进入下一场景。
发布的时候使用这个场景作为第一个场景,以保障手套在一开始就已经校准好了。
场景中有三个自动过度到下个场景的方法,可以让SG_CalibrationVoid脚本自动切换至预设场景。一旦检测到首个场景,CalibrationVoid便会从后台加载此后续场景,因此一旦校准完成,这一切换过程便可即刻实现。
1.changeSceneAfter
如果这个值小于0校准完后将不会进入任何场景。
2.goToSceneIndex
通过UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(int sceneBuildIndex)加载场景名称。
3.goToSceneName
通过UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(string sceneName)加载场景名称。
CalibrationVoid 脚本有一个CalibrationCompleted事件,该事件在算法完成后触发。你可以通过此事件来调用你自己的场景切换。
重置校准
在会话期间,您可能需要重新校准手部。例如,在切换用户或应用启动后戴上手套时。
在代码中:
重置校准的最简单方法是调用静态函数
SGCore.HandLayer.ResetCalibration(true); //Resets the right Hand profile
SGCore.HandLayer.ResetCalibration(false); //Resets the left hand profile
如果引用了任何SG_HandComponent 或SG_TrackedHand
SG_TrackedHand myHand;
SGCore.HandLayer.ResetCalibration(myHand.TracksRightHand());
Returning to the CalibrationVoid
If you have included the Calibration Void inside your simulation, you can return your used to said scene to automatically reset calibration, and re-run the calibration sequence with instructions
(这块电脑翻译的我不喜欢,贴原文)