# BoxedMan 📦🚶‍♂️ En interaktiv visualisering og fysisk projektionsinstallation bygget i Python & Qt (PySide6). * **Projektoren** viser en ren hvid flade, hvor en rød autonom "Peg Man" bevæger sig rundt i sin kasse. * **Webkameraet** overvåger projektionsfladen og detekterer fysiske skygger eller silhuetter (fx hænder, kroppe, papstykker). * Skyggerne omsættes i realtid til faste 2D-kollisionsobjekter (*solids*), som Peg Man kan gå på, klatre op ad, hoppe ned fra og interagere med. * **Kontrolpanelet** giver fuld visuel kontrol over kamerabillede, kalibrering, parametre og projektionsvindue. --- ## 🛠️ Teknologistak * **GUI & Kontrolpanel**: PySide6 (Qt) – Cross-platform til Windows 10/11, Ubuntu og Linux Mint. * **Computer Vision**: OpenCV (`cv2`) – 4-punkts homografisk perspektivtransformation, adaptiv skyggeudtræk og polygonapproksimering. * **Fysikmotor**: Pymunk (Chipmunk 2D) – realtids segment/polygon kollisionshåndtering og raycasts. * **Grafik & Display**: Pygame-ce – lavlatens rendering af projektorfladen. * **Standalone Packaging**: PyInstaller med cross-platform `.spec` fil. --- ## 🚀 Installation & Kørsel ### 1. Klargør miljø (Udvikling) ```powershell # Windows py -3.12 -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt ``` ```bash # Linux (Ubuntu / Linux Mint) python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ### 2. Kør med GUI Kontrolpanel (Standard) ```powershell python main.py ``` Dette åbner to vinduer: 1. **BoxedMan - Kontrolpanel**: Viser live kamerabillede, skyggemaske, kalibreringsknapper og parametre (skyggetærskel, støjfilter, ganghastighed). 2. **BoxedMan - Projection Display**: Det rene projektionsbillede, der trækkes over på projektoren (eller sættes i fuldskærm via knappen i kontrolpanelet). ### 3. Kalibrering i GUI 1. I kontrolpanelet klikkes på **"🎯 Start Kalibrering"**. 2. Klik på de 4 hjørner af den hvide projektionsflade direkte i kamerabilledet i urets retning: 1. *Øverst-Venstre* 2. *Øverst-Højre* 3. *Nederst-Højre* 4. *Nederst-Venstre* 3. Kalibreringen gemmes automatisk og opdaterer projektionsgeometrien med det samme. --- ## 🔨 Byg Standalone Binær (Build System) ### Windows 10 & 11 Kør PowerShell-scriptet: ```powershell .\build_windows.ps1 ``` Outputtet placeres i `dist\BoxedMan\BoxedMan.exe` (indeholder alle afhængigheder og kan køres uden Python installeret). ### Linux Mint & Ubuntu Kør bash-scriptet: ```bash chmod +x build_linux.sh ./build_linux.sh ``` Outputtet placeres i `dist/BoxedMan/BoxedMan`. --- ## ⌨️ Yderligere CLI Flag ```powershell # Kør i simulerings-tilstand (test uden kamera, tegn med musen): python main.py --sim # Kør uden GUI kontrolpanel (kun direkte projektionsvindue): python main.py --no-gui # Specificér specifikt kamera-indeks (hvis flere webcams er tilsluttet): python main.py --cam 1 ```