AbsoluteOrientationSensor Test
by Csaba Hellinger
JavaScript
const log = (...args) => {
console.log(...args);
document.body.innerText += `\n` + args.map(String).join(" ");
};
const options = { frequency: 60, referenceFrame: "device" };
if (!window.AbsoluteOrientationSensor) {
log("AbsoluteOrientationSensor is not defined");
}
const sensor = new AbsoluteOrientationSensor(options);
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.addEventListener("reading", () => {
// model is a Three.js object instantiated elsewhere.
//model.quaternion.fromArray(sensor.quaternion).inverse();
log("sensor reading", sensor.quaternion);
});
sensor.addEventListener("error", (event) => {
log("sensor error", event.error);
});
sensor.start();
log("started");
} else {
log("No permissions to use AbsoluteOrientationSensor.");
}
})
.catch((err) => {
log("permissions", err);
});