BoxedMan/README.md

2.9 KiB
Raw Permalink Blame History

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)

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

  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:

.\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