-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathslides-fr.html
More file actions
executable file
·875 lines (650 loc) · 38.2 KB
/
slides-fr.html
File metadata and controls
executable file
·875 lines (650 loc) · 38.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Canada en programmation</title>
<link rel="stylesheet" href="framework/css/slideshow.css" data-noprefix>
<link rel="stylesheet" href="framework/css/fonts.css" data-noprefix>
<link rel="stylesheet" href="framework/css/highlightjs/github.css" data-noprefix>
<link rel="stylesheet" href="framework/css/styles.css" data-noprefix>
<link rel="shortcut icon" href="framework/img/favicon.ico">
<!-- S'occupe des préfixes CSS3 -->
<script src="framework/scripts/prefixfree.min.js"></script>
<!-- Ouvre tous les liens dans une nouvelle fenêtre -->
<base target="_blank">
</head>
<!-- Barre de progression / durée : définissez la durée de la présentation avec « data-duration » en minutes. -->
<body class="en" data-duration="360">
<!--Diapositive 1-->
<main>
<section class="slide welcome highlight">
<h1><img class="logo-stacked" src="framework/img/teenslc-logo-stacked-white.png" alt="Logo d'Ados en programmation">Bienvenue!</h1>
<div class="instructions">
<h2>Connectez- <br>vous</h2>
<p><strong>Wi-Fi :</strong> réseau Wi-Fi</p>
<p><strong>Mot de passe :</strong> mot de passe Wi-Fi</p>
<hr>
<h2>Remplissez ce sondage avant le début du cours</h2>
<p><a href="http://bit.ly/sondageados">http://bit.ly/sondageados</a></p>
</div>
<footer>
<a class="left" rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="Licence Creative Commons" src="framework/img/cc-by-nc.png" /></a>
<p class="left">Contenu créé par Kassandra Lenters pour <a prefix="cc: http://creativecommons.org/ns#" href="http://canadalearningcode.ca" property="cc:attributionName" rel="cc:attributionURL">Canada en programmation</a></p>
<p class="right">Utilisez les flèches gauche <span class="arrow">←</span> et droite <span class="arrow">→</span> pour naviguer.</p>
</footer>
</section>
<section class="slide welcome highlight">
<h1><img class="logo-stacked" src="framework/img/teenslc-logo-stacked-white.png" alt="Logo de Femmes en programmation">Getting Started</h1>
<!--Diapositive 2-->
<div class="instructions">
<h2>Télécharger<br> et installer<br><br></h2>
<p>Fichiers d'apprentissage (dossier zip) : <br><a href="https://github.com/ladieslearningcode/teenslc-vr-with-aframe/archive/master.zip">bit.ly/vr-with-aframe</a>
<ul>
<li>Dézippez le dossier de fichiers d'apprentissage (<em>Extraire tout</em> sur Windows).</li>
<li>Ouvrez <em>slides-fr.html</em> dans le navigateur pour afficher les diapositives.</li>
</ul>
</p>
<hr>
<h2>Travaillez-vous <br>hors ligne? <br>(sans Internet)</h2>
<p><strong>À utiliser seulement s'il y a des problèmes avec Internet :</strong></p>
<ul>
<li>Éditeur Atom : <a href="http://atom.io">http://atom.io</a></li>
<li>Navigateur Chrome : <a href="https://www.google.ca/chrome/browser/desktop/">https://www.google.ca/chrome</a></li>
</ul>
</div>
<footer>
<a class="left" rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="Licence Creative Commons" src="framework/img/cc-by-nc.png" /></a>
<p class="left">Contenu créé par Kassandra Lenters pour <a prefix="cc: http://creativecommons.org/ns#" href="http://canadalearningcode.ca" property="cc:attributionName" rel="cc:attributionURL">Canada en programmation</a></p>
<p class="right">Utilisez les flèches gauche <span class="arrow">←</span> et droite <span class="arrow">→</span> pour naviguer.</p>
</footer>
</section>
<section class="slide intro">
<img class="logo" src="framework/img/teenslc-logo-white.png" alt="Logo de Canada en programmation">
<h1 class="heading-bg">
<span>Réalité virtuelle <bravec A-Frame</span>
</h1>
<ul>
<li><a href="http://twitter.com/learningcode">@learningcode</a></li>
<li><a href="https://twitter.com/search?q=%23girlslearningcode&src=typd">#teenslearningcode</a></li>
</ul>
<div class="sponsor">
<!--<p>En partenariat avec<br> <img src="framework/img/logo-white.svg" alt="name"></p>-->
</div>
<footer>
<a class="left" rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="Licence Creative Commons" src="framework/img/cc-by-nc.png" /></a>
<p class="left">Diapositives créées par <a href="http://christinatruong.com">Christina Truong</a> pour <a prefix="cc: http://creativecommons.org/ns#" href="http://canadalearningcode.com" property="cc:attributionName" rel="cc:attributionURL">Canada en programmation</a></p>
<p class="right">Utilisez les flèches gauche <span class="arrow">←</span> et droite <span class="arrow">→</span> pour naviguer.</p>
</footer>
</section>
<section class="slide title" data-markdown>
<script type="text/template">
#Introduction
</script>
</section>
<!-- Indiquez l'ordre du jour de l'atelier -->
<section class= "slide" data-markdown>
<script type="text/template">
#Ordre du jour
Intro à la réalité virtuelle
Programmation en groupe dans A-Frame
Séance de travail : création d'un monde virtuel!
Travailler avec le registre
</script>
</section>
<section class="slide" data-markdown data-toc>
<script type="text/template">
#Le code des programmeuses
1. Soyez accueillantes et chaleureuses.
1. Choisissez bien vos mots et vos actions.
1. Respectez l'espace des autres durant les conversations.
1. Posez des questions.
1. Faites de votre mieux (et amusez-vous!).
</script>
</section>
<!-- temp slide-->
<section class="slide" data-markdown>
<script type="text/template">
## Le thème du mois d'octobre est...
# Éducation
Dès notre naissance, nous vivons des expériences d'apprentissage. Celles-ci ont une influence sur notre vision du monde, des autres et de nos propres capacités. Que les apprentissages soient faits à l'école ou non, l'éducation a une valeur inestimable.
**Créez un espace WebVR qui représente votre vision d'un espace sécuritaire pour apprendre.**
Partagez vos projets sur les réseaux sociaux avec le mot-clic #clcCode4Change. Pour obtenir plus d'informations, [cliquez ici](https://www.canadalearningcode.ca/code-can-change-the-world/).
</script>
</section>
<section class="slide title" data-markdown>
<script type="text/template">
# Le projet du jour
## Nous apprendrons comment créer un <br>monde virtuel avec A-Frame
</script>
</section>
<section class="slide centered" data-markdown>
<script type="text/template">
#Exemple de projet

[https://ice-cream.glitch.me/](https://ice-cream.glitch.me/)
</script>
</section>
<section class="slide title" data-toc data-markdown>
<script type="text/template">
# Qu'est-ce que la réalité virtuelle?
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
#Réalité virtuelle (RV)
La **réalité virtuelle** (RV, « VR » pour « virtual reality » en anglais), est un environnement 3D généré par ordinateur qui simule une expérience de manière réaliste. Le niveau d'interactivité varie d'une expérience à une autre : la réalité virtuelle peut être passive (simple observation) ou active (interaction assistée par un appareil).
Exemples :
* <a href="https://www.youtube.com/watch?v=hEK-J3ZgCZA">Pinceau « Tilt Brush »</a>
* <a href="https://experiments.withgoogle.com/webvr/konterball">Konterball (ping pong en RV)</a>
* <a href="https://aframe.io/a-blast/">Mozilla AR A-Blast</a>
</script>
</section>
<!--Diapositive 11-->
<section class="slide" data-markdown>
<script type="text/template">
#Réalité augmentée (RA)
La **réalité augmentée** (RA, « AR » pour « augmented reality » en anglais) est une expérience générée par ordinateur dans laquelle un monde virtuel est superposé sur la vue (le monde réel) d'un utilisateur.
Exemples :
* <a href="https://www.pokemongo.com/en-ca/">Pokémon Go</a>
* <a href="https://www.youtube.com/watch?v=QN95nNDtxjo">Prototype de réalité augmentée : Super Mario Bros</a>.
* <a href="https://experiments.withgoogle.com/ar/justaline">Just a Line (application de création de réalité augmentée)</a>
</script>
</section>
<!--Diapositive 12-->
<section class="slide title" data-toc data-markdown>
<script type="text/template">
#Penser, discuter, partager
## Pourquoi créer des expériences virtuelles?
</script>
</section>
<!--Diapositive 13-->
<section class="slide" data-markdown>
<script type="text/template">
# Quelle est l'utilité de la réalité virtuelle?
La réalité virtuelle nous permet de vivre des expériences, des histoires et des jeux en immersion. Il s'agit d'un nouveau moyen de s'exprimer et de mettre sa créativité à profit. La RV a aussi une influence positive sur la société :
* **Thérapie par réalité virtuelle** : La réalité virtuelle peut nous aider à faire face à nos peurs, comme l'<a href="https://newatlas.com/fearless-spider-fear-oculus-rift-vr/45146/">arachnophobie</a> (la peur des araignées) ou <a href="https://newatlas.com/public-speaking-simulation-gear-vr/44871/">la peur de parler devant un public</a>.
* **Soins de santé et réalité virtuelle** : La réalité virtuelle est un outil de formation pour les chirurgiens et peut aider les patients <a href="https://med.stanford.edu/news/all-news/2017/09/virtual-reality-alleviates-pain-anxiety-for-pediatric-patients.html">à apprendre à gérer la douleur</a>.
* **Enseignement et réalité virtuelle** : La réalité virtuelle donne aux élèves un accès à de nouveaux endroits et à de nouvelles expériences (p. ex., <a href="https://edu.google.com/expeditions/#about">Google Expeditions</a>).
</script>
</section>
<!--Diapositive 14-->
<section class="slide" data-markdown>
<script type="text/template">
# À considérer
* Mal des « transports » (vertige et étourdissements)
* Instabilité, sentiment de nouveauté
* Accessibilité et coût
</script>
</section>
<!--Diapositive 15-->
<section class="slide" data-markdown>
<script type="text/template">
# Réalité virtuelle et WebVR
**WebVR** est une interface de programmation JavaScript nous permettant de vivre des expériences de réalité virtuelle dans notre navigateur. Elle sert aussi à développer et à faire partager des projets de RV.
*<a href="https://developers.google.com/maps/">Google Maps API</a> est une autre interface de programmation d'applications qui permet aux utilisateurs d'ajouter des cartes géographiques personnalisées sur des sites et des applications.*
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
#Profil d'artiste

**Scott Benesiinaabandan** est un artiste anishinaabe travaillant principalement dans les domaines de la photographie, de l'audio, de la vidéo et de l'art de l'imprimerie. Il a fait des résidences d'artiste à l'étranger dans les Parramatta Artist Studios en Australie, dans la Context Gallery de Derry en Irlande du Nord et dans le programme iAIR de l'Université Lethbridge et de l'Institut royal de technologie. De plus, il a participé à des projets collaboratifs à l'échelle internationale au Royaume-Uni et en Irlande. Scott habite actuellement à Montréal.
*Profil tiré d'ImagineNATIVE*
---
<div class="dropdown">
<button class="dropbtn">Sources</button>
<div class="dropdown-content">
<a href="http://cfccreates.com/residents/339">Photo de Scott du site Web du Centre canadien du film</a>
</div>
</script>
</section>
<section class="slide centered" data-toc data-markdown>
<script type="text/template">
# Blueberry Pie under the Martian Sky
(Tarte aux bleuets sous le ciel de Mars)
<video width="810" height="465" controls>
<source src="framework/video/blueberry-pie.mp4" type="video/mp4">
</video>
## Par [Scott Benesiinaabandan](http://www.benesiinaabandan.com/)
</script>
</section>
<section class="slide title" data-markdown>
<script type="text/template">
#A-Frame
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
# Intro à A-Frame
**A-Frame** est un cadre de développement libre pour WebVR basé sur le HTML. Comme le cadre A-Frame est multiplateforme, il est possible de visualiser les projets A-Frame avec n'importe quel appareil, de l'Oculus Rift en passant par un navigateur sur notre ordinateur.
*Vous pouvez explorer une scène avec les touches W-A-S-D ou les flèches du clavier. Cliquez et faites glisser l'écran pour tourner.*
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
# Connectez-vous pour sauvegarder
1. Avec votre projet Glitch ouvert, sélectionnez **Sign in with email**.
1. Vous devrez aller dans votre boîte de réception et cliquer sur le bouton « Sign In » du courriel que vous avez reçu.


</script>
</section>
<!--Diapositive 21-->
<section class="slide" data-markdown>
<script type="text/template">
#Programmation en groupe
## Ouvrez l'exemple de projet :
1. Allez à l'adresse [https://glitch.com/~aframe](https://glitch.com/~aframe).
1. Sélectionnez « View Source » <br> 
1. Cliquez sur « Remix to edit » <br> 
</script>
</section>
<section class="slide" data-toc data-markdown>
<script type="text/template">
# Configurer Glitch
Afin d'afficher les modifications en cours, sélectionnez **Show Live** > **Next to the Code**.

</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
#Que voyez-vous?

</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
#LE CODE! (plus précisément le HTML)
* Nous utilisons des navigateurs pour afficher des sites Web.
* Les navigateurs ne parlent ni français ni anglais, mais ils comprennent le HTML!
**On écrit le code HTML avec des balises.**
Les balises viennent habituellement en paires : il y a une balise d'ouverture et une balise de fermeture. Les balises enveloppent le contenu. Vous remarquerez que la balise de fermeture comprend une barre oblique vers l'avant (`/`).
```html
<balise> Balise d'ouverture --- Balise de fermeture </balise>
```
Les balises HTML décrivent le contenu qui se trouve à l'intérieur afin que le navigateur Web puisse le comprendre.
```html
<h1>Cette balise décrit un en-tête.</h1>
<p>Cette balise décrit un paragraphe.</p>
```
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
# Primitives
A-Frame utilise des éléments HTML que l'on appelle des **primitives**. Elles peuvent être personnalisées avec des attributs HTML (p. ex. `color="red"`).

* **Position** : définit la position dans l'espace 3D (X,Y,Z) - mesurée en mètres
* X = gauche-droite
* Y = haut-bas
* Z = avant-arrière
* **Rotation** : définit l'orientation dans l'espace 3D (X,Y,Z) - mesurée en degrés
* X = tangage
* Y = lacet
* Z = roulis

</script>
</section>
<!--Diapositive 26-->
<section class="slide" data-markdown>
<script type="text/template">
#Exercice
Il est possible de personnaliser des éléments en ajoutant ou en modifiant leurs attributs.
Voici à quoi ressemble un attribut (dans ce cas-ci, de couleur) : `color="blue"`
**Suivez ces étapes :**
* Modifiez la couleur de la sphère.
* Modifiez la rotation de la boîte.
* Modifiez la position du cylindre.
* Augmentez la taille du plan. (Indice : quels attributs HTML ont une influence sur la taille?)
* Ajoutez une ligne de texte dans le centre de la scène (voir <a href="https://aframe.io/docs/0.9.0/primitives/a-text.html#sidebar"> les primitives A-Frame</a>).
</script>
</section>
<!--Diapositive 27-->
<section class="slide title" data-markdown>
<script type="text/template">
##Dites-nous vos réponses!
##Des volontaires?
</script>
</section>
<!--Diapositive 28-->
<section class="slide title" data-markdown>
<script type="text/template">
#Créer et personnaliser des espaces virtuels
</script>
</section>
<!--Diapositive 29-->
<section class="slide" data-markdown>
<script type="text/template">
#Graphiques
1. Téléversez des images dans le dossier « assets ».
<br>
**Recherche d'images d'arrière-plan**
Lorsque vous téléversez des images d'arrière-plan, assurez-vous qu'elles ont un rapport d'aspect de 2:1. Cherchez '360 images' ou consultez la <a href="https://www.flickr.com/groups/equirectangular/">bibliothèque d'images 360° sur Flickr</a>. Sauvegardez vos découvertes en cliquant sur l'image, puis sur l'icône de téléchargement (en bas, à droite).

*Remarque : Nous pouvons aussi créer des images 360° avec des applications comme <a href="https://play.google.com/store/apps/details?id=com.google.vr.cyclops&hl=en">Cardboard Camera</a>.*
**Recherche de textures**
Il est aussi possible d'ajouter des textures aux objets! Consultez cette <a href="https://www.flickr.com/groups/freetextures/">bibliothèque de textures gratuites sur Flickr</a>. Sauvegardez vos textures en suivant les mêmes étapes que pour les arrière-plans.
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
# Système de gestion des graphiques
Ce système aide le navigateur à mettre des images dans la mémoire cache afin que la scène se charge plus rapidement. Pour utiliser le système de gestion des graphiques, il vous suffit d'ajouter une nouvelle primitive appelée `<a-assets>`.
1. Ajoutez une balise `<a-assets>` d'ouverture et de fermeture directement à l'intérieur de votre `<a-scene>`.
```html
<a-scene>
<a-assets>
</a-assets>
<!-- ... -->
</a-scene>
```
</script>
</section>
<!--Diapositive 31-->
<section class="slide" data-markdown>
<script type="text/template">
# Ajouter une image d'arrière-plan
1. Trouvez votre fichier d'image dans le dossier assets et copiez-en l'URL. <br> 
1. Créez une balise `<img>` faisant un lien vers cette URL.
1. Nommez l'image en ajoutant un `id`.
1. Faites une référence à l'image en ajoutant un attribut `src` à l'entité `<a-sky>`.
```html
<a-scene>
<a-assets>
<img id="roches" src="https://cdn.glitch.com/lienverslimage1">
</a-assets>
<a-sky src="#roches"></a-sky>
<!-- ... -->
</a-scene>
```
</script>
</section>
<!--Diapositive 32-->
<section class="slide" data-markdown>
<script type="text/template">
# Ajouter des textures
1. Trouvez votre fichier d'image dans le dossier assets et copiez-en l'URL (comme dans l'exemple précédent).
1. Créez une balise `<img>` faisant un lien vers cette URL.
1. Nommez l'image en ajoutant un `id`.
1. Faites une référence à l'image en ajoutant un attribut `src` à l'entité.
```html
<a-scene>
<a-assets>
<img id="roches" src="https://cdn.glitch.com/lienverslimage1">
<img id="glace" src="https://cdn.glitch.com/lienverslimage2">
</a-assets>
<a-plane src="#glace" position="0 0 -4" rotation="-90 0 0" width="4" height="4" shadow></a-plane>
<!-- ... -->
</a-scene>
```
</script>
</section>
<!--Diapositive 33-->
<section class="slide" data-markdown>
<script type="text/template">
# Ajouter d'autres objets 3D
1. Cherchez des formes 3D dans la documentation A-Frame : [aframe.io/docs](https://aframe.io/docs) → dans la section « Primitives » <br> 
1. Ajoutez de nouvelles primitives entre les balises `<a-scene>`, sous `</a-assets>`
```html
<a-scene>
<a-assets>
<!-- ... -->
</a-assets>
<!-- Les nouvelles primitives vont ici! -->
</a-scene>
```
*Conseil : Utilisez les primitives actuelles comme référence en gardant la même position. Ensuite, affichez un aperçu pour essayer le tout (Show Live) et modifiez les valeurs de position au besoin.*
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
# Ajouter une animation
Nous pouvons utiliser l'attribut `animation` pour animer des entités dans la scène. Ajoutez-le à l'intérieur de l'objet que vous souhaitez animer.
```html
<a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9" shadow animation="property: position; to: -1 1.5 -3; dir: alternate; dur: 2000; easing: linear; loop: true;"></a-box>
```
* **Property** : la partie (la propriété) que nous animerons (p. ex., position, rotation, scale (échelle), material.color (couleur du matériel).
* **To** : la valeur selon laquelle nous l'animerons (p. ex., un metre plus haut que la position originale).
* **Dir** : la direction de l'animation (entre `from` et `to`).
* **Dur** : la durée de l'animation (en millisecondes).
* **Easing** : la vitesse lente ou rapide de l'animation.
* **Loop** : la boucle, c'est-à-dire le nombre de fois que l'animation se répète. (Écrivez un nombre de fois ou `true` pour créer une boucle infinie.)
Consultez la <a href="https://aframe.io/docs/0.9.0/components/animation.html">documentation sur les animations</a> pour connaître toutes les options.
</script>
</section>
<!--Diapositive 35-->
<section class="slide title" data-markdown>
<script type="text/template">
#Ajouter de l'interactivité et des effets spéciaux
</script>
</section>
<!--Diapositive 36-->
<section class="slide" data-markdown>
<script type="text/template">
# Ajouter de l'interactivité
La plupart des utilisateurs n'ont pas accès à des appareils spéciaux pour afficher des expériences de réalité virtuelle. Ainsi, ils afficheront les projets directement dans leur navigateur. Nous ferons l'expérience de nos projets finaux avec la visionneuse Google Cardboard, mais nous devrions considérer les autres utilisateurs qui n'ont pas accès à une visionneuse au moment de programmer des interactions dans nos scènes. Les **composantes de pointeur** sont accessibles dans tous les cas, alors tous les événements en lien avec le regard et les clics devraient fonctionner sans problème.
A-Frame met automatiquement en place une caméra par défaut dans notre scène. Pour le moment, nous ne pouvons pas voir le pointeur de la souris, alors nous devons ajouter une primitive `<a-cursor>` à l'intérieur de `<a-camera>`.
```html
<a-scene>
<!-- ... -->
<a-camera>
<a-cursor></a-cursor>
</a-camera>
</a-scene>
```
*Remarque : Si `<a-plane>` ne s'affiche plus, essayez de lui donner un attribut de position.*
</script>
</section>
<!--Diapositive 37-->
<section class="slide" data-markdown>
<script type="text/template">
# Animation avec des événements
Nous pouvons utiliser des événements pour faire des animations avec la propriété <a href="https://aframe.io/docs/0.9.0/components/animation.html#events"> startEvents</a>.
Par exemple, si nous utilisons `startEvents: mouseenter;`, l'animation commencera quand le pointeur entrera dans la boîte :
```html
<a-scene>
<!-- ... -->
<a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9" shadow animation="property: position; to: -1 1.5 -3; dir: alternate; dur: 2000; easing: linear; loop: true; startEvents: mouseenter;"></a-box>
<a-camera>
<a-cursor></a-cursor>
</a-camera>
</a-scene>
```
</script>
</section>
<!--Diapositive 38-->
<section class="slide" data-markdown>
<script type="text/template">
# Ajouter du son (1)
Le son peut enrichir notre scène en créant une expérience immersive pour l'utilisateur. Pour trouver des sons pouvant être réutilisés sous licence, consultez les sites [https://freesound.org/](https://freesound.org/) ou [https://www.jamendo.com/start](https://www.jamendo.com/start). *Bonus : téléversez vos propres sons et créez-en dans <a href="https://www.soundtrap.com">Soundtrap</a>!*
1. Téléversez votre fichier audio dans le dossier assets.
1. Copiez l'URL du fichier audio. <br> 
1. Ajoutez un élément audio à l'intérieur de la primitive `<a-assets>` en faisant un lien vers l'URL du fichier audio.
1. Ajoutez un attribut `preload` à votre fichier audio pour le charger d'avance sur la page.
```html
<a-scene>
<a-assets>
<!-- ... -->
<audio src="https://cdn.glitch.com/lienverslaudio1" preload="auto"></audio>
<audio src="https://cdn.glitch.com/lienverslaudio2" preload="auto"></audio>
</a-assets>
<!-- ... -->
<a-scene>
```
</script>
</section>
<!--Diapositive 39-->
<section class="slide" data-markdown>
<script type="text/template">
# Ajouter du son (2)
1. Nommez le fichier audio en ajoutant un `id`.
1. Ajoutez un attribut `sound` à une entité pour préciser le fichier audio à jouer et quand le jouer.
```html
<a-scene>
<a-assets>
<!-- ... -->
<audio id="musiquedefond" src="https://cdn.glitch.com/lienverslaudio1" preload="auto"></audio>
<audio id="pop" src="https://cdn.glitch.com/lienverslaudio2" preload="auto"></audio>
</a-assets>
<!-- ... -->
<a-sphere sound="src: #musiquedefondc; on: click;" position="0 1.25 -5" radius="1.25" color="#EF2D5E" shadow>
<a-cylinder sound="src: #pop; on: click;" position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D" shadow></a-cylinder>
<a-scene>
```
*Le format de l'attribut `sound` vous dit-il quelque chose? Les propriétés (p. ex.,, `on`) et les valeurs (p. ex., `click`) ont le même format que le CSS!*
Pour consulter toutes les options audio, lisez la <a href="https://aframe.io/docs/0.9.0/components/sound.html#sidebar">documentation sur le son</a>.
</script>
</section>
<!--Diapositive 40-->
<section class="slide title" data-markdown>
<script type="text/template">
# Effets spéciaux
## Avec le registre A-Frame
</script>
</section>
<!--Diapositive 41-->
<section class="slide" data-markdown>
<script type="text/template">
# Le registre
Nous pouvons ajouter d'autres animations et des effets spéciaux avec le <a href="https://aframe.io/aframe-registry/">registre A-Frame</a>. Il s'agit d'une bibliothèque de composantes prêtes à être utilisées qui ont été créées par d'autres développeurs de la communauté A-Frame.
Dans notre exemple, nous ajouterons un effet de gravité avec le système de physique (composante « Physics System »).
</script>
</section>
<!--Diapositive 42-->
<section class="slide" data-markdown>
<script type="text/template">
# Ajouter des composantes
1. Allez dans le <a href="https://aframe.io/aframe-registry/">registre</a> et cherchez la composante **Physics System** (cliquez sur le nom de la composante). <br> 
1. Sur la page de la composante, faites défiler pour trouver le script d'installation et copiez-le. <br> 
</script>
</section>
<!--Diapositive 43-->
<section class="slide" data-markdown>
<script type="text/template">
# Inspecter la scène
1. Revenez dans votre projet et collez le script dans la section de la tête (`<head>`).
1. Cliquez sur 'Show Live' et inspectez la scène (`<ctrl> + <alt> + i`). Vous pouvez faire un zoom en utilisant la roulette de votre souris ou le pavé tacile.
</script>
</section>
<!--Diapositive 44-->
<section class="slide" data-markdown>
<script type="text/template">
# Essai des changements
1. Appliquez un effet de gravité : cliquez sur une entité (p. ex., une sphère), puis **ajoutez la composante dynamic-body**. <br> 
1. Afin d'empêcher l'entité de sortir de la scène, cliquez sur le plan et **ajoutez la composante static-body**. <br> 
1. Affichez un aperçu des changements en sélectionnant **Back to Scene**. <br> 
</script>
</section>
<!--Diapositive 45-->
<section class="slide" data-markdown>
<script type="text/template">
# Appliquer les changements
1. Si l'apparence du projet vous plaît, copiez le code que vous avez ajouté. Trouvez la nouvelle composante, puis sélectionnez **Copy Attributes**. <br> 
1. Revenez à votre code et collez ce que vous venez de copier dans l'entité. Par exemple : <br> `<a-sphere dynamic-body="sphereRadius: NaN" ...>`)
</script>
</section>
<!--Diapositive 46-->
<section class="slide" data-markdown>
<script type="text/template">
# Plus d'options de registre
Avant d'ajouter des composantes supplémentaires, lisez les consignes afin de mieux en comprendre le fonctionnement. Consultez <a href="https://www.npmjs.com/package/aframe-physics-system">cette page</a> pour en savoir plus sur la composante « Physics System ».
## Conseil :
En inspectant votre scène, vous pourriez avoir de la difficulté à différencier des entités semblables. Nommez les entités avec un `id` afin que votre code reste bien organisé (p. ex., `<a-sphere id="scoop1">`).
</script>
</section>
<!--Diapositive 47-->
<section class="slide" data-markdown>
<script type="text/template">
# Séance de travail
Continuez à essayer des composantes et des effets spéciaux! Voici quelques recommandations :
1. Faites tomber de la pluie! (ou de la neige ou quelque chose d'autre...) avec la [composante de particules « Particle System »](https://www.npmjs.com/package/aframe-particle-system-component).
1. Téléportez-vous dans un autre monde avec la [composante « Environment »](https://www.npmjs.com/package/aframe-environment-component). (Pourquoi pas dans une pyramide?!)
1. Ajoutez des options de pointeur, afin que les utilisateurs puissent voir et sélectionner des éléments facilement avec [Crawling Cursor](https://npmjs.com/package/aframe-crawling-cursor). Vous pouvez aussi ajouter de l'interactivité instantanée avec la [composante Gaze Control](https://npmjs.com/package/aframe-gaze-control-component).
1. La typographie vous intéresse? Personnalisez votre texte et créez des effets cools avec la [composante Text Geometry](https://www.npmjs.com/package/aframe-text-geometry-component).
*Avez-vous envie de relever un défi?* Si vous connaissez le JavaScript, vous pouvez approfondir vos connaissances avec A-Frame! Consultez la documentation [ici](https://aframe.io/docs/0.9.0/introduction/javascript-events-dom-apis.html#sidebar).
</script>
</section>
<section class="slide centered" data-markdown>
<script type="text/template">
# Faites l'expérience de votre monde virtuel!

---
<div class="dropdown">
<button class="dropbtn">Sources</button>
<div class="dropdown-content">
<a href="https://dribbble.com/shots/4153349-Cardboard">Gif de Google Cardboard</a>
</div>
</script>
</section>
<section class="slide" data-markdown>
<script type="text/template">
# Consignes
Suivez ces étapes pour visualiser votre scène A-Frame avec la visionneuse de réalité virtuelle :
1. Renommez votre projet (si ce n'est pas déjà fait). <br> 
1. Ouvrez un navigateur et allez à l'URL du projet (la même que « Show Live »). <br> 
1. Cliquez sur l'icône de Google Cardboard. <br> 
1. Placez votre appareil mobile dans la visionneuse et amusez-vous!
*Il n'y a pas d'audio sur les appareils iOS. Utilisez un appareil Android avec Google Cardboard si vous souhaitez faire l'expérience avec du son.*
</script>
</section>
<section class="slide title" data-markdown>
<script type="text/template">
#DÉMOS
</script>
</section>
<!--Diapositive 51-->
<section class="slide" data-markdown>
<script type="text/template">
#Prochaines étapes
**Un peu d'inspiration!** Consultez la <a href="https://twitter.com/aframevr">page Twitter d'A-Frame</a> pour voir les créations d'autres développeurs.
## Exercice à faire à la maison
* Fan de Minecraft? Jetez un oeil à <a href="https://glitch.com/~aframe-aincraft">aframe-aincraft</a>. <br>
* Vous pouvez recréer ce projet en suivant <a href="https://aframe.io/docs/0.5.0/guides/building-a-minecraft-demo.html">ce tutoriel</a>.
</script>
</section>
<section class="slide" data-toc data-markdown>
<script type="text/template">
# Aujourd'hui, j'ai appris que...
<p><strong>Je peux</strong> créer un monde de réalité virtuelle et en faire l'expérience dans mon navigateur.</p><!-- .element: class="delayed" -->
<p><strong>Je peux</strong> personnaliser mon monde virtuel avec des arrière-plans et des textures.</p><!-- .element: class="delayed" -->
<p><strong>Je peux</strong> utiliser le HTML pour créer des objets 3D comme des boîtes et des sphères.</p><!-- .element: class="delayed" -->
<p><strong>Je peux</strong> ajouter des animations à mon projet.</p><!-- .element: class="delayed" -->
<p><strong>Je peux</strong> utiliser A-Frame pour <strong>CONTINUER À PROGRAMMER!</p><!-- .element: class="delayed" -->
</script>
</section>
<!-- Dernière diapositive -->
<section class="slide last">
<h1>Merci!</h1>
<h2 class="heading-bg">
<span>Réalité virtuelle<br> avec A-Frame</span>
</h2>
<ul>
<li><a href="http://twitter.com/learningcode">@learningcode</a></li>
<li><a href="https://twitter.com/search?q=%23girlslearningcode&src=typd">#teenslearningcode</a></li>
</ul>
<p class="attribution">Diapositives créées par <a href="http://christinatruong.com">Christina Truong</a> à partir de <a href="https://github.com/LeaVerou/csss">« SlideShow » de Lea Verou</a> et de <a href="http://lab.hakim.se/reveal-js/">reveal.js</a>.</p>
</section>
</main><!-- Section principale cls -->
<script src="framework/scripts/jquery-1.11.0.min.js"></script>
<script src="framework/scripts/slideshow.js"></script>
<!-- Enlevez les commentaires des modules dont vous avez besoin -->
<script src="framework/scripts/plugins/css-edit.js"></script>
<script src="framework/scripts/plugins/css-snippets.js"></script>
<script src="framework/scripts/plugins/css-controls.js"></script>
<!-- <script src="plugins/code-highlight.js"></script>-->
<script src="framework/scripts/plugins/markdown/marked.js"></script>
<script src="framework/scripts/plugins/markdown/markdown.js"></script>
<script src="framework/scripts/plugins/highlight/highlight-8.4.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="framework/scripts/llc.js"></script>
<script>
var slideshow = new SlideShow();
// Regroupe tous les éléments .snippet
var snippets = document.querySelectorAll('.snippet');
for(var i=0; i<snippets.length; i++) {
new CSSSnippet(snippets[i]);
}
</script>
</body>
</html>