BoxedMan/README.md

88 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```