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