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中展开“图标”下拉列表,然后从“图标样式”下拉列表中进行选择。

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

  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中的手部模型为:
默认手关节表示 联合标签

3.3 HandConstraintPalmUp组件

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

  • 主要设置参数:

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

  • 其他参数采用默认值就行,如下图所示:

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

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

  1. 在线客服机器人交互功能开发总结

    背景与前言 在线客服系统是MIC和新一站等部门客服与访客通讯的平台.最近智能机器人很火,我们部门也配合开发了交互功能,投入线上使用. 在线客服前端为了配合机器人功能显示,遇到了不少问题,涉及交互和代码 ...

  2. android交互功能,Android 用户界面交互---拖放(OnDragListener)

    设计拖放操作 本节主要内容如下: 1.  如何开始拖拽: 2.  在拖拽期间如何响应事件: 3.  如何响应落下事件: 4.  如何结束拖放操作. 开始拖拽 用户使用一个拖拽手势开始拖拽,通常是在Vi ...

  3. 【零基础QQ机器人开发二】服务器篇

    前言:由于上篇聊天机器人的文章阅读量挺高的,所以再出一篇上云的教程,,通过云服务器我们可以把程序挂在服务器,实现程序的二十四小时工作 环境准备 我们需要准备一台云服务器用于程序上云,由于云服务器需要购 ...

  4. 学习笔记(01):SpringBoot实战教程:SpringBoot企业级线上商城项目讲解-Spring Boot 之基础 web 功能开发[一]...

    立即学习:https://edu.csdn.net/course/play/26258/328832?utm_source=blogtoedu DispatcherServletAutoConfigu ...

  5. EOS智能合约开发(二):EOS创建和管理钱包

    上节介绍了EOS智能合约开发之EOS环境搭建及启动节点 那么,节点启动后我们要做的第一件事儿是什么呢?就是我们首先要有账号,但是有账号的前提是什么呢?倒不是先创建账号,而是先要有自己的一组私钥,有了私 ...

  6. 【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学

    文章目录 一.本文目的: 二.实现历程: 三.开发过程 1.准备工作 1.cq-http的下载地址:[Releases · Mrs4s/go-cqhttp (github.com)](https:// ...

  7. python之Tkinter界面创建

    一.导入tkinter模块 在安装Python的时候,已经安装好了tkinter这个模块,使用时只需导入. import tkinter from tkinter import * 二.界面创建 (一 ...

  8. Unity关于Oculus Quest2 入门开发:(五)基于XR Interaction Toolkit0.10.0开发交互功能之UI篇

    使用过Unity开发过VR的同学知道,UI分为两大类:渲染在摄像机上的和不渲染在摄像机上的也就是WorldSpace,当然Oculus Q2也一样,它需要的也是world类型的. 第一步:配置Ocul ...

  9. Unity关于Oculus Quest2 基于XR Interaction Toolkit 基础开发 002-UI交互

    学习目标: Unity关于Oculus Quest2 基于XR Interaction Toolkit 基础开发 002-UI交互 学习内容: 1.创建XR Origin 2.创建XR UI Canv ...

最新文章

  1. java中Array和ArrayList区别 可以将 ArrayList想象成一种会自动扩增容量的Array
  2. 2020上半年收集到的优质AI文章 – 人工智能概述
  3. 国家电网公司“SG186”工程总部企业门户开发实施
  4. 数据库知识点2——关系模型之基本概念
  5. b插到元素a之前python_python之路_前端基础之jQuery入门3
  6. 结合Selenium 和 Requests完成动态数据爬取
  7. 算法基础——列表查找
  8. 智能集群理论优化控制_数学学科学术报告九:机器人集群的智能协同控制方法_中国计量大学...
  9. 改不改,这是一个问题
  10. 数据3分钟丨华为正式捐赠欧拉操作系统;腾讯云数据库TDSQL将发布免费版;MatrixDB 4.3发布...
  11. python彩票预测与分析_130期柳无尘双色球预测奖号:红球和值分析
  12. centos yum mysql-devel 5.5_CentOS 6.5通过yum安装 MySQL-5.5
  13. 如何 给给软件开发 添加 代理_如何从“菜鸟码农”变成“一线架构师”?
  14. Java 设计简单班级管理系统
  15. 无盘服务器秒卡 锐起0359,锐起无盘系统问题汇集
  16. 冰点还原精灵DeepFreeze重启后图标不见了
  17. c++ discards qualifiers
  18. Gensim的维基百科语料库中文词向量训练错误整理
  19. 阿里云商标注册怎么样?附上申请步骤流程
  20. 计算机一级B考试总结500字,第一次月考总结与反思500字

热门文章

  1. webview过滤广告终极招式
  2. js+html+css实现本地聊天室
  3. 1045 Favorite Color Stripe (30分)
  4. 数字船厂信息化整体解决方案(ppt可编辑)
  5. 涅槃重生:我的技术转管理之路
  6. 在 Windows 7 中安装和使用 Windows XP Mode,结合安装过程补充一下
  7. 特别行动队-斜率优化
  8. swt入门---http://www.blogjava.net/dreamstone/archive/2007/08/02/134074.html
  9. 首发《13大行业25个企业数字化转型经典成功案例合集》(免费下载)
  10. 最后一个晚上了...