CastFit
Fancy fitness, no fancy equipment.
Core trick
Tracks the player's body through a webcam to score interaction with projected targets, while Gemini adjusts difficulty live.
Description
Fancy fitness, no fancy equipment. CastFit projects dynamic workouts onto your walls and floor, automatically calibrating to any room. Your personal Gemini AI coach adjusts difficulty in real time — just you, one projector, and your space.
README excerpt
# FitProjection 🎮💪
フィットネス × プロジェクションマッピングのゲームシステム
---
## 物理セットアップ
### 必要なもの
| アイテム | スペック目安 | 費用目安 |
|---|---|---|
| プロジェクター | 2000ルーメン以上、短焦点推奨 | ¥15,000〜30,000 |
| Webカメラ | 1080p、広角(90°以上) | 手持ちPC内蔵でも可 |
| PC | Core i5 / M1以上、Python実行環境 | 手持ちで可 |
| 三脚 or 棚 | カメラ固定用 | ¥1,000〜 |
### 部屋のセットアップ
```
[後ろの壁]
📽️ ← プロジェクター(天井近く or 棚の上)
|
| (斜め下に投影)
↓
[床 or 正面壁] ← プレイエリア(2m × 2m 程度)
📷 ← カメラ(斜め上から全身が映る位置)
```
**推奨配置(床投影の場合)**
1. プロジェクターを天井付近(1.8m以上)に設置、床に向けて斜め下に投影
2. カメラは1.5〜2m高さから全身が映るよう斜め俯瞰で固定
3. プレイエリアは2m × 2m確保(ソファや家具を一時退かす)
4. 部屋を暗くするほど投影が見やすい(夜間推奨)
**壁投影の場合(よりシンプル)**
1. プロジェクターを普通に正面に向けて壁に投影
2. カメラはプロジェクターの隣や上に設置
3. 体の前後方向の動き(スクワット等)でゲームする
---
## インストール
```bash
# リポジトリをクローン or フォルダを配置後
cd fitprojection
# uv を使って依存インストール
uv sync
# 起動
uv run python main.py
```
> **注意**: 以前の `requirements.txt` は `pyproject.toml` に移行しました。
---
## 起動から遊ぶまでの流れ
### Step 1: キャリブレーション
**自動QRキャリブレーション(推奨)**
1. 起動するとプロジェクターにQRグリッドが表示される
2. カメラでQRコードを検出(4個以上で自動計算)
3. `q` または `c` で完了
**手動キャリブレーション(QR検出失敗時)**
1. プロジェクターウィンドウに4つの緑の丸が表示される
2. カメラウィンドウを見ながら、その4点を順番にクリック(TL → TR → BR → BL)
3. `c` で確認、`r` でリセット
```
プロジェクター画面: カメラ画面で見た投影点:
TL ● ● TR ●TL ●TR
→
BL ● ● BR ●BL ●BR
```
> これでカメラ座標 ↔ プロジェクター座標の変換(ホモグラフィー)が完成
### Step 2: ゲーム開始
自動的にデフォルトゲーム(Ground Tap)が開始されます。
ゲームを変更したい場合は `main.py` の `CONFIG["game_index"]` を変更。
### Step 3: プレイ
- `q` キーで終了
---
## ゲームモード
### 🎯 Ground Tap(グラウンドタップ)