"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
20160713 webvr
1.
2.
3.
4.
5.
6. Proudly non-profit, Mozilla makes products
like Firefox with a mission to keep the power
of the Web in the hands of users everywhere.
Mozilla Mission (https://www.mozilla.org/en-US/mission/)
7. Our mission is to promote openness,
innovation & opportunity on the Web.
Mozilla Mission(https://www.mozilla.org/en-US/mission/)
30. navigator.getVRDisplays().then(function (displays) {
if (!displays.length) {
return Promise.reject("No display is found");
}
return displays.length[0];
}).catch(function (err) {
console.error('Could not get VRDisplays', err.stack);
});
VRディスプレイの検出
31. var eyeParameter = vrDisplay.getEyeParameters("left");
// "left" か "right" が指定できる
var width = eyeParameter.renderWidth;
var height = eyeParameter.renderHeight;
視野情報の取得(例は左の視野情報を取得している)
32. var webglCanvas = document.querySelector("#webglcanvas");
var enterVRBtn = document.querySelector("#entervr");
enterVRBtn.addEventListener("click", function () {
// webglCanvas を vrDisplay に表示するよう要求
vrDisplay.requestPresent({source: webglCanvas});
});
vrDisplay.exitPresent(); // 表示をやめるメソッド
VRディスプレイに表示する canvas要素を設定
33. var id = vrDisplay.requestAnimationFrame(onAnimationFrame); // 登録
function onAnimationFrame(){
id = vrDisplay.requestAnimationFrame(onAnimationFrame);
var pose = vrDisplay.getPose();
// フレームの処理
vrDisplay.submitFrame(pose);
}
vrDisplay.cancelRequestAnimationFrame(id); // コールバックのキャンセル
アニメーションループ
34. var eyeParameters = vrDisplay.getEyeParameters('left');//視野情報の取得
var eyeOffset = eyeParameters.offset; // 左右視野の差
var fieldOfView = eyeParameters.fieldOfView; // 視野角の情報
// 視野角のパラメータ(中央からの角度)
var up = fieldOfView.upDegrees;
var down = fieldOfView.downDegrees;
var left = fieldOfView.leftDegrees;
var right = fieldOfView.rightDegrees;
視野の情報
35. vrDisplay.resetPose(); // 今の位置、向きを原点 / 起点に設定
var pose = vrDisplay.getPose(); // 姿勢の情報を取得
var timeStamp = pose.timestamp; // センサーから値が取得された時刻
var position = pose.position; // 位置を3次元ベクトルで取得
var orientation = pose.orientation; // 向きを4次元ベクトルで取得
var x = position[0], y = position[1], z = position[2];
センサーの値を取得(対応していない時は null が返る)