HoloLens2基础交互功能开发(二):交互界面创建
1.系统菜单设置
1.1 通过Toolbox UI
工具箱添加菜单
MRTK工具箱是一个Unity编辑器窗口实用程序,可轻松发现MRTK UX预制组件并将其生成到当前场景中。
工具箱窗口旨在将MRTK开箱即用的预制件生成到当前场景中。可以将其他“ UX”组件添加为脚本组件,例如bounds控件或对象操纵器控件。
- 使用步骤:
1.安装工具箱 Releases · microsoft/MixedRealityToolkit-Unity · GitHub
2.通过“混合现实工具箱”选项卡>“工具箱”打开“工具箱”窗口
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
中展开“图标”下拉列表,然后从“图标样式”下拉列表中进行选择。 -
您可以使用资产菜单创建新的按钮图标集:
- “创建”>“混合现实工具箱”>“图标集”
- 要添加图标,只需将它们拖到各自的数组中即可
- 将创建好的图标集拖至
Icon Set
属性之上
2.Interactable
交互组件设置
-
该Interactable组件是一个多合一的容器,可以使任何对象轻松交互并响应输入。交互性是所有类型的输入(包括触摸,手光线,语音等)的统筹兼用,并将这些交互作用转化为事件和视觉主题响应。该组件提供了一种简单的方法来制作按钮,更改具有焦点的对象的颜色等等。
-
该组件允许配置的三个主要部分:
- 常规输入配置
- 针对多个GameObjects的视觉主题
- 事件处理程序
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
此属性定义选择逻辑,可用的选择模式为:
- Button按钮-尺寸= 1,简单可点击可交互
- Toggle切换-尺寸= 2,交互作用在开/关状态之间交替
- 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 | 跟踪的左右手 | 可以分别选择left orright 以设置左右手菜单 |
Tracked Hand Joint | 跟踪的手部关节 | 选择手掌Palm |
- MRTK中的手部模型为:
默认手关节表示 | 联合标签 |
---|---|
3.3 HandConstraintPalmUp
组件
-
用于将跟踪的对象约束到对手约束内容(例如手UI,菜单等)安全的区域。安全区域被认为是不与手相交的区域。
HandConstraintPalmUp
也包含以证明当手掌面向用户激活求解器跟踪对象的共同行为。 -
主要设置参数:
属性 | 意义 | 值 |
---|---|---|
Safe Zone | 安全区域 | 菜单出现在手的哪一边(具体见下左图) |
Safe Zone Buffer | 安全区缓冲 | 要应用于交点法线上手边界的交点的附加偏移(貌似是以手掌为中心) |
Require Flat Hand | 需要手掌平坦 | 手上的手指是否需要伸直而不是卷曲,以形成扁平的手形,以激活菜单 |
Use Gaze Activation | 使用凝视激活 | 激活用户界面后,手掌阈值已达到,用户凝视激活点。如果无法获得眼睛注视信息,则将使用头部注视。 |
-
其他参数采用默认值就行,如下图所示:
-
参数设置完成后,将上节所建菜单拖至
On First Hand Detected()
和On Last Hand Lost()
属性之上
更多推荐
所有评论(0)