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-17 13:57:52 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
475d4ae505f76d2d002750cb7427e6610de96771
475d4ae5
1 parent
eedb2ec2
better documentation; refactoring of video and xrviewer
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
46 additions
and
45 deletions
build/arcs.js
components/video.js
components/xrviewer.js
docs/arcs/tmpl/layout.tmpl
build/arcs.js
View file @
475d4ae
/******/
"use strict"
;
/******/
var
__webpack_modules__
=
([
/* 0 */
/***/
((
__unused_webpack_module
,
__webpack_exports__
,
__webpack_require__
)
=>
{
...
...
components/video.js
View file @
475d4ae
This diff is collapsed. Click to expand it.
components/xrviewer.js
View file @
475d4ae
import
ARCS
from
'../build/arcs.js'
;
import
*
as
THREE
from
'../deps/three.js/index.js'
;
//import FrustumCamera from '../deps/three.js/frustumcamera
.js';
import
ARButton
from
'../deps/three.js/ARButton
.js'
;
var
XRViewer
;
/**
* @class
A
RViewer
* @classdesc Simple compositing viewer for augmented reality
* @class
X
RViewer
* @classdesc Simple compositing viewer for augmented reality
using WebXR
*/
XRViewer
=
ARCS
.
Component
.
create
(
/** @lends
A
RViewer.prototype */
function
()
{
let
renderer
,
scene
3d
,
camera3d
;
/** @lends
X
RViewer.prototype */
function
(
config
)
{
let
renderer
,
scene
,
camera
;
let
sceneId
;
let
container
;
let
_config
=
config
||
{};
// scenegraph initializations
scene3d
=
new
THREE
.
Scene
();
container
=
(
_config
.
rootElement
!==
undefined
)?
document
.
querySelector
(
_config
.
rootElement
):
document
.
body
;
container
=
container
||
document
.
body
;
/**
* Initializes the widgets (HTML elements) needed as a basis
* for the viewer.
* @param cName {string} id of the container that will enclose the scene renderer
* @param vName {string} id of the element at the source of the video stream
* @slot
* @function ARViewer#setWidgets
*/
this
.
setWidgets
=
function
()
{
// scenegraph initializations
scene
=
new
THREE
.
Scene
();
renderer
=
new
THREE
.
WebGLRenderer
();
renderer
.
setClearColor
(
0x000000
,
1
);
renderer
.
setSize
(
container
.
width
,
container
.
height
);
container
.
appendChild
(
renderer
.
domElement
);
renderer
=
new
THREE
.
WebGLRenderer
();
//renderer.setClearColor(0x000000, 1);
renderer
.
setSize
(
container
.
width
,
container
.
height
);
renderer
.
setPixelRatio
(
window
.
devicePixelRatio
);
renderer
.
xr
.
enabled
=
true
;
container
.
appendChild
(
renderer
.
domElement
);
container
.
appendChild
(
ARButton
.
createButton
(
renderer
));
var
theta
=
45
;
camera3d
=
new
THREE
.
PerspectiveCamera
(
theta
,
container
.
width
/
container
.
height
,
0.01
,
10
);
scene3d
.
add
(
camera3d
);
var
theta
=
45
;
camera
=
new
THREE
.
PerspectiveCamera
(
theta
,
container
.
width
/
container
.
height
,
0.01
,
10
);
var
_light
=
new
THREE
.
DirectionalLight
(
0xffffff
);
_light
.
position
.
set
(
0
,
5
,
5
);
scene3d
.
add
(
_light
);
updateAspectRatio
();
};
var
_light
=
new
THREE
.
DirectionalLight
(
0xffffff
);
_light
.
position
.
set
(
0
,
5
,
5
);
scene
.
add
(
_light
);
/**
* Adds new objects to the current 3D scene
* @param scene {object} 3D object as defined by Three.js to add to the scene.
* @slot
* @function
A
RViewer#addScene
* @function
X
RViewer#addScene
*/
this
.
addScene
=
function
(
scene
)
{
scene
3d
.
add
(
s
cene
);
this
.
addScene
=
function
(
s
ubS
cene
)
{
scene
.
add
(
subS
cene
);
};
/**
* Removes an object from the current 3D scene
* @param scene {object} 3D object as defined by Three.js to remove from the scene.
* @slot
* @function
A
RViewer#removeScene
* @function
X
RViewer#removeScene
*/
this
.
removeScene
=
function
(
scene
)
{
scene3d
.
remove
(
scene
);
this
.
removeScene
=
function
(
subScene
)
{
scene
.
remove
(
subScene
);
};
this
.
start
=
function
()
{
renderer
.
setAnimationLoop
(
render
);
};
/**
* Triggers the rendering of the composite scene
* @function
A
RViewer#render
* @function
X
RViewer#render
* @slot
*/
this
.
render
=
function
()
{
renderer
.
autoClear
=
false
;
renderer
.
clear
();
let
render
=
function
(
time
,
frame
)
{
this
.
emit
(
"preRender"
,
time
,
frame
);
renderer
.
render
(
scene3d
,
camera3d
);
this
.
emit
(
"postRender"
,
time
,
frame
);
}
},
/** @lends ARViewer.slots */
[
'setWidgets'
,
'setFocal'
,
'viewAll'
,
'setSize'
,
'addScene'
,
'resetCamera'
,
'removeScene'
,
'render'
,
'keepAspectRatio'
,
'setExtrinsics'
,
'setIntrinsics'
'setWidgets'
,
'addScene'
,
'removeScene'
,
'render'
,
],
[]
[
'preRender'
,
'postRender'
]
);
export
default
{
XRViewer
:
XRViewer
};
...
...
docs/arcs/tmpl/layout.tmpl
View file @
475d4ae
...
...
@@ -15,7 +15,7 @@
<body>
<header>
<a
href=
"index.html"
style=
"font-size: 200%; text-decoration: none; font-weight: bold; color: #6F6FFF;"
><img
src=
"arcs_logo.png"
alt=
"ARCS logo"
>
.js
</a>
<span
style=
"font-size: 250%; margin-left:2em; font-weight: bold; color: #6F6FBB;"
>
Augmented Reality Component System
</span>
<a
href=
"index.html"
style=
"font-size: 200%; text-decoration: none; font-weight: bold; color: #6F6FFF;"
><img
src=
"
../
arcs_logo.png"
alt=
"ARCS logo"
>
.js
</a>
<span
style=
"font-size: 250%; margin-left:2em; font-weight: bold; color: #6F6FBB;"
>
Augmented Reality Component System
</span>
</header>
<div
id=
"main"
>
...
...
Please
register
or
login
to post a comment