Jean-Yves Didier

testing of webxr module

......@@ -14,12 +14,18 @@
}
}
},
"trigger" : { "type": "Filter", "value": {
"signals": [ "onSessionStarted" ],
"slots" : [{
"slot": "triggerCamera",
"func": "(t,c,f) => {self.xr = self.xr || false; if(f && !self.xr) { self.xr = true; self.emit(\"onSessionStarted\"); } } "
}]
"filters" : { "type": "Filter", "value": {
"signals": [ "onSessionStarted","updateProjection" ],
"slots" : [
{
"slot": "triggerCamera",
"func": "(t,c,f) => {self.xr = self.xr || false; if(f && !self.xr) { self.xr = true; self.emit(\"onSessionStarted\"); } } "
},
{
"slot": "computeProjection",
"func": "(t,c,f) => {let au,av,u0,v0,m;m=c.projectionMatrix.elements;au=m[0]/2;av=m[5]/2;u0=m[8]/2;v0=m[9]/2;self.emit(\"updateProjection\",au,av,u0,v0);}"
}
]
}
},
"display" : { "type": "UIMapper", "value": {
......@@ -28,6 +34,12 @@
{ "param" : "1.position.x", "field" : "#x.innerHTML", "format": "e=>e.toFixed(2)" },
{ "param" : "1.position.y", "field" : "#y.innerHTML", "format": "e=>e.toFixed(2)" },
{ "param" : "1.position.z", "field" : "#z.innerHTML", "format": "e=>e.toFixed(2)" }
],
"updateProjection" : [
{ "param" : "0", "field": "#Au.innerHTML", "format": "e=>e.toFixed(2)"},
{ "param" : "1", "field": "#Av.innerHTML", "format": "e=>e.toFixed(2)"},
{ "param" : "2", "field": "#u0.innerHTML", "format": "e=>e.toFixed(2)"},
{ "param" : "3", "field": "#v0.innerHTML", "format": "e=>e.toFixed(2)"}
]
}
}
......@@ -54,8 +66,10 @@
],
"connections" : [
{ "source": "viewer", "signal": "onRender", "destination": "display", "slot": "updatePosition"},
{ "source": "viewer", "signal": "onRender", "destination": "filters", "slot": "computeProjection"},
{ "source": "viewer", "signal": "onRender", "destination": "trigger", "slot": "triggerCamera"},
{ "source": "trigger", "signal": "onSessionStarted", "destination": "video", "slot": "start"}
{ "source": "filters", "signal": "onSessionStarted", "destination": "video", "slot": "start"},
{ "source": "filters", "signal": "updateProjection", "destination": "display", "slot": "updateProjection"}
],
"cleanups" : []
......
......@@ -17,6 +17,11 @@
<p>X <span id="x"></span></p>
<p>Y <span id="y"></span></p>
<p>Z <span id="z"></span></p>
<p>P <span id="p"></span></p>
<p>Au <span id="au"></span></p>
<p>Av <span id="av"></span></p>
<p>u0 <span id="u0"></span></p>
<p>v0 <span id="v0"></span></p>
</div>
<video width=320 height=240 autoplay=true></video>
<div class="info" style="display: none;" id="notification">
......
......@@ -55,9 +55,9 @@ XRViewer = ARCS.Component.create(
scene.add(_light);
renderer.domElement.addEventListener('webglcontextlost', (event) => {
/*renderer.domElement.addEventListener('webglcontextlost', (event) => {
console.log(event);
});
});*/
/**
......@@ -102,7 +102,7 @@ XRViewer = ARCS.Component.create(
{ x: q.x, y: q.y, z: q.z, w: q.w}
)
);
// we will also have to modify the orientation
xrSpace = xrSpace.getOffsetReferenceSpace(
new XRRigidTransform(
{ x: pos.x, y: pos.y, z:pos.z, w:1},
......@@ -129,7 +129,15 @@ XRViewer = ARCS.Component.create(
let render = function (time, frame) {
renderer.xr.updateCamera(camera);
self.emit("onRender",time,camera,frame);
if (frame) {
//console.log(JSON.stringify(renderer.xr.getCamera().position));
let pose = frame.getViewerPose(renderer.xr.getReferenceSpace());
if (pose) {
console.log(pose.views[0].projectionMatrix);
}
self.emit("onRender",time,renderer.xr.getCamera(),frame);
}
renderer.render(scene, camera);
}
......