DOM

インターフェイス

RelativeOrientationSensor インターフェイス

  編集:2022.04.07 by T.A.

MS(en-US)

Sensor API の RelativeOrientationSensorインターフェイスは、地球の参照座標系に関係なく、デバイスの物理的な向きを記述します。

このセンサーを使用するには、ユーザーは「accelerometer(加速度計)」に権限を付与する必要があります。および「gyroscope(ジャイロスコープ)」デバイスセンサーは、Permissions API を介して提供されます。

機能ポリシーが機能の使用をブロックしている場合は、コードがサーバーに設定されているポリシーと矛盾していることが原因です。これは、ユーザーに表示されるものではありません。Feature-Policy HTTPヘッダーの記事には、実装手順が含まれています。

コンストラクター
new RelativeOrientationSensor()
新しい RelativeOrientationSensor オブジェクトを作成します。
プロパティ

特定のプロパティはありません。祖先の OrientationSensorSensor からメソッドを継承します。

メソッド

特定の方法はありません。祖先の OrientationSensorSensor からメソッドを継承します。

イベント

特定のイベントはありません。祖先である Sensor からイベントを継承します。

基本例
次の例は、Intel の OrientationPhone デモに大まかに基づいていて、1 秒間に 60 回の頻度で RelativeOrientationSensor をインスタンス化します。

注: これに基づくIntelデモでは、AbsoluteOrientationSensor を使用します。読み取りのたびに、OrientationSensor.quaternion を使用して電話のビジュアルモデルを回転させます。

const options = { frequency: 60, referenceFrame: 'device' };
const sensor = new RelativeOrientationSensor(options);

sensor.addEventListener('reading', () => {
  // model is a Three.js object instantiated elsewhere.
  model.quaternion.fromArray(sensor.quaternion).inverse();
});
sensor.addEventListener('error', error => {
  if (event.error.name == 'NotReadableError') {
    console.log("Sensor is not available.");
  }
});
sensor.start();
権限の例
向きセンサーを使用するには、複数のデバイス センサーの権限をリクエストする必要があります。パーミッション インターフェイスは promise を使用するため、権限をリクエストする良い方法は、Promise.all を使用することです。
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("No permissions to use RelativeOrientationSensor.");
         }
   });

テスト
HTML:

ここに表示
スクリプト組み込み:



スクリプト:


スクリプト:



表示内容:
表示内容: