82 lines
2.6 KiB
Markdown
82 lines
2.6 KiB
Markdown
# 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`.
|