如何配置MRTK以在编辑器和移动设备上与触摸输入配合使用?

时间:2019-07-02 06:39:49

标签: mrtk

我正在构建一个可以在HoloLens和移动设备(iOS / Android)上运行的应用程序。我希望能够在所有设备上使用具有相同目标的相同处理程序:

  1. 使用ARFoundation进行移动设备跟踪和输入
  2. 将MRTK与ManipulationHandler一起使用触摸输入,否则将触摸输入用作常规(UI)
  3. 在编辑器中模拟触摸输入(使用触摸屏或鼠标),但保留键盘/鼠标控制器以进行摄像头定位。

到目前为止,我已经尝试过/找到了:

  1. MixedRealityPlayspace始终是相机的父级,因此我向该组件添加了ARSessionOrigin,并将所有默认的AR组件(ARCameraManager,TrackedPoseDriver,ARRayCastManager等)添加到了
  2. 将MRTK指针配置文件自定义为仅包含MousePointer和TouchPointer。
  3. 删除多余的输入数据提供程序。
  4. 在InputSimulationService中禁用手部仿真

通常来说,将ARSessionOrigin添加到MixedRealityPlayspace的方法可以按预期工作,而ARFoundation的设置很简单。但是,我正在努力了解如何使ManipulationHandler响应触摸输入。

我遇到了以下问题:

  1. 用手指在触摸屏上拖动移动相机(编辑器)。禁用InputSimulationService可以解决此问题,但是我无法移动相机...
  2. 即使在禁用相机的情况下,单击和拖动也不会影响ManipulationHandler。
  3. 调试射线的绘制方向正确,但是默认接触点射线的绘制位置很奇怪。 I've attached a .gif explaining this.这是在编辑器中使用触摸输入。在设备(Android)上运行时,观察到相同的效果。

这也适用于Unity UI(世界空间画布),其中单击UI元素不会触发(在设备上或在编辑器中),这向我暗示这是指针问题而不是处理程序问题。

对于在编辑器和设备上如何正确配置触摸输入和鼠标输入的建议,我将不胜感激,其目标是使用投影矩阵创建指针并使用两指从屏幕点进行射线广播就像使用两条手射线一样。

1 个答案:

答案 0 :(得分:0)

应该在MRTK中与手机的世界空间中的Unity UI进行交互,但是输入系统中几乎没有错误可以阻止它工作。在此跟踪问题:https://github.com/microsoft/MixedRealityToolkit-Unity/issues/5390

该修复程序尚未签入,但是您现在可以应用解决方法(在很大程度上感谢您自己所做的工作,newske!)。解决方法已发布在问题中。请参阅https://gist.github.com/julenka/ccb662c2cf2655627c95ffc708cf5a69。只需将MRTK中的每个文件替换为要点中的版本即可。