Eye Sim is a React + Three.js digital face rig presentation system with procedural eyes as the hero feature. The default route is the product surface: a polished face rig with opt-in tracking, shot-based presentation modes, and release-safe controls.
The repo also contains isolated lab routes under /labs/* for material parity, beauty shading, WebGPU diagnostics, and offline Facecap conditioning. Labs are intentionally separated from the default experience and may be unstable or renderer-specific.
- React 19 + Vite
- Three.js / React Three Fiber / Drei
- MediaPipe face landmarker
- Leva for live controls
Prerequisite: Node.js 22+ and pnpm.
- Install dependencies:
pnpm install - Start the dev server:
pnpm dev - Open
http://localhost:3003
pnpm devstarts the local app.pnpm buildbuilds the production bundle.pnpm lintruns the TypeScript no-emit check.pnpm inspect:facecapprints ranked eye-mesh candidates for the facecap asset.pnpm condition:facecapregenerates the conditioned facecap payload underdata/conditioning/.
src/routes/contains the main app route and lab routes.src/routes/MainRoute.tsxis the product surface.src/routes/*LabRoute.tsxand other/labs/*routes are investigation surfaces, not product defaults.src/features/presentation/contains shot definitions for camera framing, scale, defaults, and release-safe interaction boundaries.src/features/tracking/contains the tracking adapter contract plus MediaPipe pipeline modules.src/features/face/contains face runtime, eye-fit, and material modules.public/models/andpublic/vendor/store deterministic runtime assets for Facecap, MediaPipe, and Basis transcoding.data/conditioning/stores generated conditioning payloads and manifests.scripts/conditioning/probes/contains one-off inspection probes for the conditioning bake.
The Beauty WebGPU Lab should stay in this repo until the shot system and face rig runtime stabilize. It should become a separate package only if it starts needing its own renderer lifecycle, asset bake cadence, or shader test harness that would slow down the main face rig release path.