wifi-densepose/examples/three.js
ImgBotApp 966cbbefcd
[ImgBot] Optimize images
*Total -- 28,217.84kb -> 17,087.69kb (39.44%)

/docs/archtocode-visual-overview/frontent-architecture.png -- 1,502.28kb -> 511.43kb (65.96%)
/v2/crates/wifi-densepose-desktop/icons/128x128@2x.png -- 0.84kb -> 0.29kb (65.5%)
/docs/archtocode-visual-overview/state-decision-flow.png -- 2,501.29kb -> 876.12kb (64.97%)
/docs/archtocode-visual-overview/advanced-architecture.png -- 4,532.40kb -> 1,601.45kb (64.67%)
/docs/archtocode-visual-overview/error-handling-flow.png -- 1,969.83kb -> 751.57kb (61.85%)
/references/densepose_performance_chart.png -- 194.74kb -> 75.07kb (61.45%)
/docs/archtocode-visual-overview/hight-level-flow-architecture.png -- 1,283.08kb -> 522.45kb (59.28%)
/ui/mobile/assets/android-icon-background.png -- 17.14kb -> 7.20kb (57.99%)
/docs/archtocode-visual-overview/project-timeline.png -- 1,319.36kb -> 632.80kb (52.04%)
/ui/mobile/assets/android-icon-monochrome.png -- 4.04kb -> 2.31kb (42.78%)
/assets/v2-screen.png -- 4,087.10kb -> 2,889.57kb (29.3%)
/assets/screen.png -- 269.65kb -> 197.38kb (26.8%)
/v2/crates/wifi-densepose-desktop/icons/128x128.png -- 0.38kb -> 0.28kb (26.4%)
/references/wifi-densepose-arch.png -- 1,111.61kb -> 821.96kb (26.06%)
/references/generated_image.png -- 1,111.61kb -> 821.96kb (26.06%)
/ui/mobile/assets/favicon.png -- 1.10kb -> 0.83kb (24.27%)
/examples/three.js/screenshots/01-helpers.png -- 95.81kb -> 73.83kb (22.94%)
/assets/seed.png -- 1,255.45kb -> 1,007.93kb (19.72%)
/references/generated_image_1.png -- 1,656.90kb -> 1,341.06kb (19.06%)
/assets/screenshot.png -- 400.68kb -> 333.66kb (16.73%)
/assets/ruview-seed.png -- 1,957.18kb -> 1,770.38kb (9.54%)
/dashboard/public/icon-512.svg -- 0.49kb -> 0.46kb (7.54%)
/examples/three.js/screenshots/03-skinned.png -- 631.58kb -> 606.96kb (3.9%)
/assets/ruview-small.jpg -- 203.21kb -> 195.44kb (3.83%)
/examples/three.js/screenshots/04-skinned-fbx.png -- 682.33kb -> 658.81kb (3.45%)
/examples/three.js/screenshots/02-cinematic.png -- 597.73kb -> 579.00kb (3.13%)
/examples/three.js/screenshots/05-skinned-realtime.png -- 595.87kb -> 579.02kb (2.83%)
/assets/ruview-small-gemini.jpg -- 156.91kb -> 152.88kb (2.57%)
/dashboard/public/icon-192.svg -- 0.31kb -> 0.30kb (2.56%)
/ui/mobile/assets/android-icon-foreground.png -- 76.95kb -> 75.31kb (2.13%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2026-06-03 05:14:09 +00:00
..
demos fix(three.js): graceful banner when X Bot.fbx 404s on gh-pages (#651) 2026-05-19 18:43:21 -04:00
screenshots [ImgBot] Optimize images 2026-06-03 05:14:09 +00:00
server feat(examples/three.js): cinematic skinned realtime pose demo + folder reorg (#584) 2026-05-17 17:01:02 -04:00
.gitignore feat(examples/three.js): cinematic skinned realtime pose demo + folder reorg (#584) 2026-05-17 17:01:02 -04:00
README.md feat(examples/three.js): cinematic skinned realtime pose demo + folder reorg (#584) 2026-05-17 17:01:02 -04:00
index.html feat(pages): deploy three.js demos to gh-pages/three.js/ (#649) 2026-05-19 18:17:43 -04:00

README.md

three.js demos

Five progressively richer browser demos of the ADR-097 sensing-helpers scene, ending with a live MediaPipe-Pose → Mixamo X Bot retargeting pipeline driven by a real ESP32 CSI feed.

Run them

python examples/three.js/server/serve-demo.py
# then open one of the URLs the script prints

server/serve-demo.py is a tiny ThreadingHTTPServer with aggressive no-cache headers — the stdlib http.server is single-threaded and times out on the parallel script + FBX fetches the demos make.

Demos

# File What it shows
01 demos/01-helpers.html Plain ADR-097 helpers in the point-cloud viewer
02 demos/02-cinematic.html Cinematic camera + pseudo-CSI visualization on top of #01
03 demos/03-skinned.html GLTF skinned mesh + additive animation blending
04 demos/04-skinned-fbx.html Mixamo X Bot loaded from FBX in the ADR-097 scene
05 demos/05-skinned-realtime.html Webcam → MediaPipe Pose Heavy → Mixamo IK retarget, live ESP32 CSI overlay
Screenshot
01 02
03 04
05

Layout

examples/three.js/
├── README.md
├── .gitignore
├── demos/                       # 5 self-contained HTML demos
│   ├── 01-helpers.html
│   ├── 02-cinematic.html
│   ├── 03-skinned.html
│   ├── 04-skinned-fbx.html
│   └── 05-skinned-realtime.html
├── screenshots/                 # one PNG per demo
│   └── 0N-*.png
├── server/
│   ├── serve-demo.py            # local HTTP server with no-cache headers
│   └── ruvultra-csi-bridge.py   # ESP32 CSI WebSocket bridge (ruvultra:8766)
└── assets/
    └── X Bot.fbx                # gitignored — get your own from mixamo.com
                                 #   (FBX Binary, T-Pose, Without Skin)
                                 # used by demos 04 and 05

Mixamo X Bot

Demos 04 and 05 expect assets/X Bot.fbx. It's gitignored (size + license boundary). Download yours from mixamo.com: pick the "X Bot" character, export as FBX Binary, T-Pose, Without Skin, and drop it into assets/.

Live ESP32 CSI overlay (demo 05 only)

server/ruvultra-csi-bridge.py is the systemd-deployable bridge that runs on the ruvultra host (over Tailscale). It listens for ESP32-S3 CSI on UDP and re-broadcasts it as WebSocket frames at ws://ruvultra:8766/csi. Demo 05 auto-connects; if the socket is down, it falls back to the bundled idle clip plus a synthetic CSI driver.

Open issues

  • #583 — head/face tracking fidelity in 05-skinned-realtime.html. Recommended fix: swap MediaPipe Pose Heavy for MediaPipe Holistic (same API, adds 468-point face mesh + hand landmarks for proper PnP head pose and finger curl tracking).