## Labyrinthe à bille : **Créer une scène 3D interactive** L'objectif de ce tutoriel est de créer une scène animée et interactive. Le support est le labyrinthe à bille ; le principe est faire tourner le plateau sur 2 axes afin d'amener la bille du départ à l'arrivée. Ce tutoriel est une déclinaison pour UPBGE du projet n°1 du livre ["Créez vos propres jeux 3D comme les pros" (Éditions Graziel)](https://graziel.com/fr/livres/8-creez-vos-propres-jeux-3d-comme-les-pros-avec-le-blender-game-engine-9791093846002.html) de Grégory Gossellin De Bénicourt. Il se décompose en 6 parties : ![titres](img/labyrinthe-titres.png) ### Tutoriel 1 : Ma première scène - Installer Blender/UPBGE - Modéliser les objets 3D et définir leurs materiaux et leur physique - Gérer la scène avec la lumière et la caméra - Programmer le comportement des objets et le gameplay les briques logiques - Créer une zone cliquable - Créer une animation par images-clé - Produire un exécutable (GNU/Linux, Windows, macOS) - **Fichier résultat : 1-labyrinthe.blend** ### Tutoriel 2 : Passage au Python - Installer un éditeur de code (Emacs, Spyder) - Sustituer la programmation par briques logiques avec des modules codés en Python - Créer un bouton cliquable à partir une icône SVG - Inclure les scripts Python avec l'exécutable - **Fichier de départ : 2-labyrinthe-debut.blend** - **Fichier ressource : asset/icon_close.svg** - **Fichiers résultats : 2-labyrinthe.blend, 2-labyrinthe.py** ### Tutoriel 3 : Interfacer la scène 3D avec une carte Arduino par pyFirmata - Installer la bibliothèque pyFirmata - Déplacer le plateau avec une manette : 4 boutons binaires et/ou un joystick analogique - Allumer une led quand le plateau est en mouvement - Inclure la bibliothèque pyFirmata avec l'exécutable - **Fichiers de départ : 2-labyrinthe.blend, 2-labyrinthe.py** - **Documents techniques : Carte de référence pyFirmata et interface Grove pour Arduino** - **Fichiers résultats : 3-labyrinthe.blend, 3-labyrinthe.py, labyrinthe_carte.py** ### Tutoriel 4 : Interfacer la scène 3D avec une carte Arduino par pySerial - Installer la bibliothèque pySerial - Déplacer le plateau avec une centrale inertielle (capteur IMU sur broche I2C) - Afficher la position de la bille sur une matrice de leds (broche I2C) - Inclure la bibliothèque pySerial avec l'exécutable - **Fichiers de départ : 2-labyrinthe.blend, 2-labyrinthe.py** - **Document technique : Interface Grove pour Arduino** - **Fichiers résultats : 4-labyrinthe.blend, 4-labyrinthe.py, 4-labyrinthe-imu.ino, labyrinthe_carte.py** ### Tutoriel 5 : Interfacer la scène 3D avec une carte micro:bit - Installer la bibliothèque pySerial - Déplacer le plateau avec la centrale inertielle de la carte microbit - Afficher la position de la bille sur la matrice de leds - Inclure la bibliothèque pySerial avec l'exécutable - **Fichiers de départ : 2-labyrinthe.blend, 2-labyrinthe.py** - **Document technique : Carte de référence carte micro:bit** - **Fichiers résultats : 5-labyrinthe.blend, 5-labyrinthe.py, 5-labyrinthe-microbit.py, labyrinthe_carte.py** ### Tutoriel 6 : Développer le jumeau numérique du labyrinthe (en cours d'écriture) - Imprimer et assembler le labyrinthe - Commander manuellemet le labyrinthe physique - Suivre la bille réelle par OpenCV (par vision) - Caler le moteur physique Bullet avec le labyrinthe physique - Commander le labyrinthe physique par pathfinding + vision le labyrinthe physique - **Fichiers de départ : 4-labyrinthe.blend, 4-labyrinthe.py, 4-labyrinthe-imu.ino, labyrinthe_carte.py** - **Fichiers résultats : 6-labyrinthe.blend, 6-labyrinthe.py, 6-labyrinthe-arduino.ino, labyrinthe_carte.py**