Animation pédagogique interactive en HTML5 et JavaScript, Etude

Transcription

Animation pédagogique interactive en HTML5 et JavaScript, Etude
Animation pédagogique
interactive en HTML5 et
JavaScript, Etude
prospective.
Projet n° 20
Réalisé par :
 Olivier Fauvel-Jaeger
 Frédéric Guégan
 Giacomo Rombaut
Professeurs encadrants :
 Peter Sander
 Jean-Paul Stromboni
Projet n° 20 – 22/01/2013
Page 1
Sommaire
Introduction ................................................................................................ 3
1.
Evolution de l’animation web, de Flash à HTML5 .............................................. 4
2.
Objectifs et contraintes ............................................................................ 5
3.
Réalisation d’une animation JavaScript. Pourquoi ? ........................................... 6
a.
Box2D une bibliothèque puissante ............................................................. 7
b.
Réalisation d’une animation JavaScript à l’aide de Box2D ................................ 8
c.
Réalisation d’une animation JavaScript sans bibliothèque externe ..................... 10
d.
« Avec ou sans Box2D » une question de goût .............................................. 12
4.
Organisation du travail ............................................................................. 13
5.
Conclusion et retour sur expérience............................................................. 14
Références ................................................................................................. 15
Projet n° 20 – 22/01/2013
Page 2
Introduction
Dans le cadre de la Quatrième année du cursus Science Informatique, un projet
réalisé en janvier, par groupe de 3 ou 4 élève, permet d'assimiler, en les utilisant de façon
personnelle et originale, les savoirs et des savoir-faire des cours et des TD/TP.
Dans le cadre du cours SI4 "Introduction à la Commande par Ordinateur", les étudiants
sont amenés à travailler avec la technologie Flash. Dans le cadre de l'évolution des standards
du web cette technologie est amenée à disparaitre en profit du html5.
Projet n° 20 – 22/01/2013
Page 3
1. Evolution de l’animation web, de Flash à HTML5
De son invention à son déclin, le Flash a largement évolué, voyons comment HTML5 tend à
remplacer cette technologie.
Depuis sa création en 1991 le web connecte le monde, mais malgré l’évolution des
technologies les pages web restent tristement statique. C’est flash le premier qui apporte
du mouvement dans nos page web en proposant pour la première fois ce que l’on appelle
aujourd’hui une application internet riche.
En 1998, flash est découvert par le grand public, c’est à partir de ce moment que
commence son expansion sur nos ordinateurs. Ce logiciel permet de manipuler des
graphiques vectoriels, de bitmaps et de scripts ActionScript qui sont utilisés pour les
applications web, les jeux et les vidéos.
Au fil des années, la technologie Flash est devenue une des méthodes les plus
populaires pour ajouter des animations et des objets interactifs à une page web ; en
effet, aujourd’hui flash est installé sur 96 % des ordinateurs dans le monde.
Utilisateurs de Flash
14%
4%
1%
81%
Version 11.x
Projet n° 20 – 22/01/2013
Version 10.x
Non installé
Autre version
Page 4
Il faudra attendre 2008 pour qu’une alternative se présente et le w3c qui intervient
en proposant HTML5 et la balise <canvas> qui offre un espace de dessin et d’animation.
Aujourd’hui plus de 88% des utilisateurs possèdent un navigateur compatible html5,
et se chiffre est en hausse. Face à la bataille d’Apple contre la technologie Flash, Adobe a
abandonné l’application Flash pour mobile est se concentre aujourd’hui sur la technologie
html5.
En un an le nombre de site utilisant Flash est passé de 28% à 24% et se nombre ne
cesse de baisser. Html5 est en bonne voie pour remplacer Flash dans le domaine de
l’animation web.
2. Objectifs et contraintes
C’est pourquoi, suite à ce déclin de flash, nous nous demandons dans quelle mesure
est-il possible de simuler en html5 des processus physiques, chimiques, scientifiques,
techniques… à des fins pédagogiques, voir par exemple les 'phets' que l'on trouve sur le site
de l'université de Boulders Colorado (cf. références).
Pour répondre à cette question, nous avons comme objectif de refaire l’animation
Flash ‘Lunar Lander’ du cours « Introduction à la commande par ordinateur » en se limitant
aux technologies HTML5 et JavaScript.
Projet n° 20 – 22/01/2013
Page 5
Au cours de notre étude préliminaire nous avons découvert la bibliothèque JavaScript
Box2D spécialisée dans les jeux qui simule un moteur physique. Suite à l’apparente
simplicité de cette bibliothèque nous avons donc décidé de réaliser ce jeu pédagogique à
la fois à l’aide de cette bibliothèque mais aussi sans celle-ci, et de comparé la facilité de
développement, la qualité du rendu ainsi que l’intérêt pédagogique des deux solutions.
Un autre de nos objectifs et de reprendre les équations différentielles du second degré
de l’application ‘Lunar Lander’ en flash afin de pouvoir reproduire les mêmes mouvements
et obtenir une simulation physique réaliste.
Enfin, pour aider les étudiants et les professeurs à développer des animations à l’aide
des technologies HTML5 et JavaScript, nous avons décidé de réaliser deux tutoriels sur
l’introduction à l’animation en HTML5 et JavaScript dont un à l’aide de la bibliothèque
Box2D. De plus, en complément du tutoriel cette bibliothèque, nous ajoutons un espace de
développement simplifié adapté aux animations JavaScript comprenant certaines fonctions
de bases pour l’animation réalisées en JavaScript.
3. Réalisation d’une animation JavaScript. Pourquoi ?
Comme nous l’avons dit précédemment, flash vient à disparaître, c’est pourquoi nous
réalisons cette animation avec JavaScript.
En effet, aujourd’hui, 88 % des utilisateurs d’internet ont accès à cette technologie et ce
chiffre est en hausse. Voici par exemple l’ensemble des navigateurs étant compatible avec
De plus, HTML5 et JavaScript sont les seules technologies pouvant rivalisées face à flash.
Un autre avantage conséquent est le fait que cette technologie est libre d’accès
contrairement aux logiciels Adobe payants permettant de développer avec flash.
Projet n° 20 – 22/01/2013
Page 6
a. Box2D une bibliothèque puissante
Pour réaliser cette animation, nous avons décidé de la réaliser selon deux façons, l’une
sans l’aide d’une bibliothèque externe, l’autre à l’aide d’une bibliothèque JavaScript :
Box2D.
Box2D est un moteur physique open source développé par Erin Catto et mis à jour par une
large communauté
Ce moteur physique permet de se rapprocher d’une vrai simulation physique, en effet
celui-ci permet de définir des objets ayant des propriétés physiques avec des unités réelles
(mètres, kilogrammes, secondes) mais aussi comme de nombreux moteur physique, Box2D
est appelé pour effectuer une simulation sur un certain laps de temps en prenant compte
de la vitesse actuelle des objets, de leurs positions, des forces qu’ils subissent (contact,
gravité, friction, etc). Le programme principal peut alors se servir des coordonnées et
angles calculés pour afficher les objets à l'écran.
A la base écrit en C++, ce moteur physique a été traduit par la communauté en de
nombreux autres langages tels que Flash, Java, Flex et particulièrement en JavaScript sous
le nom de Box2DWeb.
De plus, on retrouve cette technologie dans le jeu Angry Birds qui lui aussi a été réalisé en
HTML5 à l’aide de Box2DWeb.
Projet n° 20 – 22/01/2013
Page 7
b. Réalisation d’une animation JavaScript à l’aide de Box2D
Voici notre application ‘Lunar Lander’ réalisé entièrement en JavaScript et HTML5 avec
l’aide de la bibliothèque JavaScript Box2DWeb :
http://users.polytech.unice.fr/~fauvelja/projet_si4/version1/
Animation ‘Lunar Lander’ en HTML5 et JavaScript à l’aide de la bibliothèque JavaScript Box2D
Comme on le remarque ici, Box2D permet donc de simuler un système de corps rigides sur
un plan.
Ce système est représenté par un monde qui sera défini avec une gravité, c'est ce monde
qui va gérer le fait d'ajouter les différents corps ainsi qu'à chaque étape de calculer les
nouvelles positions des objets, leur vitesse, les forces appliquées etc...
Physiquement, un corps rigide peut être simulé par un point (le centre de gravité) avec
une position, un angle, une vitesse et une rotation, c'est à ce corps que l'on pourra
appliquer des forces soit définies par nous-même soit internes telles que la gravité ou des
impulsions (contacts, …).
Chaque corps simulé peut avoir une forme, limité soit à un assemblage de cercles, de
polygones convexes (triangle, rectangle…) ou de formes définies par l'utilisateur. C'est à
ces formes que l'on donnera la densité, la friction et la restitution.
La forme d'un corps peut également servir à calculer la masse et le moment d'inertie du
corps rigide.
Des contraintes peuvent exister entre ces corps, pour représenter une liaison (un pivot, un
coulissement… éventuellement avec une résistance ou une force motrice) ou un contact
temporaire.
Projet n° 20 – 22/01/2013
Page 8
De plus, afin de calculer les contacts entre ces corps, Box2D fournit un détecteur de
collision. En cas de collision on peut alors ajouter des contacts entre les corps et aussi
préciser des frottements, une élasticité… voire tout autre code qui serait nécessaire.
Tout ceci est détaillé et expliqué avec du code JavaScript dans le tutoriel (Tutoriel
[Box2D].docx) que nous fournissons afin que n’importe quel étudiant ou professeur puisse
refaire une animation totalement en JavaScript et HTML5 à l’aide de cette bibliothèque.
De plus ; un espace de développement est fourni afin de pouvoir commencer à développer
avec les fichiers de base.
Projet n° 20 – 22/01/2013
Page 9
c. Réalisation d’une animation JavaScript sans bibliothèque
externe
Voici à présent une image de notre animation de « lunar lander » réalisé en HTML5 &
JavaScript avec l’aide de librairie externe. Vous pouvez retrouver cette animation à
l’adresse suivante : http://users.polytech.unice.fr/~fauvelja/projet_si4/version3/
Comme nous pouvons le voir sur l’image, nous avons essayé de refaire l’application
de « lunar lander ». Même si au niveau de graphisme notre application reste assez éloigné
elle s’en rapproche sur le point de vue de la physique. En effet nous avons appliqué une
accélération négative constante sur l’axe des x afin de représenter l’attraction lunaire sur
la fusée. Cette attraction lunaire ainsi que notre paramètre comme la poussée des réacteurs,
la masse du vaisseau ou son carburant on des ordres de grandeur réel.
De plus la gestion de la position, de la vitesse et l’accélération de du vaisseau sont
régit par une équation différentiel du second ordre permettant d’avoir une trajectoire se
rapprochant au plus de la réalité.
Nous avons rajouté des petite bande son afin d’avoir un jeu de simulation plus
attrayant. Nous avons donc un bruit de réacteur quand ces derniers sont en route ou encore
un bruit d’explosion quand l’alunissage s’est passé.
Nous avons dans la partie supérieure droite un certain nombre d’information
concernant le vaisseau tel que sa vitesse horizontal, son altitude ou la quantité de carburant
restant.
Projet n° 20 – 22/01/2013
Page 10
Nous avons aussi créés un certain nombre de triangle de façon aléatoire dans la partie
inférieure. Ils permettent de représenter un décor. Cependant la gestion des collisions entre
le vaisseau et ce décor n’est pas gérer car très complexe sans librairie externe.
Nous avons gérer les collisions entre notre navette et les bords de l’écran que ce soit
en haut ou sur les côtés afin qu’il ne puisse pas sortir du champ de vision. Le but du jeu est
donc de posé la fusée le plus doucement possible afin de ne pas endommager la navette et
son équipage. Deux facteurs entre en compte pour un alunissage correct. Le fait de touché
le sol et la vitesse d’atterrissage.
Projet n° 20 – 22/01/2013
Page 11
d. « Avec ou sans Box2D » une question de goût
Voici notre tableau de comparaison entre un développement avec et sans cet outil.
Il s’agit d’un tableau comparatif que nous avons mis au point en développant l’animation
et de nos ressentis par rapport à ces deux méthodes.
Avec Box2D
Création de forme géométrique
Sans Box2D
Précision de simulation
Gestion des collisions
Code final beaucoup plus léger
Gestion de la physique
Plus grande liberté de développement
Tableau comparatif entre un développement avec et sans la librairie Box2D.
Aux vues de ce tableau au peut clairement dire que les différences de
développement ne seront pas destiné aux mêmes utilisations. En effet en développant
avec l’aide de la librairie Box2D, l’animation sera plus facile à appréhender, la création
d’objet physique (tel que des carrés, triangle, cercle…) est déjà intégré. De plus, la
gestion des collisions entre les différent objets, ce qui n’est pas du tout quelque chose
dévident est aussi intégré. Enfin la gestion de la physique comme par exemple une
attraction terrestre est elle aussi facile à mettre en place.
En revanche, si vous souhaitez avoir une plus grande précision dans votre code final
et maitriser vraiment vous-même toutes les interactions que ce soit entre les objets ou
avec l’utilisateur, il est préférable de développer sans librairie externe. Sans librairie votre
code sera aussi plus léger car il y aura moins de méthode « superflus » et ainsi qu’une plus
grande précision des calculs.
Enfin, il est utile de préciser qu’un développement avec Box2D aura une meilleure
compatibilité sur les différents navigateurs étant donné qu’elle prend en charge par défaut
la gestion des différents navigateurs.
Projet n° 20 – 22/01/2013
Page 12
4. Organisation du travail
La première semaine de projet a été consacrée à l’étude du projet. Au cours de
cette semaine nous nous sommes familiarisés avec JavaScript et l’animation HTML5. Nous
nous sommes aussi introduits à Box2d. A la fin de cette semaine nous avons réalisé un
cahier des charges.
Pour la deuxième semaine nous somme séparé, Fréderic travaillant seul sur
l’animation avec Box2d et d’autre part Giacomo et Olivier travaillant sur l’animation sans
Box2d . Cette semaine a été interrompue par deux jours de simulation d’entreprise.
La troisième semaine a été consacrée à la finalisation des animations, ainsi que la
rédactions des tutoriel et du rapport, et nous a permis de nous préparer à la soutenance
finale.
Projet n° 20 – 22/01/2013
Page 13
5. Conclusion et retour sur expérience
A la fin de ce projet nous avons atteint les objectifs fixés. Nous sommes satisfait de
notre travail, notamment de nos tutoriels et de notre environnement de développement
qui nous pensons seront très utiles à des personnes désireuses de réaliser une animation
JavaScript.
Dans le cadre du cours « Commande par ordinateur » nous pensons que la solution la
plus intéressante est de réaliser l’animation sans Box2d, en effet la liberté et la
transparence de cette solution augmente sont intérêt pédagogique.
A la suite de ce projet nous maitrisons parfaitement JavaScript alors que nous n’avions
jamais travaillé avec ce langage auparavant. Et le travail en équipe qui implique la
répartition des tâches et la satisfaction de tous a été une expérience enrichissante.
Notre travail reste améliorable, et beaucoup de travail peut encore être réalisé. Nous
pensons notamment a l’apparence globale de l’application qui gagnerai a être amélioré
ainsi que des fonctionnalités de jeux qui rendraient le programme plus intéressant comme
le fait de pouvoir faire pivoter la navette ou la possibilité de zoomer.
Nous somme globalement satisfait de notre travail, de l’entente dans le groupe et du
sujet choisit.
Projet n° 20 – 22/01/2013
Page 14
Références
Phets de l'université de Boulders Colorado :
http://phet.colorado.edu/en/simulation/electric-hockey
Cours de commande par ordinateur :
http://cours.polytech.unice.fr/intcom
Tutoriel expliquant les bases de Box2D en JavaScript
http://aniruddhaloya.blogspot.fr/2012/11/box2d-javascript-part-2.html
Site officiel de Box2D
http://www.box2d.org/
Google code du projet Box2D Web
http://code.google.com/p/box2dweb/
Projet n° 20 – 22/01/2013
Page 15

Documents pareils