AbsoluteOrientationSensor

Sensor APIsAbsoluteOrientationSensor インターフェイスは、地球の参照用座標系に対するデバイスの物理的な向きを表します。

このセンサーを使用するには、ユーザーが Permissions API により 'accelerometer''gyroscope''magnetometer' デバイスセンサーを使用する許可を与える必要があります。

この機能はサーバーで設定された Permissions Policy でブロックされる可能性があります。

EventTarget Sensor OrientationSensor AbsoluteOrientationSensor

コンストラクター

AbsoluteOrientationSensor()

新しい AbsoluteOrientationSensor オブジェクトを生成します。

インスタンスプロパティ

固有のプロパティはありません。祖先の OrientationSensor および Sensor からプロパティを継承します。

インスタンスメソッド

固有のメソッドはありません。祖先の OrientationSensor および Sensor からメソッドを継承します。

イベント

固有のイベントはありません。祖先の Sensor からイベントを継承します。

基本的な例

以下の例は、だいたい Intel の Orientation Phone demo をもとにしており、1 秒に 60 回の周期を設定して AbsoluteOrientationSensor のインスタンスを生成しています。測定ごとに、OrientationSensor.quaternion を用いて電話の視覚的なモデルを回転しています。

js
const options = { frequency: 60, referenceFrame: "device" };
const sensor = new AbsoluteOrientationSensor(options);

sensor.addEventListener("reading", () => {
  // model は別の場所で生成した Three.js のオブジェクト
  model.quaternion.fromArray(sensor.quaternion).inverse();
});
sensor.addEventListener("error", (error) => {
  if (event.error.name === "NotReadableError") {
    console.log("センサーが利用できません。");
  }
});
sensor.start();

許可の例

向きセンサーを使用するには、複数のデバイスセンサーを使用する許可を要求する必要があります。Permissions インターフェイスは Promise を使用するので、許可を要求するのには Promise.all を使用するとよいです。

js
const sensor = new AbsoluteOrientationSensor();
Promise.all([
  navigator.permissions.query({ name: "accelerometer" }),
  navigator.permissions.query({ name: "magnetometer" }),
  navigator.permissions.query({ name: "gyroscope" }),
]).then((results) => {
  if (results.every((result) => result.state === "granted")) {
    sensor.start();
    // …
  } else {
    console.log("AbsoluteOrientationSensor を使用する許可がありません。");
  }
});

仕様書

Specification
Orientation Sensor
# absoluteorientationsensor-interface

ブラウザーの互換性

BCD tables only load in the browser