Ce projet consiste à relier la bibliothèque Python3
Ultralytics YoloV8
utilisée pour détecter un joueur sur une source vidéo et en extraire les positions des mains. Puis communiquer avec Unity pour créer un jeu interactif en utilisant les données détectées.
- Jeu interactif où le joueur doit sauver les tortues en les protégeant des crabes et en les guidant vers la mer.
- La détection des mains en temps réel est utilisée pour déplacer une épuisette virtuelle pour attraper les crabes et les empêcher d'attaquer les tortues.
Cloner ce repository en local
git clone https://github.com/arthur-mdn/UnityPythonInteractiveGame_SaveTheTurtles.git
Se rendre dans le dossier contenant le projet Python
cd PythonProject_save_the_turtles
-
python311 -m venv saveTurtles
-
Vous devez spécifier le chemin complet vers l'installation de Python 3.11
Z:\chemin\complet\vers\l\installation\Python\Python311\python.exe -m venv saveTurtles
.\saveTurtles\Scripts\activate
pip install -r .\requirements.txt
python server.py
- Ouvrez le projet
/UnityProject_save_the_turtles
avec Unity2022.3.10f1
- Ouvrez la scène
StartScreen
.
Lancez la scène avec le bouton play
Au premier lancement, il va falloir "lever les mains en l'air" pour lancer une calibration. Écartez-vous du champ de vision de la caméra pour lancer la calibration. Une fois la calibration terminée, la scène de jeu se lance automatiquement.
- Créez un build du jeu en utilisant le menu Unity
File > Build
. - Fermez le moteur Unity après le build (important pour ne pas interférer la connexion entre le serveur et le build).
- Lancez le serveur Python.
- Lancez le jeu en utilisant le fichier
.exe
généré. - Déplacez la fenêtre de jeu sur un écran ayant la résolution 1920x1080 (important).
⚠️ Assurez-vous que l'écran sur lequel est projeté le jeu est configuré avec la résolution 1920x1080.
⚠️ Assurez-vous que le moteur Unity est FERMÉ lors du build.
⚠️ Assurez-vous que le serveur Python est bien lancé.
⚠️ Assurez-vous qu'aucun autre programme n'utilise la webcam.
⚠️ Assurez-vous qu'aucun autre programme n'utilise les ports d'écoutes (3000 et 3001).
⚠️ Assurez-vous de configurer la backend de la caméra dans le fichierserver.py
pour utiliserCAP_ANY
au lieu deCAP_DSHOW
.
Vous devez modifier la ligne suivante dans server.py
webcam_backend = cv2.CAP_DSHOW
Par la ligne suivante
webcam_backend = cv2.CAP_ANY
Voir Crédits