Unite 2017 | 使用Unity开发HoloLens应用实战技巧(下)
昨天我们分享了《运用Unity开发HoloLens应用实战技巧(上)》,今天下篇将讲解Unity开发HoloLens应用的全息模拟器与交互设计。 附演讲的现场视频(时长30分钟,流量党随意): 全息模拟器 全息模拟器(Holographic Emulation)是一个新功能,可以大幅度减少Unity开发全息应用的迭代时间。Microsoft HoloLens的开发者们将可以直接使用Unity编辑器进行原型设计、调试和迭代设计,不必再花费过长的时间进行发布构建。并且给没有硬件设备的开发者也提供了很大的便利。它拥有两种模式:模拟模式和远程模式。 温馨提示: 如果要使用Unity编辑器自带的全息模拟器,操作系统必须为Windows 10 Anniversary版本。 模拟模式(Simulate in Editor) Room Room就是模拟场景所在的房间。一共5个选项,分别是:DefaultRoom、Bedroom1、Bedroom2、GreatRoom和LivingRoom。它们与HoloLens Emulation的模拟场景是一一对应的。
Gesture Hand 虚拟手掌,即设置模拟手势操作的虚拟。
手柄控制 ![]() 控制器相关键位的作用:
以上这些操作基本能够涵盖MR大多数的交互操作。 远程模式(Remote to Device) 如果您有HoloLens硬件设备,Unity也提供了可以直接远程运行与调试的模式,来帮助开发者便利开发HoloLens应用。 ![]() 模式有以下几个参数:
![]() 连接到设备有三步。 首先,您需要安装并运行远程模式播放器(Holographic Remoting Player),可以从Windows应用商店下载。在设备上运行该应用,您将进入等待状态并显示设备的IP地址。可以访问Microsoft Windows Dev Center(微软Windows设备中心)了解如何开启连接会话的远程播放器等相关信息。 其次,在远程设备(Remote Machine)属性栏中输入设备的IP地址。字段右侧的下拉菜单中可以选择最近使用过的地址。 最后,点击“Connect(连接)”按钮。连接状态会变为带连接消息的绿色指示灯。现在您可以点击编辑器中的播放按钮并远程运行设备。您可以暂停、检查对象和调试,就像在编辑中运行普通应用一样,区别之处在于视频、音频和设备的输入是通过网络在主机和远程设备之间进行传输的。远程模式对于验证性能来说并不奏效(因为所有繁重工作都是由主机处理的),但它可用于在开发过程中进行快速迭代。 已知限制 模拟模式
远程模式
交互开发 ![]() 为了帮助开发者更好地开发HoloLens应用,微软在GitHub上提供了HoloToolkit-Unity插件,下文会从Unity原生API和Microsoft HoloToolkit-Unity两方面介绍这些交互开发的实战技巧。 Gaze凝视 Unity API 如果了解Unity开发的话,原理其实很简单,就是从主摄像机的朝向视角发出一个射线,碰到游戏对象后再进行后续判断处理。 HoloToolkit API
开发中的注意事项
Gaze的距离设计 ![]() 从上图中可以看出来,HoloLens设计最佳凝视体验的距离是2米左右,而对象的大小是在5到10厘米左右。在大多数情况下,最小目标尺寸为1-1.5度应允许成功的用户操作,尽管3度的目标通常允许更高的速度。请注意,即使是3D元素,用户所针对的大小实际上也是2d区域 - 无论哪个投影面向它们都应该是可定位区域。 ![]() 使用“凝视”高亮目标对象的例子 Gesture手势 Unity API GestureRecognizer仅执行您要求的一组手势之间的最小消歧。 例如,如果您只要点击,用户可以按住他们的手指按住它们,只要他们喜欢,并且当用户释放手指时,点击仍然会发生。 有关手势类型的更多详细信息,请参阅GestureSettings。 GestureRecognizer将仅在StartCapturingGestures被调用后才会收到事件。 StopCapturingGestures可以再次调用来停止事件。 这允许GestureRecognizer根据需要被激活和停用,例如当用户凝视移动并远离对象时。 InteractionManager - 提供从手,控制器和系统语音命令访问用户输入。 InteractionSource - 表示可以导致交互和手势的一个检测到的手,控制器或用户声音的实例。 HoloToolkit API InputManager - 一个预制件,用于管理HoloLens输入系统,目前支持的凝视和各种输入源,例如手和手势。还包括一个假的输入源,可以在编辑器中模拟手输入。 默认情况下,可以通过按住Shift(左手)或Space(右手),移动鼠标移动手并使用鼠标左键点按。 常用手势种类
手势功能的使用步骤
尤其注意,最后的解绑事件不能忘记,在OnDestroy中一定要加入Event的“-=”操作。 Voice Commands(语音控制) Unity API KeywordRecognizer - 侦听语音输入,并尝试将发音短语与注册关键字列表相匹配。 GrammarRecognizer - 它是KeywordRecognizer的补充。 在许多情况下,开发人员会发现KeywordRecognizer满足他们所有的开发需求。 然而,在某些情况下,更复杂的语法将以XML文件的形式更好地表达。 语法识别器使用万维网联盟(W3C)语音识别语法规范(SRGS)1.0版中规定的可扩展标记语言(XML)元素和属性。 这些XML元素和属性表示定义由语音识别引擎识别的单词或短语(命令)的规则结构。有关此格式的信息,请参见http://www.w3.orgspeech-grammarspeech-grammar/或MSDN。 DictationRecognizer - 它用于听取语音输入,并尝试确定发音是什么。用户可以注册并听取假设和短语完成的事件。 Start()和Stop()方法分别启用和禁用听写识别。 使用识别器完成后,必须使用Dispose()方法进行处理,以释放其使用的资源。 如果垃圾收集之前没有释放,它将以额外的性能成本自动释放这些资源。 HoloToolkit API 使用语音控制的步骤如下:
[C#] 纯文本查看 复制代码
?
注意事项
Spatial Mapping(空间映射) Unity API SurfaceObserver - 它是空间映射底层API最重要的成员,提供了对设备对现实世界的理解的洞察力。SurfaceObserver描述世界中的一个立体对象,并报告哪些曲面已被添加,更新或删除。 然后应用程序可以异步地请求具有或不具有物理冲突数据的网格数据。 当请求被填满时,另一个回调通知应用程序数据已准备就绪。 SurfaceData - 另一个重要的组成部分是SurfaceData对象。 这包含构建和报告Surface的网格数据所需的所有信息。填充的SurfaceData在RequestMeshAsync调用中传递给系统。 当Mesh数据准备就绪时,在请求时提供的“data ready”回调中返回一个匹配的SurfaceData。 这允许应用程序精确地确定数据对应于哪个表面。 HoloToolkit API 注意事项
Spatial Sound(空间音效) Unity设置 ![]() AudioManager - 点击Unity编辑器菜单栏Edit→Project Settings→Audio,打开AudioManager窗口。 ![]() 关键设置:系统采样率设为48000,采用Microsoft HRTF声场定位技术。 HoloToolkit API 注意事项 World Coordinate(坐标系统) Unity API HoloToolkit API WorldAnchorManager - 将世界锚点包装并简化一些繁琐的API内容。 注意事项
结语 今天详尽地为大家介绍了HoloLens设备的各项功能,以及如何从Unity中使用这些功能。点击[阅读原文]进入Unity官方中文社区(unitychina.cn),还可以查看更多Unity与HoloLens开发相关的学习资源。 |
Unite 2017 | 使用Unity开发HoloLens应用实战技巧(下)相关推荐
- Hololens Unity 开发入门 之 Hello HoloLens
Hololens Unity 开发入门 之 Hello HoloLens~ 本文主要记录 HoloLens Unity 开发入门 ~ 一.说在前面的话 Unity 对 VR AR 甚至 将来的 MR ...
- HoloLens开发手记 - Unity development overview 使用Unity开发概述
Unity Technical Preview for HoloLens最新发行版为:Beta 24,发布于 09/07/2016 开始使用Unity开发HoloLens应用之前,确保你已经安装好了必 ...
- 王者齐聚!Unite 2017 Shanghai 日程讲师全揭晓
汇聚了来自全球的 Unity开发者.发行商.培训家及爱好者的 Unite 2017 Shanghai 即将于于 5 月 11 日-13日在上海·国际会议中心隆重举行.Unite 大会是由 Unity ...
- 《Unity开发实战》——2.2节创建画中画效果
本节书摘来自华章社区<Unity开发实战>一书中的第2章,第2.2节创建画中画效果,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区& ...
- 《Unity开发实战》——3.9节鼠标悬停时高亮显示材质
本节书摘来自华章社区<Unity开发实战>一书中的第3章,第3.9节鼠标悬停时高亮显示材质,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云 ...
- 颠覆游戏开发,引领行业革命,从 Unite 2019 看 Unity 技术亮点
在谈及 Unity 引擎时,或许不少开发者对其还停留在游戏开发的固有认知中.事实上,Unity 在"实时 3D 内容创作"的伟大航路上,已向更为广阔的全行业领域的星辰大海前进. 从 ...
- 《Unity开发实战》——2.4节自定义镜头光晕效果
本节书摘来自华章社区<Unity开发实战>一书中的第2章,第2.4节自定义镜头光晕效果,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社 ...
- Leap Motion 之Unity 开发实战(一. 制作手的HandController)
Leap Motion 之Unity开发实战 (一) 制作手的HandController 一. Unity官方包介绍 到如下链接下载 https://developer.leapmotion.com ...
- 《Unity开发实战》——1.3节设置首选项
本节书摘来自华章社区<Unity开发实战>一书中的第1章,第1.3节设置首选项,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区&qu ...
最新文章
- 19.Remove Nth Node From End of List
- Spark Worker启动源码
- buu Windows系统密码
- layui如何获取父节点的父节点_layui框架中layer父子页面交互的方法分析
- 深度分析:经典视频产品架构拆解
- 删除git仓库中的文件(从所有历史中清除,不留痕迹)【不可恢复】
- winform之窗体固定
- Redis---概述
- Leetcode每日一题:738.monotone-increasing-digits(单调递增的数字)
- BZOJ 2440 【中山市选2011】 完全平方数
- (原创)Windows系统后安装ubuntu,无法选择启动ubuntu。
- 个人阅读作业2016.1.10
- 删除了项目下的\WEB-INF\classes文件夹,在eclipse的tomcat部署启动时报错。
- 计算机未安装OCR应用程序,OCR使用的常见问题及解决(转载)
- 用matlab绘制P三曲线,科学网—水文频率曲线及MATLAB绘制 - 张凌的博文
- 支付宝php sdk如何使用,支付宝SDK怎么用啊?
- Linux下线程池概念详解以及代码演示
- 获取java时间 小时_Java 如何获取当前时间前一个小时的时间
- 飞猪未来景区多地智慧亮相 春节出游目的地马上安排
- 游戏系统及开发相关概述(下)
热门文章
- VMS Software, Inc.
- 数据科学的统计学知识笔记
- 根据时间戳计算具体持续时间(天 时 分 秒)
- MySQL 的物理备份、逻辑备份、增量备份
- 如何解决服务之间的通信问题?
- EXCEL 2016常用知识--Excel函数
- 初学Python,遇到AttributeError: 'Person' object has no attribute 'firstname'问题的解决方法
- SQL练习37:对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname
- Linux之父和Redis之父,x86 和 ARM 谁能主宰服务器市场?Linux 之父和 Redis 之父有分歧了...
- 数据结构图的邻接表存储结构