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