HoloLens开发手记 - Unity之Tracking loss
当HoloLens设备不能识别到自己在世界中的位置时,应用就会发生tracking loss。默认情况下,Unity会暂停Update更新循环并显示一张闪屏图片给用户。当设备重新能追踪到位置时,闪屏图片会消失,并且Update循环还会继续。
此外,用户也可以手动处理这个切换过程。发生tracking loss期间,如果不做任何处理动作,那么所有的场景中的全息内容将会处于body-locked状态。

默认处理方式 Default Handling
默认情况下,发生tracking loss期间应用所有的更新动作、事件和消息都会被暂停。同时会应用会显示一张图片给用户。可以用通过项目设置Player settings-> Splash Image->Holographic Tracking Loss image选项来设置tracking loss要显示的图片。

手动处理 Manual Handling
为了手动处理tracking loss, 你需要在上面提到的设置选项上取消勾选“Display tracking loss image”选项。之后就需要使用下面特定的API来处理追踪状态变化。
命名空间: UnityEngine.VR.WSA
类型: WorldManager
- World Manager提供了一个事件(WorldManager.OnPositionalLocatorStateChanged)来让我们识别追踪状态(追踪丢失/追踪可获取到),同时还提供了一个属性来查询当前追踪状态(WorldManager.state)
- 当追踪状态丢失时,场景中相机将立刻静止,不会再移动,即使用户在运动。这意味全息图形将不再响应用户的物理位置的变化,所有内容都会相对用户身体静止
在手动处理追踪状态变化时,你需要每一帧都查询当前追踪状态,或者处理OnPositionalLocatorStateChanged事件。
轮询 Polling
追踪状态最重要的一个状态是PositionalLocatorState.Active,这意味着当前HoloLens的状态追踪正常工作。任何其他的状态都会导致摄像机只剩下旋转增量,而忽略位置变化。
例如:
void Update()
{
switch (UnityEngine.VR.WSA.WorldManager.state)
{
case PositionalLocatorState.Active:
//处理激活状态内容
break;
case PositionalLocatorState.Activating:
case PositionalLocatorState.Inhibited:
case PositionalLocatorState.OrientationOnly:
case PositionalLocatorState.Unavailable:
default:
// 摄像机当前只有旋转增量变化
break;
}
}
处理追踪状态变化事件 Handling the OnPositionalLocatorStateChanged event
此外更便利的方法是订阅状态追踪的OnPositionalLocatorStateChanged事件来处理:
void Start()
{
UnityEngine.VR.WSA.WorldManager.OnPositionalLocatorStateChanged += WorldManager_OnPositionalLocatorStateChanged;
} private void WorldManager_OnPositionalLocatorStateChanged(PositionalLocatorState oldState, PositionalLocatorState newState)
{
if (newState == PositionalLocatorState.Active)
{
// 处理即将进入追踪恢复时场景内容
}
else
{
// 处理即将进入状态丢失时场景内容
}
}
HoloLens开发手记 - Unity之Tracking loss的更多相关文章
- HoloLens开发手记 - Unity development overview 使用Unity开发概述
Unity Technical Preview for HoloLens最新发行版为:Beta 24,发布于 09/07/2016 开始使用Unity开发HoloLens应用之前,确保你已经安装好了必 ...
- HoloLens开发手记 - Unity之Recommended settings 推荐设置
Unity提供了大量的设置选项来满足全平台的配置,对于HoloLens,Unity可以通过切换一些特定的设置来启用HoloLens特定的行为. Holographic splash screen 闪屏 ...
- HoloLens开发手记 - Unity之摄像头篇
当你穿戴好HoloLens后,你就会处在全息应用世界的中心.当你的项目开启了"Virtual Reality Support"选项并选中了"Windows Hologra ...
- HoloLens开发手记 - Unity之Spatial mapping 空间映射
本文主要讨论如何在Unity项目中集成空间映射功能.Unity内置了对空间映射功能的支持,通过以下两种方式提供给开发者: HoloToolkit项目中你可以找到空间映射组件,这可以让你便捷快速地开始使 ...
- HoloLens开发手记 - Unity之Gaze凝视射线
凝视是HoloLens首要输入方式,形式功能类似于桌面系统的光标,用于选择操作全息对象.然而在Unity中并没有明确的Gaze API或者组件. 实现Gaze Implementing Gaze 概念 ...
- HoloLens开发手记 - Unity之语音输入
对于HoloLens,语音输入是三大基本输入方式之一,广泛地运用在各种交互中.HoloLens上语音输入有三种形式,分别是: 语音命令 Voice Command 听写 Diction 语法识别 Gr ...
- HoloLens开发手记 - Unity之Persistence 场景保持
Persistence 场景保持是HoloLens全息体验的一个关键特性,当用户离开原场景中时,原场景中全息对象会保持在特定位置,当用户回到原场景时,能够准确还原原场景的全息内容.WorldAncho ...
- HoloLens开发手记 - Unity之Spatial Sounds 空间声音
本文主要讲述如何在项目中使用空间声音特性.我们主要讲述必须的插件组件和Unity声音组件和属性的设置来确保空间声音的实现. Enabling Spatial Sound in Unity 在Unity ...
- HoloLens开发手记 - Unity之场景共享 Shared holographic experiences in Unity
佩戴HoloLens的多个用户可以使用场景共享特性来获取集合视野,并可以与固定在空间中某个位置的同一全息对象进行交互操作.这一切是通过空间锚共享(Anchor Sharing)来实现的. 为了使用共享 ...
随机推荐
- Tomcat源码解读:ClassLoader的设计
Tomcat是一个经典的web server,学习tomcat的源码对于我们是有很大的帮助的.前一段时间了解了tomcat的工作的大致流程,对我的新工作有了很大的帮助.刚学习了ClassLoader( ...
- web会话管理
http协议是无状态的协议,也就是说服务器不知道这个http连接是那个浏览器发过来的. 要标识会话的唯一,有两种方法:1 Cookie 2 会话级cookie(开关浏览器算一次会话) 和 持久化的c ...
- mysql 动态新建以及删除分区表
因为项目需要,最近研究了一下在mysql数据库下如何动态新建以及删除分区表.如果全部借助存储过程的话,新建以及删除分区表在逻辑上比较死板.不灵活,而且还容易出错.因此,我新建了一个数据表table_f ...
- 五、Android学习第四天补充——Android的常用控件(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 五.Android学习第四天补充——Android的常用控件 熟悉常用的A ...
- mysql避免重复插入的三种方法
在开发中,我们经常遇到这样的需求,如果插入的数据不存在就插入存在就更新(或者不做任何操作).mysql的insert就提供了此功能,不需要我们在自己的业务逻辑代码上做处理.直接用mysql提供的功能来 ...
- FTP定时批量下载文件(SHELL脚本及使用方法 )
1. 脚本实例 将以下脚本保存为 getftp.sh #!/bin/bash datesign=`date -d -95day +%Y%m%d` ftp -nv 12.2.2.28 << ...
- 高仿一元云购IOS应用源码项目
高仿一元云购IOS应用(高仿自一元云购安卓客户端) 本App因官方没有IOS客户端故开发,利用业务时间历时2个星期,终于开发完成,又因苹果的各大审核规则对此App的影响,又历时1个多月才终于成功上架, ...
- MySQL版本介绍
MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会有几个版本的选择. 1. MySQL Community Server 社区版本,开源免费, ...
- Nagios监控ganglia的指标
这是nagios与ganglia整合的一部分内容 . 通常我们会把ganglia的监控发送给一个主机,我们可以在这个主机上执行nc localhost 8649 可以获取到所有发往这个主机的信息,以x ...
- 三星s4宣传片配色有惊喜
三星s4宣传片配色有惊喜据了解,一周前,三星曾对外发布了新旗舰手机galaxy s4的宣传视频,不过那份视频里所含信息仅仅只有s4发布会的邀请函.而日前,三星官方发布了s4的第二弹宣传片则暗示该机在配 ...