RelativeOrientationSensor
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sensor APIs の RelativeOrientationSensor
インターフェイスは、地球の参照用座標系は考慮せず、デバイスの物理的な向きを表します。
このセンサーを使用するには、ユーザーが 権限 API により 'accelerometer'
および 'gyroscope'
デバイスセンサーを使用する許可を与える必要があります。さらに、この機能はサーバーで設定された 権限ポリシー でブロックされる可能性があります。
コンストラクター
RelativeOrientationSensor()
-
新しい
RelativeOrientationSensor
オブジェクトを生成します。
インスタンスプロパティ
固有のプロパティはありません。祖先の OrientationSensor
および Sensor
からプロパティを継承します。
インスタンスメソッド
固有のメソッドはありません。祖先の OrientationSensor
および Sensor
からメソッドを継承します。
イベント
固有のイベントはありません。祖先の Sensor
からイベントを継承します。
例
基本的な例
以下の例は、だいたい Intel の Orientation Phone demo をもとにしており、1 秒に 60 回の周期を設定して RelativeOrientationSensor
のインスタンスを生成しています。
メモ:
もとにした Intel のデモでは AbsoluteOrientationSensor
を用いています。測定ごとに、OrientationSensor.quaternion
を用いて電話の視覚的なモデルを回転しています。
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
を使用するとよいです。
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