2.9 KiB
2.9 KiB
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
.specfil.
🚀 Installation & Kørsel
1. Klargør miljø (Udvikling)
# Windows
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
# Linux (Ubuntu / Linux Mint)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
2. Kør med GUI Kontrolpanel (Standard)
python main.py
Dette åbner to vinduer:
- BoxedMan - Kontrolpanel: Viser live kamerabillede, skyggemaske, kalibreringsknapper og parametre (skyggetærskel, støjfilter, ganghastighed).
- 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
- I kontrolpanelet klikkes på "🎯 Start Kalibrering".
- Klik på de 4 hjørner af den hvide projektionsflade direkte i kamerabilledet i urets retning:
- Øverst-Venstre
- Øverst-Højre
- Nederst-Højre
- Nederst-Venstre
- Kalibreringen gemmes automatisk og opdaterer projektionsgeometrien med det samme.
🔨 Byg Standalone Binær (Build System)
Windows 10 & 11
Kør PowerShell-scriptet:
.\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:
chmod +x build_linux.sh
./build_linux.sh
Outputtet placeres i dist/BoxedMan/BoxedMan.
⌨️ Yderligere CLI Flag
# 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