{"id":17820601,"url":"https://github.com/64blit/eyepop-demo-motion-capture","last_synced_at":"2026-07-08T09:31:17.570Z","repository":{"id":220022217,"uuid":"750107113","full_name":"64blit/eyepop-demo-motion-capture","owner":"64blit","description":"A realtime motion capture demo in the browser using EyePop.ai","archived":false,"fork":false,"pushed_at":"2024-02-13T22:10:38.000Z","size":101847,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T09:46:02.480Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/64blit.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-30T01:54:54.000Z","updated_at":"2024-08-25T05:42:50.000Z","dependencies_parsed_at":"2024-02-05T18:51:41.365Z","dependency_job_id":null,"html_url":"https://github.com/64blit/eyepop-demo-motion-capture","commit_stats":null,"previous_names":["64blit/eyepop-demo-motion-capture"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/64blit/eyepop-demo-motion-capture","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/64blit%2Feyepop-demo-motion-capture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/64blit%2Feyepop-demo-motion-capture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/64blit%2Feyepop-demo-motion-capture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/64blit%2Feyepop-demo-motion-capture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/64blit","download_url":"https://codeload.github.com/64blit/eyepop-demo-motion-capture/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/64blit%2Feyepop-demo-motion-capture/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35260671,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-08T02:00:06.796Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-27T17:06:47.455Z","updated_at":"2026-07-08T09:31:17.548Z","avatar_url":"https://github.com/64blit.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## EyePop.ai Motion Capture Demo\n\nA realtime motion capture demo in the browser using the simple low code EyePop platform.\n\n---\n\n### Getting started\n\n- Log into your EyePop account at https://dashboard.eyepop.ai/sign-in\n- Create your own **API Pop** and select _Live - People and Common Object_ from the object library\n- Check out the **API Info** section of your Pop and copy'n paste the `endpoint` and `Auth Token` into `config.js` of your local copy of this repo.\n- Edit the `model.js` file with your own mixamorig enabled rig file path. Either fork this sandbox and upload your own model or replace the path with a link.\n\n### Need a Web Server locally to test?\n\n- Easiest: [Web based IDE](https://replit.com/)\n- Option 1) Python: `python3 -m http.server 9001`\n- Option 2) [LiveServer Extension to VS Code](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)\n\nStart your web server from within the **_parent_** directory and check out the examples: http://localhost:9001/1_upload_image.html\n\n---\n\n## Overview\n\nIn this documentation, we'll talk about the basic architecture choices to allow for advanced graphics drawing with the EyePopSDK.\nTo get started let's dive into the [`1-heatmap_shoppers.html`](./1-heatmap_shoppers.html) demo.\nOur html contains a background canvas and video element and the main script components are in:\n\n- `run()`: Starts the drawing loop\n- `save()`: Saves the prediction data to a json data file\n- `load()`: Loads the saved json data file\n\nThe majority of this code can be found in the [`develop documentation`](https://docs.google.com/document/d/1Bww57Zfn4csWAebSh-xSDa6c4aJ-l1RgFbSgqbew9S0/edit#heading=h.bxxeegbkyqlg) so next lets dive into the specifics of the Three.js setup.\n\n---\n\n## Advanced Graphics Architecture Overview\n\nThis project uses the [`../util/ThirdEyePop.js`]('../utils/ThirdEyePop.js') framework to handle the Three.js rendering and scene creation.\n\nNotable Features:\n\n- Custom post effect stack for rendering video directly to canvas, heatmap rendering\n- Video playback buffers and syncs to prediction data\n- Display responsive and OnHoverOver/OnHoverOff shows dat.gui controls\n- Procedural geometry building for pose bones and more!\n\n---\n\n`../util/ThirdEyePop.js`\n\n**_Description:_**\nThis is the main utility class, it handles rendering the scene, moving meshes to match the prediction data, buffering video playback, the render loop, and more.\n\n**_API_**\n\n- `setup()`: Initializes the renderer and mesh managers\n- `getPercentAnalyzed()`: Returns a 0-100 integer percentage of the prediction data loaded.\n- `render()`: Runs the render loop manually, automatically renders otherwise\n- `pushPredictionData(predictionData)`: Takes prediction data and stores it to an internal stack.\n- `popPredictionData()`: Pops one frame off the stack with `predictionData.shift()`.\n- `getPredictionData()`: Gets all the prediction frame data.\n\n---\n\n`managers/SceneManager.js`\n\n**_Description:_**\nThe class that builds and manages adding meshes. Currently handles drawing center points, person paths, person bounds, person trace ids, and person poses.\n\n---\n\n`managers/SceneManager.js`\n\n**_Description:_**\nThe class that builds and manages adding meshes and moving them around in a scene. It notably has a PeopleManager subclass which is used to track any objects with the person classLabel.\n\n---\n\n`managers/RenderManager.js`\n\n**_Description:_**\nThe main rendering class, contains an Effect Compositor and camera creation/rendering.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F64blit%2Feyepop-demo-motion-capture","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F64blit%2Feyepop-demo-motion-capture","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F64blit%2Feyepop-demo-motion-capture/lists"}