输入模拟服务 (Input Simulation Service)
输入模拟服务模拟在Unity编辑器中可能不可用的设备和平台的行为。示例包括:
- HoloLens or VR 设备头部跟踪
- HoloLens 手势
- HoloLens 2 全关节手势跟踪
- HoloLens 2 眼动跟踪
用户可以使用常规的键盘和鼠标组合在运行时控制模拟设备。这种方法无需先部署到设备即可在Unity编辑器中测试交互。
Warning
使用Unity的XR Holographic Emulation > Emulation Mode = "Simulate in Editor"时,此功能不起作用。Unity的in-editor simulation将使控制权脱离MRTK的输入模拟。为了使用MRTK输入模拟服务,您需要将XR Holographic Emulation设置为Emulation Mode = "None"
启用输入模拟服务
默认情况下,MRTK启用输入模拟。
输入模拟是一个可选的混合现实服务.可以将其作为data provider添加到Input System profile.
- Type 必须是 Microsoft.MixedReality.Toolkit.Input > InputSimulationService.
- 默认情况下, Platform(s) 包括所有的 Editor 平台,因为该服务使用键盘和鼠标输入。
Input simulation tools window
从 Mixed Reality Toolkit > Utilities > Input Simulation 菜单启用输入模拟工具窗口(Input simulation tools window)。通过此窗口可以访问play模式期间的输入模拟状态。
Viewport Buttons
可以在 Indicators Prefab 的input simulation profile 中指定用于控制基本手部布局的编辑器内按钮的预制体。这是一个可选实用程序,可以在input simulation tools window.中访问相同的功能。
Note
默认情况下,viewport 指示器是禁用的,因为它们有时有时会干扰Unity UI的交互。参见问题#6106。要启用,请将InputSimulationIndicators预制添加到 Indicators Prefab 。
手部图标(Hand icons)显示模拟手部的状态:
- 手没有追踪。单击以启用该手.
- 已追踪到手,但不受用户控制。单击以隐藏手.
- 用户可以跟踪和控制手部。单击以隐藏手.
- 单击以将手重置到默认位置.
Camera Control
头部运动可以由输入模拟服务模拟。
旋转相机
将鼠标悬停在编辑器视口窗口上.
如果摁按钮无效,则可能需要单击窗口以为其提供输入焦点
按住 Mouse Look Button (默认:鼠标右键).
在视口窗口中移动鼠标以旋转相机.
使用鼠标滚轮使相机沿观看方向滚动.
可以通过在input simulation profile中更改 Mouse Look Speed 设置来配置相机旋转速度。
或者,使用 Look Horizontal/Look Vertical 轴旋转相机(默认:游戏控制器的右摇杆)。
移动相机
使用 Move Horizontal / Move Vertical 轴移动相机(默认值:WASD键或游戏控制器的左摇杆)。
相机的位置和旋转角度也可以在工具窗口中明确设置。可以使用 Reset 按钮将相机重置为其默认设置。
手部模拟
输入模拟支持模拟的手部设备。这些虚拟手可以与支持常规手设部备的任何对象进行交互,例如按钮或可抓握的对象。
手部模拟模式
在 input simulation tools window 中,Hand Simulation Mode 设置在两个不同的输入模型之间切换。还可以在input simulation profile 中设置默认模式。
Articulated Hands: 模拟具有关节位置数据的全关节手部设备
模拟HoloLens 2交互模型。
在此模式下,可以模拟基于手的精确定位或使用触摸进行的交互。
Gestures: 模拟带有air tap和基本手势的简化手模型.
模拟 HoloLens 交互模型.
使用凝视中心控制聚焦。Air Tap 手势用于与按钮交互。
控制手部运动
按住 左/右手控制键(默认值:左手为Shift ,右手为Space)来控制任一只手。按下操作键时,手将出现在视口中。释放操纵键,在短暂的 Hand Hide Timeout 后,手便消失了。
可以在input simulation tools window中永久打开手,也可以通过按 左/右手开关键(默认值:T表示左,Y表示右)来永久打开手。再次按切换键即可隐藏手。
鼠标移动将使手在视图平面中移动。可以使用 mouse wheel(鼠标滚轮) 将手移到相机远处或附近。
要使用鼠标旋转手,请同时按住 左/右手控制键 (左Shift或空格) 和 手旋转按钮(默认值:cntrl按钮),然后移动鼠标以旋转手。可以通过在input simulation profile中更改 Mouse Hand Rotation Speed 设置手的旋转速度。
还可以在input simulation tools window中更改所有手的放置,包括将手重置为默认值。
其他配置设置
- Hand Depth Multiplier 控制鼠标滚轮深度移动的灵敏度。较大的数字将加快手部移动。
- Default Hand Distance 是手到相机的初始距离。单击 Reset 按钮的手也会将手放在此距离处。
- Hand Jitter Amount 为手添加随机运动。此功能可用于模拟设备上不准确的手部跟踪,并确保在嘈杂的输入下交互效果良好。
手势
也可以模拟诸如捏,抓,戳等手势。
使用 左/右手控制键(左Shift或空格)启用手控制。
或者,使用开关键(T或Y)来切换手的开/关。
进行操作时,按住鼠标按钮以执行手势。
使用 Left/Middle/Right Mouse Hand Gesture 设置,可以映射每个鼠标按钮以将手形转换为不同的手势。Default Hand Gesture(默认手势)是没有按下任何按钮时的手形。
Note
Pinch 手势是此时唯一执行"Select"操作的手势。
单手操作
- 按 左/右手控制键(左Shift或空格)
- 指向物体
- 按住鼠标按钮进行捏
- 用鼠标移动对象
- 释放鼠标按钮以停止交互
双手操作
若要同时用两只手操作对象,建议使用持续手模式。
- 按下开关键(T / Y)打开双手
- 一次操纵一只手:
- 按住 Space 来控制右手
- 将手移到要抓住物体的位置
- 按下鼠标按钮以激活 Pinch 手势。在持续模式下,当您释放鼠标按钮时,手势将保持活动状态。
- 用另一只手重复该过程,在另一个位置抓住相同的对象
- 现在两只手都抓住相同的对象,您可以移动两只手来执行双手操作。
GGV 交互
- 在Input Simulation Profile中将 Hand Simulation Mode 切换为 Gestures ,从而启用GGV模拟
- 旋转相机,将凝视光标指向可交互的对象(鼠标右键)
- 按住 Space 来控制右手
- 点击并按住 鼠标左键 进行交互
- 再次旋转相机以操作对象
眼动追踪
Eye tracking simulation 可以通过选中Input Simulation Profile中的 Simulate Eye Position 选项来启用。这不应与GGV类型交互一起使用(因此请确保将 Hand Simulation Mode 设置为 Articulated)。