ARCS.js Un Framework Web pour développer des applications de réalité augmentée

Documents pareils
Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

Devenez un véritable développeur web en 3 mois!

Compte Rendu d intégration d application

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

4. SERVICES WEB REST 46

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

BIRT (Business Intelligence and Reporting Tools)

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

< Atelier 1 /> Démarrer une application web

les techniques d'extraction, les formulaires et intégration dans un site WEB

Architecture Orientée Service, JSON et API REST

BES WEBDEVELOPER ACTIVITÉ RÔLE

Module BD et sites WEB

TP1. Outils Java Eléments de correction

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Mise en œuvre des serveurs d application

Mercredi 15 Janvier 2014

1. La plate-forme LAMP

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Un jour, une question Réponse à une problématique issue de la liste GTA *

Architectures web/bases de données

bbc Launch Pad Juillet 2011 Version 10.0

Évaluation et implémentation des langages

TP JAVASCRIPT OMI4 TP5 SRC

workshop javascript crm

Modèle de cahier des charges pour un appel d offres relatif à une solution de gestion des processus métier (BPM)

Installer Enterprise Miner 5.1 en SAS environnement Windows

Vulgarisation Java EE Java EE, c est quoi?

Alfstore workflow framework Spécification technique

Créer une base de données vidéo sans programmation (avec Drupal)

FLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze

FORMATION TALEND. Page 1 sur 9

Créer un site Web : mode d emploi Sous SPIP, avec le squelette «établissement» de l académie de Versailles

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Architectures Web Services RESTful

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Web Tier : déploiement de servlets

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Optimiser pour les appareils mobiles

Censio Tutorial Sharepoint Cloud Connector exporter les données d un fichier plat dans Sharepoint Online. Version 1.

Présentation du Framework BootstrapTwitter

SOUTENANCE ORALE RAPPORT DE PROJET D INFORMATIQUE

HTML5. Développement d applications Web. Visual Studio 2015 et TFS. L art et la manière. avec. Philippe DIDIERGEORGES

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

Par KENFACK Patrick MIF30 19 Mai 2009

Bien architecturer une application REST

Document Object Model (DOM)

Annexe : La Programmation Informatique

Patrons de Conception (Design Patterns)

Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales

SYSTÈMES D INFORMATIONS

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Programmation Internet Cours 4

DOSSIER SOLUTION CA ERwin Modeling. Comment gérer la complexité des données et améliorer l agilité métier?

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

Serveur d Applications Web : WebObjects

Application Web et J2EE

Pack Fifty+ Normes Techniques 2013

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Ajax, RIA et HTML Prise en charge d Ajax

HTML. Notions générales

Présentation du PL/SQL

Introduction aux «Services Web»

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Intégration de systèmes

ISTEX-SNU. ISTEX en quelques clics dans votre portail documentaire. Séminaire technique ISTEX 18 mars 2015

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Tp 1 correction. Structures de données (IF2)

Dans l'article précédent, vous avez appris

Formulaire pour envoyer un mail

APIs de table pour SQL Server

Europresse.com. Pour bibliothèque d enseignement Pour bibliothèque publique. Consulter facilement la presse. Guide version 1.

Catalogue Formations Jalios

Livre Blanc WebSphere Transcoding Publisher

Environnements de Développement

Découvrir Drupal. Les meilleurs thèmes et modules Drupal (présenta5on démo)

Projet en nouvelles technologies de l information et de la communication

Formation : WEbMaster

Automatisation de l administration système

TP1 : Initiation à Java et Eclipse

Technologies Web avancées. ING1 SIGL Technologies Web avancées

Environnements de développement (intégrés)

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

Google Tag Manager v2 v1 dispo sur GTM pour les nuls dispo sur

Introduction aux concepts d ez Publish

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

Systeme d'exploitation

Transcription:

ARCS.js Un Framework Web pour développer des applications de réalité augmentée Jean-Yves Didier didier@ufrst.univ-evry.fr Jean-Yves Didier Tutoriel ARCS.js 1/30

1 Concepts 2 Architecture du framework 3 Développer les composants 4 Décrire une application Jean-Yves Didier Tutoriel ARCS.js 2/30

ARCS.js en bref ARCS : Augmented Reality Component System Framework de programmation orienté composants ; dédié aux applications de réalité augmentée. Infrastructure technique Langage de programmation : Javascript ; Plate-formes ciblées / environnements de développement : Côté client : navigateur récent (compatible HTML5), Côté serveur : node.js. Jean-Yves Didier Tutoriel ARCS.js 3/30

Définitions Framework Cadre normatif et collection d outils pour développer des applications. Programmation orientée composants Composant : élément de logiciel (code compilé, scripts...) non auto-suffisant, sujet à composition ; Insiste sur la réutilisation du code. Réalité Augmentée Ensemble de techniques permettant de fusionner des informations réelles avec des entités virtuelles en temps interactif. Jean-Yves Didier Tutoriel ARCS.js 4/30

Modèle de composant Paradigme signal/slot Entrées : slots (méthode/fonction) ; Sorties : signaux (pas d implémentation). Composant Modèle de communication Communication synchrone ; Passage de paramètres valués. slot1(p11,p12) slot2(p21) slot3() signal1(p1) signal2() Initialisation/configuration 1 A l instanciation ; 2 Par appel de slots. Jean-Yves Didier Tutoriel ARCS.js 5/30

Modèle de communication Exemple Slot du composant a:a : function myslota() { emit mysignal1(); emit mysignal2(); } a:a b:b c:c myslota() myslotb() myslotc() Liste de connections : A.mySignal1() --> B.mySlotB() A.mySignal2() --> C.mySlotC() Jean-Yves Didier Tutoriel ARCS.js 6/30

Modèle d application Cycle de vie d une application Plusieurs états (initialisation, fonctionnement en mode nominal, passage en mode dégradé...)! État d une application Configuration et agencement (connections) des composants ; Un état de l application est appelé feuille (sheet). Contrôle de l application Par un automate (machine à état fini) ; État de l automate = configuration opérationnelle (feuille) ; Déclenchement d une transition = passage d une feuille à une autre. Jean-Yves Didier Tutoriel ARCS.js 7/30

Modèle de feuille Une structure composite Une liste d invocations de pré-connexion : En lien avec l initialisation des composants ; Une liste de connexions ; Pour établir des chaînes de traitement. Une liste d invocations de post-connexion ; Pour démarrer les traitements associés à la chaîne. Une liste d invocations de nettoyage (cleanup) : Pour s assurer de l état des composants à la fin du traitement. Jean-Yves Didier Tutoriel ARCS.js 8/30

Basculer d une configuration opérationnelle à une autre c2 c1 statea c3 stateb Feuille statea Automate (contrôleur) c1 c2 1. état initial Feuille stateb Jean-Yves Didier Tutoriel ARCS.js 9/30

Basculer d une configuration opérationnelle à une autre c2 c1 statea c3 stateb Feuille statea Automate (contrôleur) c1 c2 Feuille stateb 2. mise en place de la feuille statea (invocation de preconnexion) Jean-Yves Didier Tutoriel ARCS.js 9/30

Basculer d une configuration opérationnelle à une autre c2 c1 statea c3 stateb Feuille statea Automate (contrôleur) c1 c2 3. connexion de la feuille statea Feuille stateb Jean-Yves Didier Tutoriel ARCS.js 9/30

Basculer d une configuration opérationnelle à une autre c2 c1 statea c3 stateb Feuille statea Automate (contrôleur) c1 c2 Feuille stateb 4. invocation des post-connexions pour la feuille statea Jean-Yves Didier Tutoriel ARCS.js 9/30

Basculer d une configuration opérationnelle à une autre c2 c1 statea c3 stateb Feuille statea Automate (contrôleur) c1 c2 5. émission de jeton () Feuille stateb Jean-Yves Didier Tutoriel ARCS.js 9/30

Basculer d une configuration opérationnelle à une autre c2 c1 statea c3 stateb Feuille statea Automate (contrôleur) c1 c2 6. activation de la transition Feuille stateb Jean-Yves Didier Tutoriel ARCS.js 9/30

Basculer d une configuration opérationnelle à une autre c2 c1 statea c3 stateb Feuille statea Automate (contrôleur) c1 c2 7. bascule de l état de l automate Feuille stateb Jean-Yves Didier Tutoriel ARCS.js 9/30

Basculer d une configuration opérationnelle à une autre c2 c1 statea c3 stateb Feuille statea Automate (contrôleur) c1 c2 8. déconnexion de la feuille statea Feuille stateb Jean-Yves Didier Tutoriel ARCS.js 9/30

Basculer d une configuration opérationnelle à une autre c2 c1 statea c3 stateb Feuille statea Automate (contrôleur) c1 c2 9. mise en place de la feuille stateb Feuille stateb Jean-Yves Didier Tutoriel ARCS.js 9/30

1 Concepts 2 Architecture du framework 3 Développer les composants 4 Décrire une application Jean-Yves Didier Tutoriel ARCS.js 10/30

Arborescence Nom build components deps docs tests Contenu Scripts nécessaires au moteur d ARCS.js Répertoire des composants de l application Dépendances (scripts) requis par les composants Documentation (API moteur et composants) Répertoires des applications Jean-Yves Didier Tutoriel ARCS.js 11/30

Développer avec ARCS.js Séparation des phases de développement 1 Développement des composants : Ils peuvent être réutilisés pour d autres applications. 2 Description de l application : Elle sera chargée et interprétée par un moteur d exécution. Jean-Yves Didier Tutoriel ARCS.js 12/30

Fonctionnement du moteur Côté navigateur Étapes pour exécuter une application 1 Chargement d un fichier HTML ; 2 Exécution de require.js ; 3 Exécution de arcs browser.js, moteur d ARCS ; 4 Chargement des bibliothèques de composants ; 5 Instanciation des composants ; 6 Mise en place de la première feuille ; 7... Jean-Yves Didier Tutoriel ARCS.js 13/30

1 Concepts 2 Architecture du framework 3 Développer les composants 4 Décrire une application Jean-Yves Didier Tutoriel ARCS.js 14/30

Les bibliothèques de composants (1/3) Principe contient la définition de plusieurs composants ; se traduit sous la forme d un script (fichier) javascript ; respecte une structure particulière. Structure d une bibliothèque arcs module ( f o n c t i o n, [ dependances ] ) ; arcs module définit une bibliothèque ; fonction est la fonction exportant les composants du module ; dependances est la liste des scripts (tableau) à gérer avant de charger la bibliothèque. Jean-Yves Didier Tutoriel ARCS.js 15/30

Les bibliothèques de composants (2/3) Dépendances Contient des chaînes de caractères ou des objets : Décrit où sont les dépendances par rapport à la racine du framework. Format des dépendances Chaîne de caractères dans le cas où la dépendance est un module au format AMD (format de module javascript). Voir bibliothèque arviewer.js Objet dans le cas où un objet global est défini dans le script et est importable. Champs : name : chemin de la dépendance (sans l extension.js) ; exports : nom de l objet global exporté par la dépendance. Voir bibliothèque arucodetector.js Jean-Yves Didier Tutoriel ARCS.js 16/30

Les bibliothèques de composants (3/3) Fonction d export Prend en entrée un nombre variables de paramètres ; Le premier est toujours le module contenant le moteur d ARCS ; Les suivants sont les objets générés par les dépendances (un objet par dépendance) ; Doit retourner un objet dont les propriétés (champs) sont les constructeurs des composants. Jean-Yves Didier Tutoriel ARCS.js 17/30

Définir un composant (1/3) Définir un composant Un composant = un prototype (classe) javascript ; Ajout de traits particuliers aux composants ; Déclaration explicite des signaux et des slots. Créer un composant ARCS. Component. c r e a t e ( c o n s t r u c t e u r, [ s l o t s, [ s i g n a u x ] ] ) constructeur : constructeur du prototype Peut accepter un paramètre pour initialisation. slots : tableaux des noms de slots ; signaux : tableaux des noms de signaux. Jean-Yves Didier Tutoriel ARCS.js 18/30

Définir un composant (2/3) Émettre un signal t h i s. emit ( nomsignal, [ p a r a m e t r e s... ] ) nomsignal : nom du signal à émettre ; parametres : valeurs à passer au signal. Exemple de bibliothèque avec composant arcs module ( f u n c t i o n (ARCS) { v a r Loop = ARCS. Component. c r e a t e (... ) ; r e t u r n {Loop : Loop } ; }) ; Jean-Yves Didier Tutoriel ARCS.js 19/30

Définir un composant (3/3) Exemple de composant v a r Loop = ARCS. Component. c r e a t e ( f u n c t i o n ( ) { // c o n s t r u c t e u r t h i s. s e t I t e r a t i o n s = f u n c t i o n ( n ) { v a r i ; f o r ( i = 0 ; i < n ; i ++) { t h i s. emit ( " newiteration ", i ) ; } t h i s. emit ( " sendtoken ", "end" ) ; } ; }, [ " setiterations " ], // l i s t e des s l o t s [ " sendtoken ", " newiteration " ] // l i s t e des s i g n a u x ) ; Jean-Yves Didier Tutoriel ARCS.js 20/30

1 Concepts 2 Architecture du framework 3 Développer les composants 4 Décrire une application Jean-Yves Didier Tutoriel ARCS.js 21/30

Fichiers à mettre en place Fichiers requis Fichier HTML : permet le chargement et l exécution dans le navigateur ; Fichier JSON : description d une application. Autre fichiers Feuilles de style, etc... Fondamentalement une application Web s exécutant dans le navigateur! Jean-Yves Didier Tutoriel ARCS.js 22/30

Fichier HTML (1/2) Structure du fichier HTML <html> <head> < t i t l e>...</ t i t l e> <s c r i p t data main="../../ build/arcs_browser " data base u r l="../.." data a r c s a p p=" arcsapp.json" s r c="../../ deps/requirejs / require.js"> </ s c r i p t> </ head> <body><! r e s t e du f i c h i e r HTML ></body> </ html> Jean-Yves Didier Tutoriel ARCS.js 23/30

Fichier HTML (2/2) La balise script Format imposé ; Charge require.js, bibliothèque de chargement de modules ; Autres attributs de la balise : data-main : chemin relatif vers le moteur d ARCS.js ; data-base-url : chemin relatif vers le répertoire d installation d ARCS ; data-arcsapp : chemin relatif vers la description de l application ; Jean-Yves Didier Tutoriel ARCS.js 24/30

Structure de la description d application (1/6) Description d application { // d e s c r i p t i o n a p p l i c a t i o n " context " : { // l i s t e de b i b l i o t h è q u e s, chemin d e p u i s l a base " libraries " : [... ], // t a b l e a u a s s o c i a t i f de composants pour i n s t a n c i a t i o n " components " : {... } }, // i d e n t i f i c a t i o n de l a machine à é t a t " controller " :..., // t a b l e a u a s s o c i a t i f de f e u i l l e s "sheets" : {... } } Jean-Yves Didier Tutoriel ARCS.js 25/30

Structure de la description d application (2/6) Description des feuilles { // d e s c r i p t i o n d une f e u i l l e // l i s t e d i n v o c a t i o n s de p r e c o n n e x i o n " preconnections " : [... ], // l i s t e de c o n n e x i o n s " connections " : [... ], // l i s t e d i n v o c a t i o n s de post c o n n e x i o n " postconnections " : [... ], // l i s t e d i n v o c a t i o n s de n e t t o y a g e " cleanups " : [... ] } Instanciation d un composant // p r e m i è r e f a ç o n { "type" : "..." } // deuxième façon, en p a s s a n t un o b j e t au c o n s t r u c t e u r { "type" : "...", v a l u e :... } Jean-Yves Didier Tutoriel ARCS.js 26/30

Structure de la description d application (3/6) Exemples de description de composant " components " : { "loop" : { "type" : "Loop" }, " console " : { "type" : " Console ", "value" : "output" }, " statemachine " : { "type" : " StateMachine ", "value" : { " initial " : "start", "final" : "end", " transitions " : { "start" : { "end" : "end"} } } } } Jean-Yves Didier Tutoriel ARCS.js 27/30

Structure de la description d application (4/6) Spécifier une invocation { // s p é c i f i c a t i o n d une i n v o c a t i o n // composant s u r l e q u e l e f f e c t u e r l i n v o c a t i o n " destination " : "...", // s l o t à i n v o q u e r "slot" : "...", // v a l e u r s à p a s s e r ( t a b l e a u ) "value" : [... ] // chaque élément du t a b l e a u c o r r e s p o n d à un argument du s l o t } Jean-Yves Didier Tutoriel ARCS.js 28/30

Structure de la description d application (5/6) Exemples d invocations " postconnections " : [ { " destination " : "viewer", "slot" : " setwidgets ", "value" : [ " container ", "video" ] }, { " destination " : "viewer ", "slot" : " setfocal ", "value" : [ 6 0 0 ] }, { " destination " : "pong", "slot" : " createscene ", "value" : [ ] } ] Jean-Yves Didier Tutoriel ARCS.js 29/30

Structure de la description d application (6/6) Spécifer une connexion { // s p é c i f i c a t i o n d une c o n n e x i o n // composant à l é m i s s i o n "source " : "...", // s i g n a l émis "signal " : "...", // composant à l a r é c e p t i o n " destination " : "...", // s l o t à i n v o q u e r "slot" : "..." } Exemple de connection " connections " : [ { "source " : "video", "signal " : " onimage ", " destination " : " detector ", "slot" : "detect"} ] Jean-Yves Didier Tutoriel ARCS.js 30/30