World Locked Physics 示例。

物理光柱示例提供了一些由 World Locking Tools 的世界锁定坐标系启用的虚拟物理体验。

背景故事

在 HoloLens 上,空间定位点与头部或其他空间定位点之间的关系可能随着传感器数据的传入,甚至是对现有数据的重新处理,而随时发生变化。

Unity 的空间定位点通过拖动附加的 GameObject 来响应基础空间定位点姿势的变化。 此移动会给物理模拟造成困难:

  • 空间中定位的 GameObject 的姿势是由空间定位点每帧显式设置,因此无法通过模拟对其进行设置(例如动量)。
  • 由于空间定位点频繁更新其 GameObject 的姿势,因此相对其他静止不动的 Rigidbody,空间定位点看起来不会处于静态。
  • 由于 Unity 的坐标系统是隐式移动,当空间定位点调整静态全息影像的坐标以使其相对于现实世界保持固定时,路线和轨迹等物理计算将关闭。 例如,如果在轨迹计算和它到达目标之间空间定位点对全息影像进行重新定位,则即便是精确瞄准全息影像的投射仍然会失准。

当测量的空间定位点和与其锁定的可见虚拟对象之间的关系变得不一致时,World Locking Tools 会调整头部转换,以最大程度地减少因这些不一致而感知到的项目,而不是像 Unity 的空间定位点那样调整虚拟对象。 这使得虚拟对象可以在稳定的坐标空间中保持一致,从而消除上述问题。

生成示例

示例需要 SpatialPerception 功能。 语音命令还需要使用麦克风功能。

此示例要求将以下层添加到项目的标记 & 层:

  • 成柱状
  • SpatialMapping

运行演示

控件 HUD

这一基本 HUD 并非特定于此物理光柱示例,而仅允许运行时控制 World Locking Tools 的行为以探索其功能。 如 World Locking Tools 的初始设置中所述,它可作为插件,供任何使用 World Locking Tools 的应用程序开发使用。

示例 HUD 的屏幕截图

诊断统计信息将默认显示,但可以从控制 HUD 中对其进行禁用。

模式单选按钮

在任何给定时间,示例可能处于以下任一模式:

  • 空闲 - 物理示例当前未处理输入。 当然,HUD 和单选按钮菜单将继续处理输入。

  • Throw Dart - 根据基本物理定律计算并显示轨迹。 显示的弧线显示了投射物发射(通过选择姿势)将遵循的路径。 投掷的飞镖将遵循弹道轨迹,从它影响的任何撞击表面(包括空间重建 (SR) 网格)反弹。

    这些飞镖是“可删除的”,如下所述。

  • 添加支柱 - 对于选择的姿势,光线将沿指定方向投射到世界中。 如果发现可碰撞的表面,则会将一个垂直支柱添加到该场景中。

    添加的每个支柱都是可碰撞的,并且可以用作光柱支撑,如下所述。 但是,添加的支柱具有两种风格:

    • 如果将支柱设置在“可移动”的表面,则该支柱为物理模拟(例如,可以被撞倒)。
    • 否则支柱是可碰撞但处于静态的。

    实际上,此规则表明如果支柱是在 SR 网格中添加,支柱将是静态的,否则为动态。

    支柱是“可移动”的。

  • 添加光柱 - 首次选择时,会在场景中投射一条光线,以发现光柱的第一个端点。 之后,随着选择光线在场景中移动,会在第一个端点和当前端点之间绘制一条线。 选择的第二个姿势将创建从第一个端点延伸至当前端点的光柱。

    显而易见的是,通过支柱上的端点平衡光柱需要一个空间,其中端点支柱相对于彼此保持固定。

    光柱是“可删除的”。

  • 删除对象 - 选择时,如果光线投射对象是“可删除的”,则会将其从场景中删除。 删除对象支撑的任何物体将会掉落。