提交 1acd3d89 编写于 作者: M Morgan Villedieu

Add controller matrix polyfill and viewMatrix

上级 1f2c53ad
......@@ -2,7 +2,7 @@
if( 'xr' in navigator ) {
console.log('Helio: Chrome m73 WebXR Polyfill:', navigator.xr);
console.log('Helio - (Chrome m73) WebXR Polyfill', navigator.xr);
// WebXRManager - XR.supportSession() Polyfill - WebVR.js line 147
......@@ -10,12 +10,12 @@ if( 'xr' in navigator ) {
if( 'supportsSessionMode' in navigator.xr ) {
const temp = navigator.xr.requestSession.bind(navigator.xr);
const tempRequestSession = navigator.xr.requestSession.bind(navigator.xr);
navigator.xr.requestSession = function (sessionType) {
return new Promise((resolve, reject) => {
temp({ mode: sessionType })
tempRequestSession({ mode: sessionType })
.then(session => {
// WebXRManager - xrFrame.getPose() Polyfill - line 279
......@@ -26,11 +26,40 @@ if( 'xr' in navigator ) {
return tempRequestAnimationFrame(function (time, frame) {
// WebXRManager - xrFrame.getViewerPose() Polyfill - line 279
// Transforms view.viewMatrix to view.transform.inverse.matrix
const tempGetViewerPose = frame.getViewerPose.bind(frame);
frame.getViewerPose = function ( referenceSpace ) {
const pose = tempGetViewerPose( referenceSpace );
pose.views.forEach(view => {
view.transform = {
inverse: {
matrix: view.viewMatrix
}
}
})
return pose;
}
// WebXRManager - xrFrame.getPose() Polyfill - line 259
frame.getPose = function (targetRaySpace, referenceSpace) {
console.log('targetRay', targetRaySpace)
const inputPose = frame.getInputPose(targetRaySpace, referenceSpace);
inputPose.transform = {
matrix: inputPose.targetRay.transformMatrix
}
return frame.getInputPose(targetRaySpace, referenceSpace);
return inputPose;
}
......
......@@ -227,17 +227,7 @@ function WebXRManager( renderer ) {
var viewMatrix;
if ( 'transform ' in view ) {
viewMatrix = view.transform.inverse.matrix;
} else {
// DEPRECATED
viewMatrix = view.viewMatrix;
}
viewMatrix = view.transform.inverse.matrix;
var camera = cameraVR.cameras[ i ];
camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
......@@ -270,21 +260,7 @@ function WebXRManager( renderer ) {
if ( inputPose !== null ) {
if ( 'transform' in inputPose ) {
controller.matrix.fromArray( inputPose.transform.matrix );
} else if ( 'targetRay' in inputPose ) {
controller.matrix.elements = inputPose.targetRay.transformMatrix;
} else if ( 'pointerMatrix' in inputPose ) {
// DEPRECATED
controller.matrix.elements = inputPose.pointerMatrix;
}
controller.matrix.fromArray( inputPose.transform.matrix );
controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
controller.visible = true;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册