{"id":15146603,"url":"https://github.com/drumath2237/babylon-body-tracking-testbed","last_synced_at":"2026-01-06T09:05:07.868Z","repository":{"id":237529276,"uuid":"789507595","full_name":"drumath2237/babylon-body-tracking-testbed","owner":"drumath2237","description":"webxr body tracking feature testbed with babylon.js","archived":false,"fork":false,"pushed_at":"2024-06-02T10:09:50.000Z","size":38,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-01T02:43:41.620Z","etag":null,"topics":["babylonjs","webxr"],"latest_commit_sha":null,"homepage":"https://drumath2237.github.io/babylon-body-tracking-testbed/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drumath2237.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"drumath2237","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"custom":null}},"created_at":"2024-04-20T18:41:26.000Z","updated_at":"2024-12-12T20:07:31.000Z","dependencies_parsed_at":"2024-05-06T17:11:26.077Z","dependency_job_id":"8ec438f6-1448-4ef6-8434-56a6379e0795","html_url":"https://github.com/drumath2237/babylon-body-tracking-testbed","commit_stats":null,"previous_names":["drumath2237/babylon-body-tracking-testbed"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drumath2237%2Fbabylon-body-tracking-testbed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drumath2237%2Fbabylon-body-tracking-testbed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drumath2237%2Fbabylon-body-tracking-testbed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drumath2237%2Fbabylon-body-tracking-testbed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drumath2237","download_url":"https://codeload.github.com/drumath2237/babylon-body-tracking-testbed/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245735882,"owners_count":20663807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["babylonjs","webxr"],"created_at":"2024-09-26T12:03:12.019Z","updated_at":"2026-01-06T09:05:07.794Z","avatar_url":"https://github.com/drumath2237.png","language":"TypeScript","funding_links":["https://ko-fi.com/drumath2237"],"categories":[],"sub_categories":[],"readme":"# Babylon.js WebXR Body Tracking Testbed\n\n[![Deploy](https://github.com/drumath2237/babylon-body-tracking-testbed/actions/workflows/deploy.yml/badge.svg)](https://github.com/drumath2237/babylon-body-tracking-testbed/actions/workflows/deploy.yml)\n\nhttps://github.com/drumath2237/babylon-body-tracking-testbed/assets/11372210/d4ac4dcb-dd70-4fa1-adb9-44b938b8226b\n\n## About\n\nAn experiment for implementing Babylon.js WebXR Body Tracking Feature.\n\n## Environment\n\n- Meta Quest v65.0.0.546.596219110\n- Quest Browser 33.2.0.74.167.602488549\n- Babylon.js 7.3.1\n\n## Usage\n\n```bash\n# install dependencies\npnpm install\n\n# start dev server\npnpm dev\n\n# build projects\npnpm build\n```\n\n\u003e [!IMPORTANT]\n\u003e You need to enable WebXR Experiments flag on Quest Browser (for body-tracking).\n\u003e To do this, access chrome://flags and serach \"webxr\" in serch bar.\n\n[\u003e\u003e Demo Page \u003c\u003c](https://drumath2237.github.io/babylon-body-tracking-testbed/)\n\n## API Spec\n\n```ts\nconst xr = await scene.createDefaultXRExperienceAsync({\n  uiOptions: {\n    sessionMode: \"immersive-ar\",\n    referenceSpaceType: \"bounded-floor\",\n  },\n});\nconst { featuresManager, sessionManager } = xr.baseExperience;\n\n// init body-tracking feature\nconst bodyTracking = featuresManager.enableFeature(\n  WebXRBodyTracking.Name,\n  \"latest\",\n  {\n    mirrorZ: true, // swap z-direction\n    baseXRSpace: sessionManager.referenceSpace, // base XRSPace\n  }\n) as WebXRBodyTracking;\n\n// acquire body joints data from event\nbodyTracking.onBodyTrackedObservable.add((joints) =\u003e {\n  // acquire body joints count\n  const jointCount = joints.size;\n\n  // usage of acquire specific joint pose\n  const headJoint = joints.get(\"head\");\n  if (headJoint) {\n    headJoint.position;\n    headJoint.rotation;\n  }\n\n  // you can iterate joints by for-statement\n  for (const [jointName, { position, rotation }] of joints) {\n  }\n  // or...\n  joints.forEach(({ position, rotation }, jointName) =\u003e {});\n});\n\n// you can also use Frame capture loop\nsessionManager.onXRFrameObservable.add(() =\u003e {\n  if (bodyTracking.size === 0) return;\n\n  const joints = bodyTracking.joints;\n});\n```\n\n## Author\n\n@drumath2237\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrumath2237%2Fbabylon-body-tracking-testbed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrumath2237%2Fbabylon-body-tracking-testbed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrumath2237%2Fbabylon-body-tracking-testbed/lists"}