{"id":3891,"date":"2018-06-27T16:27:40","date_gmt":"2018-06-27T15:27:40","guid":{"rendered":"https:\/\/telefab.fr\/?p=3891"},"modified":"2026-04-30T17:33:59","modified_gmt":"2026-04-30T15:33:59","slug":"detection-de-mouvement-3d-appliquee-a-un-jeu-video","status":"publish","type":"projet","link":"https:\/\/hub.imt-atlantique.fr\/fablab\/projet\/detection-de-mouvement-3d-appliquee-a-un-jeu-video\/","title":{"rendered":"D\u00e9tection de mouvement 3D appliqu\u00e9e \u00e0 un jeu vid\u00e9o"},"content":{"rendered":"<p>Notre projet [1] consiste en la cr\u00e9ation d\u2019un syst\u00e8me de d\u00e9tection de mouvements 3D appliqu\u00e9 \u00e0 un jeu vid\u00e9o avec le mouvement de la main.<\/p>\n<p>Nous avons constat\u00e9 que les technologies Kinect sont couteuses et complexes pour beaucoup. Nous avons donc souhaiter dans notre projet, \u00a0mod\u00e9liser notre propre syst\u00e8me de d\u00e9tection de\u00a0mouvement. Le montage a ainsi l\u2019avantage d&rsquo;\u00eatre facilement r\u00e9alisable. et nous avons cod\u00e9 un jeu vid\u00e9o comme 1\u00e8re application de ce syst\u00e8me.<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/06\/Capture-d%E2%80%99%C3%A9cran-2018-06-27-%C3%A0-17.27.29.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3936\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/06\/Capture-d%E2%80%99%C3%A9cran-2018-06-27-%C3%A0-17.27.29-300x193.png\" alt=\"\" width=\"300\" height=\"193\" \/><\/a><\/p>\n<p><strong>Figure 1 &#8211; Le projet<\/strong> (interface du jeu vid\u00e9o \u00e0 gauche et montage \u00e0 droite avec la main d\u2019un joueur)<\/p>\n<p>Pour r\u00e9aliser le montage [2], on a besoin de :<\/p>\n<p>&#8211; 6 r\u00e9sistances : 3 x 220K , 3x10K<br \/>\n&#8211; Une carte Arduino<br \/>\n&#8211; 3 Pinces Crocodile<br \/>\n&#8211; Des files<br \/>\n&#8211; 3 Plaques en bois<br \/>\n&#8211; Feuilles Aluminium<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/06\/Capture-d%E2%80%99%C3%A9cran-2018-06-26-%C3%A0-07.53.50-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3903\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/06\/Capture-d%E2%80%99%C3%A9cran-2018-06-26-%C3%A0-07.53.50-2-300x287.png\" alt=\"\" width=\"300\" height=\"287\" \/><\/a><\/p>\n<p><strong>Figure 2 &#8211; Montage physique<\/strong><\/p>\n<p>Le montage physique consiste en la r\u00e9alisation du circuit suivant:<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/06\/Capture-d%E2%80%99%C3%A9cran-2018-06-27-%C3%A0-17.27.39.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3938\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/06\/Capture-d%E2%80%99%C3%A9cran-2018-06-27-%C3%A0-17.27.39-300x189.png\" alt=\"\" width=\"300\" height=\"189\" \/><\/a><\/p>\n<p>PLATE1, PLATE2, PLATE3 correspondent aux plaques de bois couvertes par le papier aluminium et connect\u00e9es par les pinces crocodiles.<br \/>\nPIN8, PIN9, PIN10 correspondent aux portes de la cartes Arduino.<br \/>\nNous constituons d\u2019une part la partie cr\u00e9ation du syst\u00e8me de d\u00e9tection de mouvement et d\u2019autre part r\u00e9alisons la conception et code du jeu vid\u00e9o.<\/p>\n<p>Tout d\u2019abord, pour le syst\u00e8me de d\u00e9tection de mouvements 3D il faut r\u00e9aliser le montage physique et \u00e9lectrique. Constitu\u00e9 des plaques de bois et des feuilles d\u2019aluminum, c\u2019est plut\u00f4t rapider de r\u00e9aliser la boite [2]. Nous avons accroch\u00e9 les pinces crocodiles \u00e0 chacune des plaques avec des files accroch\u00e9s \u00e0 ces pinces.<br \/>\nCela demande un travail plus minutieux pour le montage \u00e9lectrique en effet, nous avions 6 r\u00e9sistances (3 de 220K ohms et 3 de 10K ohms) que nous devions connecter \u00e0 la carte d\u2019Arduino et aux files connect\u00e9s \u00e0 la plaque.<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/06\/Capture-d%E2%80%99%C3%A9cran-2018-06-27-%C3%A0-17.27.44.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3937\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/06\/Capture-d%E2%80%99%C3%A9cran-2018-06-27-%C3%A0-17.27.44-300x239.png\" alt=\"\" width=\"300\" height=\"239\" \/><\/a><\/p>\n<p>Puis, nous avons cod\u00e9 en Arduino un programme permettant de r\u00e9cup\u00e9rer les temps de d\u00e9charge des feuilles d\u2019aluminum selon le mouvement de la main dans la boite en temps r\u00e9el (temps de r\u00e9ponse de 0,1s). Alors avec un calibrage est r\u00e9alis\u00e9 pour faire une analyse des valeurs obtenues en temps r\u00e9el pour enfin obtenir la positon de la main dans les coordonn\u00e9es cart\u00e9siennes (x, y, z). On a d\u00e9termin\u00e9 des valeurs de seuil pour diviser la boite deux parties : une zone haute et une zone basse selon la position de la main.<\/p>\n<p>Ensuite la partie conception du jeu vid\u00e9o est r\u00e9alis\u00e9e en Python avec le module Pygame. Pour la premi\u00e8re application du jeu vid\u00e9o , nous voulons un jeu vid\u00e9o avec un avatar qui bouge seulement selon un plan horizontal. Le joueur avec sa main peut contr\u00f4ler la positon verticale de l\u2019avatar qui avance de gauche \u00e0 droite avec une vitesse qui augmente lin\u00e9airement.<\/p>\n<p>L\u2019une des plus grosses difficult\u00e9s est de r\u00e9aliser la connexion entre les deux parties de notre projet : la carte Arduino qui rend compte des mouvements du joueur et le jeu vid\u00e9o. Il est facile de trouver des tutoriels sur internet proposant de coder un script Python permettant d\u2019aller lire les informations sur le port s\u00e9rie via lequel la carte Arduino transmet les informations. Cependant dans notre projet nous utilisons aussi une librairie n\u00e9cessaire pour coder le jeu : Pygame. Il y a une mauvaise interaction entre ces deux parties du code : si une m\u00eame action peut \u00eatre r\u00e9alis\u00e9e par une frappe de clavier (ceci est un \u00ab \u00e9v\u00e9nement \u00bb dans la terminologie Pygame), et par une lecture port s\u00e9rie, il y a un conflit et cette derni\u00e8re s\u2019arr\u00eate. La solution (qui nous a pris longtemps \u00e0 trouver !) tient \u00e0 simplement supprimer les doublons : une action n\u2019est d\u00e9sormais li\u00e9e qu\u2019\u00e0 une seule condition, soit une action sur l\u2019ordinateur, soit un mouvement du joueur. Le simple fait de ne pas proposer deux fa\u00e7ons de piloter notre petit Gandalf \u00e9tait donc la meilleure mani\u00e8re de rendre notre<br \/>\ncode fonctionnel.<\/p>\n<p>Durant notre projet, nous nous sommes principalement concentr\u00e9s sur la partie d\u00e9tection. Si \u00e0 l\u2019avenir un groupe d\u2019\u00e9l\u00e8ves souhaiterait continuer le projet, il peut \u00eatre tr\u00e8s facile de ne pas r\u00e9it\u00e9rer nos recherches sur cette partie et de l\u2019exploiter directement : le code sera \u00e0 votre disposition. Il serait donc possible de travailler sur un jeu plus \u00ab fin \u00bb. En effet, notre syst\u00e8me est suffisamment pr\u00e9cis pour multiplier les commandes (nous ne proposions que deux positions, haute et basse). L\u2019utilisations de deux modules de d\u00e9tections (un pour chaque main) permettrait de doubler les possibilit\u00e9s de pilotage. Il devient clairement envisageable de piloter un jeu de plateforme. Si le projet vous int\u00e9resse et que vous avez des questions, n\u2019h\u00e9sitez pas \u00e0 nous joindre !<\/p>\n<p><strong>Vid\u00e9o de pr\u00e9sentation<\/strong><\/p>\n\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p><strong>Code + explications :<\/strong><br \/>\n<strong>https:\/\/github.com\/isival\/Detection-de-mouvement-3D-appliquee-a-un-jeu-video<\/strong><\/p>\n<p>Auteurs :<br \/>\nBONAUD Victoire<br \/>\nEL BEJI Sarah<br \/>\nFAVIER Mathis<br \/>\nVALETTE Isidore<\/p>\n","protected":false},"author":1,"featured_media":3936,"parent":0,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"categories":[15,20],"type_projet":[],"class_list":["post-3891","projet","type-projet","status-publish","has-post-thumbnail","hentry","category-formation","category-projets"],"acf":{"objectifs":"","categorie":false,"fichiers_associes":null},"_links":{"self":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/3891","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet"}],"about":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/types\/projet"}],"author":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":1,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/3891\/revisions"}],"predecessor-version":[{"id":10487,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/3891\/revisions\/10487"}],"wp:attachment":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/media?parent=3891"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/categories?post=3891"},{"taxonomy":"type_projet","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/type_projet?post=3891"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}