BoxedMan/README.md

82 lines
2.6 KiB
Markdown
Raw Permalink 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.
* **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`.