88 lines
2.9 KiB
Markdown
88 lines
2.9 KiB
Markdown
# 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
|
||
```
|