RelativeOrientationSensor

Sensor APIsRelativeOrientationSensor インターフェイスは、地球の参照用座標系は考慮せず、デバイスの物理的な向きを表します。

このセンサーを使用するには、ユーザーが Permissions API により 'accelerometer' および 'gyroscope' デバイスセンサーを使用する許可を与える必要があります。さらに、この機能はサーバーで設定された Permissions Policy でブロックされる可能性があります。

EventTarget Sensor OrientationSensor RelativeOrientationSensor

コンストラクター

RelativeOrientationSensor()

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

インスタンスプロパティ

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

インスタンスメソッド

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

イベント

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

基本的な例

以下の例は、だいたい Intel の Orientation Phone demo をもとにしており、1 秒に 60 回の周期を設定して RelativeOrientationSensor のインスタンスを生成しています。

メモ: もとにした Intel のデモでは AbsoluteOrientationSensor を用いています。測定ごとに、OrientationSensor.quaternion を用いて電話の視覚的なモデルを回転しています。

js
const options = { frequency: 60, referenceFrame: "device" };
const sensor = new RelativeOrientationSensor(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 RelativeOrientationSensor();
Promise.all([
  navigator.permissions.query({ name: "accelerometer" }),
  navigator.permissions.query({ name: "gyroscope" }),
]).then((results) => {
  if (results.every((result) => result.state === "granted")) {
    sensor.start();
    // ...
  } else {
    console.log("RelativeOrientationSensor を使用する許可がありません。");
  }
});

仕様書

Specification
Orientation Sensor
# relativeorientationsensor-interface

ブラウザーの互換性

BCD tables only load in the browser