我正在尝试查找配置,或确定我需要对 MRTK v2.1 进行哪些添加,以便能够在“编辑器”工作中测试 HL1,就像在之前的工作流程中所做的那样。简而言之,它是我们在 MRTK v2 之前使用 Gaze 和鼠标的能力。
我还没有找到一种方法来映射配置文件中的鼠标左键,使其行为与可见的手一样。在手可见的情况下,按下鼠标左键可以进行操作。我们也只需要凝视。注意:将“手部模拟”更改为手势不会产生正确的行为,它只会使凝视光标保持不变而没有交互。
我在很多地方都问过这个问题,而且经常被误解,所以这里有一些背景知识。我们将继续向需要严格质量保证的客户提供应用程序。必须对它们进行测试,就像在使用新的 MRTK 时一样。让我们的 QA 团队在 HL1 项目中使用关节手是不合理的,因为它会引入人为错误,这对错误测试会适得其反。
需求是: 1. 让光标在编辑器中保持不变。(在最新版本中,它在通过空格键使用双手后消失。)我们认为这应该是一个切换。是的,我们知道您可以按“1”来模拟选择,但如上所述,这对于正确的 QA 是不可接受的。2. 用鼠标左键,不用手,触发“选择”和“捏合”。我已经编写了一个服务扩展来处理“选择”,但是添加夹点,因为它与手关节相关联,已经证明是一个挑战。
到目前为止提出的解决方案:将“手部模拟”模式更改为手势。不幸的是,手势消除了使用手进行 HL2 测试的能力,并且不提供鼠标左键的“选择”或“捏合”行为。所以它要么不能正常工作,要么不是正确的解决方案。
我们看不到为什么不能在编辑器中同时测试 HL1 和 HL2 的原因。当手不使用时,我们只是错过了使用鼠标左键。
这是我为鼠标左键创建的用于发送“选择”事件的服务扩展。这将在“Intractable”上触发 OnClick() 事件。它还缺少用鼠标左键移动或操纵“操纵处理程序”的“捏”能力。
[MixedRealityDataProvider(
typeof(IMixedRealityInputSystem),
(SupportedPlatforms)(-1), // All platforms supported by Unity
"Unity Mouse Device Manager")]
public class TharynMouseService : BaseInputDeviceManager, ITharynMouseService
{
private TharynMouseServiceProfile tharynMouseServiceProfile;
public TharynMouseService(
IMixedRealityServiceRegistrar registrar,
IMixedRealityInputSystem inputSystem,
string name,
uint priority,
BaseMixedRealityProfile profile) : base(registrar, inputSystem, name, priority, profile)
{
tharynMouseServiceProfile = (TharynMouseServiceProfile)profile;
}
private IMixedRealityInputSource inputSource;
private IMixedRealityInputSystem inputSystem;
public override void Initialize()
{
// Do service initialization here.
inputSystem = Service as IMixedRealityInputSystem;
Debug.Log("inputSystem: " + inputSystem);
inputSource = inputSystem.RequestNewGenericInputSource("Tharyn Mouse Service");
Debug.Log("inputSource: " + inputSource);
inputSystem.RaiseSourceDetected(inputSource);
}
public override void Update()
{
// Do service updates here.
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse0))
{
inputSystem.RaiseOnInputUp(inputSource, Handedness.None, tharynMouseServiceProfile.TapAction);
Debug.Log("Down");
Debug.Log("inputSystem: " + inputSystem);
Debug.Log("inputSource: " + inputSource);
Debug.Log("TapAction: " + tharynMouseServiceProfile.TapAction);
}
}
}
需求:
- 在释放空格键以返回注视光标时触发与“1”键相同的事件。
- 扩展上述服务以包含“Pinch”事件/动作,以便可以像使用 Hands 一样使用 Gaze 和 Mouse 操作对象。
提前干杯和感谢!
塔林