【发布时间】:2019-11-12 18:13:55
【问题描述】:
我正在构建一个可在 HoloLens 和移动设备 (iOS/Android) 上运行的应用程序。我希望能够在所有设备上使用相同的操作处理程序来实现目标:
- 使用 ARFoundation 进行移动设备跟踪和输入
- 在 MRTK 中使用带有 ManipulationHandler 的触摸输入,否则按正常方式使用触摸输入 (UI)
- 在编辑器中模拟触摸输入(使用触摸屏或鼠标),但保留用于相机定位的键盘/鼠标控制器。
到目前为止,我已经尝试/找到了:
- MixedRealityPlayspace 始终是相机的父项,因此我将 ARSessionOrigin 添加到该组件,并将所有默认 AR 组件添加到相机(ARCameraManager、TrackedPoseDriver、ARRayCastManager 等)
- 自定义 MRTK 指针配置文件以仅计数 MousePointer 和 TouchPointer。
- 删除多余的输入数据提供者。
- 在 InputSimulationService 中禁用手部模拟
一般来说,将 ARSessionOrigin 添加到 MixedRealityPlayspace 的方法按预期工作,并且 ARFoundation 的设置很简单。但是,我很难理解如何让 ManipulationHandler 响应触摸输入。
我遇到了以下问题:
- 用手指在触摸屏上拖动可移动相机(编辑器)。禁用 InputSimulationService 可以解决此问题,但是我无法移动相机...
- 即使禁用了相机,单击和拖动也不会影响 ManipulationHandler。
- 调试光线绘制在正确的方向,但默认的触摸指针光线绘制在奇怪的位置。 I've attached a .gif explaining this. 这是在编辑器中使用触摸输入。在设备 (Android) 上运行时观察到相同的效果。
这也适用于 Unity UI(世界空间画布),点击 UI 元素不会触发(在设备上或在编辑器中),这表明这是一个指针问题而不是处理程序问题。
我希望得到一些关于如何在编辑器和设备上正确配置触摸输入和鼠标输入的建议,目标是使用投影矩阵从屏幕点投射光线以创建指针,并使用双指触摸方式与使用两条手线相同。
【问题讨论】:
-
这是可能的,刚刚看到有人发布了一条关于它的推文。询问有关他们如何做到的更多详细信息...twitter.com/takabrz1/status/1150550825892114433
-
@JuliaSchwarz 这就是我要去的地方。它按预期工作,除了图形光线投射器与世界空间画布(CanvasUtility)冲突,我似乎无法同时工作:gist.github.com/camnewnham/d0c4d3a8361ace1d3b9c8cdb16820e6c
-
嗨@newske 这太棒了!我今天看了一点,得出了类似的结果。我创建了一个问题来跟踪它:github.com/microsoft/MixedRealityToolkit-Unity/issues/5390
-
嗨@newske,我今天能够让unity ui 在Android 上运行,你发布的要点对我来说不太适用,但是这个(做了一些其他更改):@987654325 @
标签: mrtk