World Locking Tools for Unity

  • 名词介绍
  • 问题
    • 问题起源
    • 标记的不一致性
    • 示例
  • 之前的解决方案
    • 空间定位点(World Anchor)
  • 基本思想
    • 海绵状空间和世界锁定空间
      • 海绵状(Spongy)空间
      • 世界锁定空间
    • 持久性
    • 相机运动影响

名词介绍

Pose(姿势)-位置和方向.
Hologram(全息图)-一个可见的虚拟物体.
Real world(现实世界)-物理世界.
Physical world(物理世界)-真实世界.
Virtual world(虚拟世界)-通过电子媒体综合生产和模拟的世界.
Virtual world marker(虚拟世界标记)-虚拟坐标系中的一个姿势,一个参考位置和方向.
Real world marker(真实世界标记)-相对于真实世界环境和与虚拟世界标记相对应的摄像机的姿势.真实世界标记的姿势是由感测数据的某些组合确定的.
Visible features(可见特征)-视觉上可识别的物理世界的特征.

问题

问题起源

在日常物理世界中,空间可由一个固定的坐标系描述.静止坐标系中的静止物体将永远保持相同的坐标.在特定配置中布置的一组对象将保持该配置.以相同速度移动的两个物体将保持彼此的固定偏移.
然而这在Hololens中并不一定成立.

标记的不一致性

Hololens的头部跟踪系统在确定头部相对于物理世界中已知虚拟参考点的姿势是非常精确.我们称这些虚拟参考点为"可见特征(visible features)".

当用户离开由可见特征包围的已知位置,例如,在房间中走动后再返回到相同的位置,系统会识别到需要相同的可见特征.它还可以以惊人的精度确定这些可见特征相对于头部姿势的姿势.

现在跟踪系统知道这些特征和头部之间的相对关系,但不知道头部或特征的绝对坐标.因为物理世界没有绝对坐标系.因此,跟踪系统分配的坐标与最近的历史一致,但与所有的历史中可能不一致.回到完全相同的姿势时,头部现在可能与离开时具有不同的坐标.这是传感器漂移(sendor drift)的一种形式.

但是,如果新的头部虚拟姿势坐标由已经向正X方向移动(即头部所在的物理世界坐标系向负X方向移动),那么在该虚拟坐标系中静止的所有全息图对象现在都会相对于头部向负X方向移动.

示例

用户在点A,周围由许多良好的可见参考特征,因此放置的全息图都保持不变.当用户在真实世界中走了10米到B点.但是,到达B点后,由于传输中的低保真度跟踪,设备识别到用户走了9米.这与设备规格一致,允许±10%的距离误差.然后用户从B点返回A点,设备识别用户走了10.5米.这意味着设备认为用户最后出现在距离最初A点1.5米的地方,因此,当初布置的全息图将显示在距离A点1.5米的地方.

之前的解决方案

空间定位点(World Anchor)

Unity使用空间定位点机制来处理这个问题.
简单来说,空间定位点的作用是可以保持3m之内全息图在物理世界的位置.工作机制是如果虚拟空间相对于物理空间发生了移动,则通过跟踪底层可见特征,空间锚知道在虚拟空间中移动自身以保持在物理空间中的锁定。连接到空间锚的任何东西同样会被拖拽通过Unity的虚拟空间,在物理空间中保持静止。
缺点是:
一并没有根治头部坐标的偏移,会牺牲虚拟世界的自我一致性,即绑定在不同空间定位点下的全息图会发生位置偏差.因此很难维护一个精确布局的应用程序.
二:定位可用范围有限,单个空间定位无法为大于该空间定位可用范围的单个对象提供良好的结果.由于杠杆臂效应,距离空间锚点越远的点误差越大.
简单说,一.全息图相对错位,二.不支持太大的全息图

基本思想

从内到外的头部追踪系统,比如Holoens的系统,擅长辨别头部和真实世界的相对位置.但是会出现之前介绍的"漂移"问题.
World Locking Tools通过识别物理特征,修正头部坐标来解决"漂移"问题.还通过从应用程序获取额外的输入来纠正设备识别用户在物理空间中移动的距离来解决"尺度问题".

海绵状空间和世界锁定空间

海绵状(Spongy)空间

WLT的核心是一个优化引擎.它将由当前活动的空间定位点构成的图以及当前头部追踪信息作为输入,这被称为海绵状状态(Spongy State),因为它不断在变化.当传入的传感器数据细化其状态时,空间定位点始终相对彼此运动,并在其固有的海绵坐标空间内运动.
这个海绵状的空间是以前唯一一个MR应用程序开发人员可以使用的坐标系.

世界锁定空间

从海绵状状态开始,WLT引擎计算一个稳定的空间,使海绵状空间与物理世界最佳对齐.稳定后的空间成为世界锁定空间,其完整状态为冻结状态(frozen state).

海绵状空间和世界锁定空间都是刚性笛卡尔坐标系,两者的区别仅仅是旋转和偏移.然而从海绵状空间到世界锁定空间的变换随着新的传感数据的处理而逐帧改变.

海绵状空间中,传入的传感器数据可以自由细化(比如移动)空间定位点相对于头部和其他定位点,而世界锁定空间选择尽量避免这种移动.这使得世界锁定空间中的物体可以修正在物理世界中位置,而无需绑定到单一的空间定位点.每一帧,引擎都计算定位点最稳定的世界锁定空间,也就是说,其中的虚拟物体与现实世界特征保持最佳对齐.

这种调整作用在cerame的父对象,通过局部变换,将变换应用于每一帧的场景.

持久性

冻结状态可以选择性地夸对话持久化.状态可以手动保存和读取.
另外,如果使用空间Pin特征将建模空间与真实空间对齐,则可以保存这种对齐.

相机运动影响

对Camera的校正变换,不会移动场景中的任何对象,因此不会干扰物理模拟或其他动力学计算.
其他影响请详见链接中的最后一节.

World Locking Tools for Unity (二)背景部分相关推荐

  1. World Locking Tools for Unity Sample (二)QR Space Pins

    World Locking Tools for Unity 基本配置 示例场景部分 工程资源 环境配置 打印二维码 虚拟世界 物理世界 基本配置 World Locking Tools 的 Space ...

  2. World Locking Tools for Unity (一)指南部分

    World Locking Tools for Unity 前言 介绍 目标 入门之前 前言 本系列主要翻译自Microsoft的官方文档,我简要了解了其原理,整理了介绍框架. World Lock: ...

  3. World Locking Tools for Unity (五)安装部分

    World Locking Tools for Unity 安装环境 WLT Layer 向Unity添加WLT FrozenWorld引擎安装 0.在HoloLens中构建和部署工程 1.使用NuG ...

  4. World Locking Tools for Unity (三)原理部分

    World Locking Tools for Unity 坐标系 Spongy Space Play Space Locked Space Pinned Spcae Frozen Space Ses ...

  5. UnityVS(Visual Studio Tools For Unity)的安装与使用

    一些废话 Unity 的开发者们,尤其是微软系的Unity开发者们,用Mono是不是烦死了?你是不是跟我一样,用vs来写代码,用Mono来跟踪调试?好麻烦啊好麻烦. 也许你会说,傻逼你不会用Unity ...

  6. 【转】UnityVS(Visual Studio Tools For Unity)的安装与使用

    Unity 的开发者们,尤其是微软系的Unity开发者们,用Mono是不是烦死了?你是不是跟我一样,用vs来写代码,用Mono来跟踪调试?好麻烦啊好麻烦. 也许你会说,傻逼你不会用UnityVS插件么 ...

  7. vs2017离线安装vs tools for unity

    vs2017离线安装vs tools for unity Visual Studio Tools for Unity 从vs2017开始就不提供单独的安装包下载,需要通过vs安装程序在线安装. vs2 ...

  8. Unity添加背景音效无声音|解决方案

    Unity添加背景音效无声音|解决方案 Unity添加背景音效无声音|解决方案 最近的工程实践是用unity做的,我主要是负责游戏音效那一块,但是本人之前并没有任何和unity相关的经验,完全是个un ...

  9. 1.Unity 2D背景图轮换

    2D游戏中,背景图轮换是一个非常常用的场景,轮换的方式现在有两种,一种是两张图片不断改变坐标 另一种是使用shader,原理相同,同样都是坐标轮换 方式一: 两张图片不断改变坐标,当第二张到达第一张图 ...

最新文章

  1. innodb force recovery
  2. MySQL5.5复制新特性
  3. 配置文件app.config
  4. Matlab生成m序列
  5. 计算机约束措施是参考,【计算机应用论文】高校计算机机房管理问题与改进策略(共4460字)...
  6. python输出举例_python字符串格式化输出及相关操作代码举例
  7. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(上传安装包并解压_05)
  8. Manuscript match— 找到最适合你文章的那个ta(之期刊杂志)
  9. python 中time和datetime_python中time模块与datetime模块的详解
  10. PHP5异常处理,PHP5异常处理分析实例
  11. KVC在定义Model类中的妙用
  12. 【PLSQL】过程procedure形参和参数
  13. 【Axure9.0原型实战(一)】Axure9.0的元件库的使用、导入、制作、路径等操作方法与技巧(附Axure元件库大全)
  14. 智能传感器应用领域及其发展现状
  15. 软件测试的步骤和方法
  16. 欧几里得算法和扩展欧几里得算法
  17. 为什么哲学是最难的学科_世界十大哲学难题:全球哲学家都苦恼的哲学问题盘点...
  18. 用计算机写作文主题,《用计算机写作文》教学设计(周未定)
  19. 历史为什么丑化隋朝_历史上被严重丑化的五大名人,明明该流传千古,却变成遗臭万年!...
  20. 未来,Siri将能读心!

热门文章

  1. 商家如何在手淘里面做活动页面,引流到微信号上,如何做私域引流的活动页
  2. unable to read local cache ‘C:\\Users\\kingS/gensim-data\\information.json‘ during fallback, connec
  3. 中国最能喝咖啡的城市,找到了
  4. 第一步商用计算机,清华同方T46H博仕商用笔记本u盘把win7系统改为win10系统的操作步骤...
  5. 汉字怎么利用计算机处理,汉字信息在计算机中的处理
  6. 怎样降低微信h5棋牌游戏类app域名被微信拦截封杀屏蔽的几率
  7. 伯克利人工智能研究:针对深度神经网络的物理对抗例子
  8. IT痴汉的工作现状33-HTML5的春天是原生App的冬天?
  9. 亚马逊六页纸的理解与思考
  10. 行人检测-Caltech Pedestrian Dataset 数据集下载及格式转换