Toggle navigation
Toggle navigation
This project
Loading...
Sign in
arcs
/
arcs.js
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
3
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Jean-Yves Didier
2021-12-22 22:44:39 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
eb6f2e6cac82fbaec82fd5c22b331d9d0b21825d
eb6f2e6c
1 parent
ba8c4c3f
testing of webxr module
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
11 deletions
apps/xroffset/arcsapp.json
apps/xroffset/webxr.html
components/xrviewer.js
apps/xroffset/arcsapp.json
View file @
eb6f2e6
...
...
@@ -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"
:
[]
...
...
apps/xroffset/webxr.html
View file @
eb6f2e6
...
...
@@ -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"
>
...
...
components/xrviewer.js
View file @
eb6f2e6
...
...
@@ -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
);
}
...
...
Please
register
or
login
to post a comment