操作处理程序 — MRTK2

Manipulation handler

使用 ManipulationHandler 脚本可以通过一只或两只手来移动、缩放和旋转对象。 可以限制操作,使其只允许某些种类的变换。 该脚本适用于各种类型的输入,包括 HoloLens 2 关节手输入、手部射线、HoloLens(第一代)手势输入,以及沉浸式头戴显示设备运动控制器输入。

如何使用操作处理程序

ManipulationHandler 脚本组件添加到 GameObject。 另外,确保向对象添加一个与其可抓取边界匹配的碰撞体。

为使对象能够响应近距关节手输入,还需要添加 NearInteractionGrabbable 脚本。

Using the manipulation handler in the unity editor

检查器属性

Manipulation Handler structure

宿主变换:要拖动的变换。 默认为组件的对象。

操作类型:指定是可以使用一只手来操作对象、两只手来操作对象,还是这两种方式都可以

  • 仅单手
  • 仅双手
  • 一只和两只手

双手操控类型

  • 缩放:仅允许缩放
  • 旋转:仅允许旋转
  • 移动缩放:允许移动和缩放
  • 移动旋转:允许移动和旋转
  • 旋转缩放:允许旋转和缩放
  • 移动旋转缩放:允许移动、旋转和缩放

Manipulation Handler

允许远距操作:指定是否可以使用远距交互通过指针来执行操作

近距单手旋转模式:指定使用单手/控制器近距抓取对象时的对象行为

远距单手旋转模式:指定使用单手/控制器远距抓取对象时的对象行为

单手旋转模式选项:指定使用单手抓取对象时如何旋转对象

  • 保持原始旋转:在移动对象时不旋转它
  • 保持向用户旋转:保持原始的沿 X/Y 轴向用户旋转方式
  • 保持沿重力方向向用户旋转:保持原始的向用户旋转方式,但使对象垂直。 对于具有边界控件的对象很有用。
  • 面向用户:确保对象始终面向用户。 适用于平板/面板。
  • 背对用户:确保对象始终背对用户。 对于后向配置的平板/面板很有用。
  • 围绕对象中心旋转:仅适用于关节手/控制器。 使用手部/控制器旋转来旋转对象,但围绕对象中心点旋转。 可用于在某种距离进行检查。
  • 围绕抓取点旋转:仅适用于关节手/控制器。 旋转对象,如同它被手部/控制器抓住了一样。 可用于检查。

释放行为:释放对象时,指定其物理运动行为。 要求该对象上有一个刚体组件。

  • 内容
  • 保持速度
  • 保持角速度

旋转约束:指定在与对象交互时,对象在哪个轴上旋转

  • 仅 X 轴
  • 仅 Y 轴
  • 仅 Z 轴

使用局部空间进行约束:在应用世界空间轴或局部空间轴相关的约束时用于切换的切换开关

运动约束

  • 固定与头部的距离

平滑化处于活动状态:指定平滑化是否处于活动状态

单手平滑化量:应用于移动、缩放、旋转的平滑化量。 平滑化量为 0 表示不平滑化。 最大值表示不更改值。

事件

操控处理程序提供以下事件:

  • OnManipulationStarted:在操控开始时触发
  • OnManipulationEnded:在操控结束时触发
  • OnHoverStarted:当手部/控制器悬停在近距或远距可操控对象上时触发
  • OnHoverEnded:当手部/控制器未悬停在近距或远距可操控对象上时触发