TDDD57 Fysisk interaktion och spelprogrammering
VT1
### Teknik
I kursen använder vi TensorFlow-modeller med Mediapipe i Python och skriver det datat till fil. Sedan läser vi datat från fil i Godot och det är där ni bygger era lösnignar. På detta sätt kan vi jobba i Godot lokalt och fokusera på designarbete utifrån tekniken.
Labbarna gör vi med [Hand-landmarks](https://developers.google.com/mediapipe/solutions/vision/hand_landmarker) data för ett det av flera skäl är den teknik som har mest rika dimmensioner men sedan även kan testas sirekt sittande framför datorn. Projektet vi kör är uppsatt för att spåra täv händer, men det går att options i koden för att språa bara en hand och det kan förbättra prestandan.
Till projektet kan man själv skapa ett liknande utläsning av data från de [andra modellera](https://developers.google.com/mediapipe/solutions/examples) som finns här.
Deltagare i kursen blir inbjudna till ett Gitlab-repo man kan ladda ner och jobba från.
* [Mediapipe](https://google.github.io/mediapipe/getting_started/python) med ready to use solutions
* [Godot](https://www.godotengine.org/docs/). Vi kör GDScript som är väldigt likt python.
#### Installation
Installera och kör GodotEngine 4.2. Dra ner projektet från gitlab som du blir inbjuden till i och med kursstart och börja jobba. Forka projektet till ett eget projekt. Basprojektet innehåller skelett för python-kod och läsning av datat via fil i JSON-format.
På windows är det lite sämre ibland med terminalstöd, men t.ex. med [https://www.cygwin.com/](https://www.cygwin.com/) eller [gitbash](https://gitforwindows.org/) kan man jobbar lite mer nära linux/mac och köra enklare en del kommandon.
### Python-version
Mediapipe fungerar med [följande versioner av python](https://developers.google.com/mediapipe/solutions/setup_python) (3.8-3.11). Rekomenderat är förstås 3.11. [Installera 3.11 härifrån](https://peps.python.org/pep-0664/). OBS! **Mediapipe fungerar inte med python 3.12 elelr 3.13**
### Installation av mediapipe för python:
| | |
| --| ---|
|Säkra att pip finns| [pip.pypa.io](https://pip.pypa.io/en/stable/installation/)|
|pip install mediapipe| Installera mediapipe i din virtuella miljö |
### Använd en virtuel miljö. OBS, lägg den utanför repot så att ni inte pushar pytnon-miljön till repot:
| | |
| --| ---|
|pip install virtualenv| Instalera modu för att hantera virtuella miljöer i python.|
|virtualenv env --python=python3.11| Ska virtuell miljö med python-version. Miljön får namnet env som du kan byta moit vad du vill. Kan nu köra python 3.11 även om t.ex. du köra python 3.12 på din egna miljö.|
|source env/bin/activate| Mac/Linux: Aktivera din miljö med namnet env.|
|source env/Script/activate| Win: Aktivera din miljö|
|deactivate | Läman den virutella miljön |
|rm -rf env| Deleta python-miljn med namnet env |
du kan nu köra igång datainsamlingen via de olika python-filerna som finns i repot. Även task-filerna ska finna med, men om de blivit påverkade av gitandet kan de laddas ner från mediapipe hemsida här:
[hand_landmarkers.task](https://developers.google.com/mediapipe/solutions/vision/hand_landmarker/index#models)
I kursen är tanken att man sedan laddar ner godot-projektet och startar sitt python-program från termialen och sedan läser data från godot som redan är uppsatt i projektet. Hands.py, Face_detect.py osv ...
Datat från Madiapipe skrivs till fil och läses från fil i Godot, med en time-data som kan används för att avögra om det är gamnma data i filen eller inte. T.ex. om händerna är ur skrämen kommer inte någon ny data.
Sidansvarig: Erik Berglund
Senast uppdaterad: 2024-01-11