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()
属性之上
HoloLens2基础交互功能开发(二):交互界面创建相关推荐
- 在线客服机器人交互功能开发总结
背景与前言 在线客服系统是MIC和新一站等部门客服与访客通讯的平台.最近智能机器人很火,我们部门也配合开发了交互功能,投入线上使用. 在线客服前端为了配合机器人功能显示,遇到了不少问题,涉及交互和代码 ...
- android交互功能,Android 用户界面交互---拖放(OnDragListener)
设计拖放操作 本节主要内容如下: 1. 如何开始拖拽: 2. 在拖拽期间如何响应事件: 3. 如何响应落下事件: 4. 如何结束拖放操作. 开始拖拽 用户使用一个拖拽手势开始拖拽,通常是在Vi ...
- 【零基础QQ机器人开发二】服务器篇
前言:由于上篇聊天机器人的文章阅读量挺高的,所以再出一篇上云的教程,,通过云服务器我们可以把程序挂在服务器,实现程序的二十四小时工作 环境准备 我们需要准备一台云服务器用于程序上云,由于云服务器需要购 ...
- 学习笔记(01):SpringBoot实战教程:SpringBoot企业级线上商城项目讲解-Spring Boot 之基础 web 功能开发[一]...
立即学习:https://edu.csdn.net/course/play/26258/328832?utm_source=blogtoedu DispatcherServletAutoConfigu ...
- EOS智能合约开发(二):EOS创建和管理钱包
上节介绍了EOS智能合约开发之EOS环境搭建及启动节点 那么,节点启动后我们要做的第一件事儿是什么呢?就是我们首先要有账号,但是有账号的前提是什么呢?倒不是先创建账号,而是先要有自己的一组私钥,有了私 ...
- 【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学
文章目录 一.本文目的: 二.实现历程: 三.开发过程 1.准备工作 1.cq-http的下载地址:[Releases · Mrs4s/go-cqhttp (github.com)](https:// ...
- python之Tkinter界面创建
一.导入tkinter模块 在安装Python的时候,已经安装好了tkinter这个模块,使用时只需导入. import tkinter from tkinter import * 二.界面创建 (一 ...
- Unity关于Oculus Quest2 入门开发:(五)基于XR Interaction Toolkit0.10.0开发交互功能之UI篇
使用过Unity开发过VR的同学知道,UI分为两大类:渲染在摄像机上的和不渲染在摄像机上的也就是WorldSpace,当然Oculus Q2也一样,它需要的也是world类型的. 第一步:配置Ocul ...
- Unity关于Oculus Quest2 基于XR Interaction Toolkit 基础开发 002-UI交互
学习目标: Unity关于Oculus Quest2 基于XR Interaction Toolkit 基础开发 002-UI交互 学习内容: 1.创建XR Origin 2.创建XR UI Canv ...
最新文章
- java中Array和ArrayList区别 可以将 ArrayList想象成一种会自动扩增容量的Array
- 2020上半年收集到的优质AI文章 – 人工智能概述
- 国家电网公司“SG186”工程总部企业门户开发实施
- 数据库知识点2——关系模型之基本概念
- b插到元素a之前python_python之路_前端基础之jQuery入门3
- 结合Selenium 和 Requests完成动态数据爬取
- 算法基础——列表查找
- 智能集群理论优化控制_数学学科学术报告九:机器人集群的智能协同控制方法_中国计量大学...
- 改不改,这是一个问题
- 数据3分钟丨华为正式捐赠欧拉操作系统;腾讯云数据库TDSQL将发布免费版;MatrixDB 4.3发布...
- python彩票预测与分析_130期柳无尘双色球预测奖号:红球和值分析
- centos yum mysql-devel 5.5_CentOS 6.5通过yum安装 MySQL-5.5
- 如何 给给软件开发 添加 代理_如何从“菜鸟码农”变成“一线架构师”?
- Java 设计简单班级管理系统
- 无盘服务器秒卡 锐起0359,锐起无盘系统问题汇集
- 冰点还原精灵DeepFreeze重启后图标不见了
- c++ discards qualifiers
- Gensim的维基百科语料库中文词向量训练错误整理
- 阿里云商标注册怎么样?附上申请步骤流程
- 计算机一级B考试总结500字,第一次月考总结与反思500字
热门文章
- webview过滤广告终极招式
- js+html+css实现本地聊天室
- 1045 Favorite Color Stripe (30分)
- 数字船厂信息化整体解决方案(ppt可编辑)
- 涅槃重生:我的技术转管理之路
- 在 Windows 7 中安装和使用 Windows XP Mode,结合安装过程补充一下
- 特别行动队-斜率优化
- swt入门---http://www.blogjava.net/dreamstone/archive/2007/08/02/134074.html
- 首发《13大行业25个企业数字化转型经典成功案例合集》(免费下载)
- 最后一个晚上了...