# BoxedMan 📦🚶‍♂️ En interaktiv visualisering og fysisk projektionsinstallation bygget i Python. * **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. --- ## 🛠️ Teknologistak * **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 – fuldskærms rendering på projektor. --- ## 🚀 Installation & Kørsel ### 1. Klargør miljø ```powershell # Opret og aktivér virtuelt miljø py -3.12 -m venv .venv .\.venv\Scripts\Activate.ps1 # Installer afhængigheder pip install -r requirements.txt ``` ### 2. Kalibrering (Første gang) Når du starter BoxedMan første gang med projektor og kamera sat op, åbnes kalibreringsvinduet automatisk. Du kan også køre kalibreringen direkte når som helst: ```powershell python main.py --calibrate ``` * Klik på de 4 hjørner af den hvide projektionsflade i kamera-vinduet i rækkefølgen: 1. **Øverst-Venstre** 2. **Øverst-Højre** 3. **Nederst-Højre** 4. **Nederst-Venstre** * Tryk på **'c'** for at bekræfte og gemme kalibreringen. * Tryk på **'r'** for at nulstille punkterne hvis du klikkede forkert. ### 3. Normal kørsel ```powershell # Standard kørsel i vindue python main.py # Kør i fuldskærm på projektoren python main.py --fullscreen # Vælg et specifikt webkamera-indeks (hvis du har flere tilsluttet, fx 0, 1, 2) python main.py --cam 1 ``` ### 4. Simulerings-tilstand (Uden webcam/projektor) Hvis du vil teste fysik og Peg Mans adfærd direkte på din skærm: ```powershell python main.py --sim ``` * **Venstreklik og træk musen**: Tegn forhindringer/skygger. * **Højreklik**: Ryd alle tegnede forhindringer. --- ## ⌨️ Genvejstaster under kørsel | Tast | Funktion | |---|---| | **b** | Tag et nyt baseline baggrundsbillede (når skærmen er helt tom for skygger) | | **d** | Slå Vision Debug Mask overlay til/fra | | **c** | Start 4-punkts kalibrering igen | | **r** | Nulstil Peg Mans position | | **ESC** | Afslut programmet | --- ## ⚙️ Konfiguration Indstillinger som f.eks. kameraopløsning, projektorstørrelse, tyngdekraft, ganghastighed og skyggefølsomhed kan justeres i `src/config.py` eller gemmes i `config/settings.json`.