PositionSensorVRDevice: getImmediateState() 方法

已弃用: 不再推荐使用此功能。尽管某些浏览器可能仍然支持它,但它可能已从相关 Web 标准中删除,可能正在被弃用,或者可能仅出于兼容性目的而保留。避免使用它,并尽可能更新现有代码;请参阅此页面底部的 兼容性表格 以指导您的决策。请注意,此功能可能随时停止工作。

非标准: 此功能是非标准的,并且不在标准轨道上。不要在面向 Web 的生产站点上使用它:它不会对每个用户都起作用。实现之间也可能存在很大的不兼容性,并且行为将来可能会发生变化。

getImmediateState() 方法是 VRDisplay 接口的方法,它返回当前瞬时位置传感器状态。这仅适用于某些特殊用途,例如采样手部方向传感器的即时位置 - 或者至少在将来会是这样。

对于大多数标准用途,您可能希望改用 PositionSensorVRDevice.getState

语法

js
getImmediateState()

参数

无。

返回值

一个 VRPose 对象。

示例

以下演示使用 WebVR API 在 requestAnimationFrame 循环的每一帧上更新简单 CanvasRenderingContext2D 场景的视图。更新视图数据的主要函数如下所示

js
function setView() {
  const posState = gPositionSensor.getImmediateState();
  if (posState.hasPosition) {
    posPara.textContent = `Position: x${roundToTwo(
      posState.position.x,
    )} y${roundToTwo(posState.position.y)} z${roundToTwo(posState.position.z)}`;
    xPos = -posState.position.x * WIDTH * 2;
    yPos = posState.position.y * HEIGHT * 2;
    zPos = -posState.position.z > 0.01 ? -posState.position.z : 0.01;
  }

  if (posState.hasOrientation) {
    orientPara.textContent = `Orientation: x${roundToTwo(
      posState.orientation.x,
    )} y${roundToTwo(posState.orientation.y)} z${roundToTwo(
      posState.orientation.z,
    )}`;
    xOrient = posState.orientation.x * WIDTH;
    yOrient = -posState.orientation.y * HEIGHT * 2;
    zOrient = posState.orientation.z * 180;
  }
}

在这里,我们使用 getImmediateState() 获取一个 VRPose 对象并将其存储在 posState 中(实际的实时演示使用 getState(),但目前两者似乎都做相同的事情)。然后,我们使用 VRPose.positionVRPose.orientation 检查当前帧中是否存在位置和方向信息(例如,如果头戴式显示器关闭或未指向位置传感器,则这些返回 null,这会导致错误)。

然后,我们输出 x、y 和 z 位置以及方向值以供参考,并使用这些值更新 xPosyPoszPosxOrientyOrientzOrient 变量,这些变量用于在每一帧上更新场景渲染。

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

参见