HoloLens2基础交互功能开发(二):交互界面创建

1.系统菜单设置

1.1 通过Toolbox UI工具箱添加菜单

MRTK工具箱是一个Unity编辑器窗口实用程序,可轻松发现MRTK UX预制组件并将其生成到当前场景中。
工具箱窗口旨在将MRTK开箱即用的预制件生成到当前场景中。可以将其他“ UX”组件添加为脚本组件,例如bounds控件或对象操纵器控件。

  • 使用步骤:
    1.安装工具箱 Releases · microsoft/MixedRealityToolkit-Unity · GitHub
    2.通过“混合现实工具箱”选项卡>“工具箱”打开“工具箱”窗口
    HoloLens2基础交互功能开发(二):交互界面创建_第1张图片
    3.单击任何UX组件以将其添加到当前场景
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aj62wXQo-1604364144268)(https://user-images.githubusercontent.com/25975362/73321582-c9683a00-41f7-11ea-8bac-bf8efdb2fbe3.gif)]

1.2 按钮设置

  • 按钮为用户提供了一种触发立即动作的方法。它是混合现实中最基础的组成部分之一。MRTK提供各种类型的纽扣预制件。
    这些按钮预制件已经配置为对各种类型的输入(包括铰接的手动输入和注视)提供视听反馈。

  • 互动状态:在空闲状态下,按钮的前面板不可见。当手指靠近或视线输入的光标对准表面时,前面板的发光边框变得可见。前面板表面上的指尖位置还有其他突出显示。用手指推动时,前板会用指尖移动。当指尖触摸前面板的表面时,它会显示出细微的脉冲效果,以提供触摸点的视觉反馈。

1.2.1 更改文字
  • MRTK按钮使用一个ButtonConfigHelper组件来帮助您更改按钮的图标,文本和标签。(请注意,如果所选按钮上没有元素,则可能缺少某些字段。)

  • TextMeshPro-Text组件默认不支持中文,所以需要自己创建中文字库,创建过程如下:
    unity3d TextMeshPro使用中文字体(秒懂)_zhunju0089的博客-CSDN博客

  • 创建完成后,将字体文件拖至TextMeshPro-Text组件中Font Assets属性上

1.2.2 更改和创建图标
  • 要更改按钮使用的样式,请在ButtonConfigHelper中展开“图标”下拉列表,然后从“图标样式”下拉列表中进行选择。

  • 您可以使用资产菜单创建新的按钮图标集:

  1. “创建”>“混合现实工具箱”>“图标集”
  2. 要添加图标,只需将它们拖到各自的数组中即可
  3. 将创建好的图标集拖至Icon Set属性之上

2.Interactable交互组件设置

  • 该Interactable组件是一个多合一的容器,可以使任何对象轻松交互并响应输入。交互性是所有类型的输入(包括触摸,手光线,语音等)的统筹兼用,并将这些交互作用转化为事件和视觉主题响应。该组件提供了一种简单的方法来制作按钮,更改具有焦点的对象的颜色等等。

  • 该组件允许配置的三个主要部分:

  1. 常规输入配置
  2. 针对多个GameObjects的视觉主题
  3. 事件处理程序

2.1 General常规输入配置

在创建可交互组件时,通常建议使用DefaultInteractableStates(资产/ MRTK / SDK /功能/ UX / Interactable /状态/DefaultInteractableStates.asset)。

  • Input Action
    输入配置或控制器映射概要文件中选择组件应作出反应的输入操作
    Is Global默认行为为false,这会将输入限制为仅此Interactable collider / GameObject。

  • Speech Command
    语音命令,从MRTK语音命令资料,来触发针对语音交互onClick事件。
    语音命令的新建:语音| 混合现实工具包文档
    Requires Focus 如果为true,则仅当且仅当语音命令已经具有指针的焦点时,语音命令才会激活Interactable。如果为false,则交互对象将充当所选语音命令的全局侦听器。

  • Selection Mode
    此属性定义选择逻辑,可用的选择模式为:

  1. Button按钮-尺寸= 1,简单可点击可交互
  2. Toggle切换-尺寸= 2,交互作用在开/关状态之间交替
  3. Multi Dimension多维-尺寸> = 3,每次单击都会增加当前尺寸级别+1。对于定义列表的按钮状态等有用。

2.2 Profiles常规输入配置

配置文件是在GameObject和Visual Theme之间建立关系的项目。配置文件定义了状态更改发生时主题将处理的内容。
主题的工作原理很像材料。它们是可编写脚本的对象,其中包含将基于当前状态分配给对象的属性列表。主题也可以重用,并且可以在多个Interactable UX对象之间分配。

采用默认值就行

2.3 Events常规输入配置

每个Interactable组件都有一个OnClick事件,该事件在仅选择该组件时就会触发。

3.手部菜单设置

手菜单| 混合现实工具包文档
手动菜单允许用户快速打开常用功能的手动UI。为了防止在与其他对象交互时误激活,手形菜单提供了诸如“需要平手”和“使用凝视激活”之类的选项。建议使用这些选项来防止意外激活。

需要添加以下组件:

3.1 HandBounds组件

访问IMixedRealityHands(或IMixedRealityControllers的代理可视化器)的轴对齐边界的实用程序行为。

???没搞懂干嘛的,默认添加吧

3.2 SolverHnadler组件

  • Solver解算器是有助于根据预定算法计算对象的位置和方向的方法的组件。
    解算器提供了一系列将对象附加到其他对象或系统的行为,SolverHandler是其中一类脚本,因此Unity将自动创建一个。

  • 实现手部跟踪功能时,组件的参数设置:

属性 意义
Tracked Target Type 跟踪目标类型 选择手部关节Hand Joint
Tracked Handness 跟踪的左右手 可以分别选择leftorright以设置左右手菜单
Tracked Hand Joint 跟踪的手部关节 选择手掌Palm
  • MRTK中的手部模型为:
默认手关节表示 联合标签
HoloLens2基础交互功能开发(二):交互界面创建_第2张图片 HoloLens2基础交互功能开发(二):交互界面创建_第3张图片

3.3 HandConstraintPalmUp组件

  • 用于将跟踪的对象约束到对手约束内容(例如手UI,菜单等)安全的区域。安全区域被认为是不与手相交的区域。HandConstraintPalmUp也包含以证明当手掌面向用户激活求解器跟踪对象的共同行为。

  • 主要设置参数:

属性 意义
Safe Zone 安全区域 菜单出现在手的哪一边(具体见下左图)
Safe Zone Buffer 安全区缓冲 要应用于交点法线上手边界的交点的附加偏移(貌似是以手掌为中心)
Require Flat Hand 需要手掌平坦 手上的手指是否需要伸直而不是卷曲,以形成扁平的手形,以激活菜单
Use Gaze Activation 使用凝视激活 激活用户界面后,手掌阈值已达到,用户凝视激活点。如果无法获得眼睛注视信息,则将使用头部注视。

HoloLens2基础交互功能开发(二):交互界面创建_第4张图片

  • 其他参数采用默认值就行,如下图所示:
    HoloLens2基础交互功能开发(二):交互界面创建_第5张图片

  • 参数设置完成后,将上节所建菜单拖至On First Hand Detected()On Last Hand Lost()属性之上

你可能感兴趣的:(HoloLens2,hololens,unity3d)