zoukankan      html  css  js  c++  java
  • HoloLens开发手记

    当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
        {
            // 处理即将进入状态丢失时场景内容
        }
    }
  • 相关阅读:
    uip UDPclient模式通信移植,p本地ort可以是无规
    正则表达式摘要
    Regular expression
    正则-合乎规则
    通配符-通配
    正则表达式总结
    判断大盘筑顶的方法
    筑顶和下跌规律
    股票的筑顶危险信号
    股票筑顶的基本特征
  • 原文地址:https://www.cnblogs.com/mantgh/p/5683892.html
Copyright © 2011-2022 走看看