{"_id":"@blcklab/anyo-avatar","_rev":"2-42520611bfb296cfdc47b34b5271a804","name":"@blcklab/anyo-avatar","dist-tags":{"latest":"0.2.1"},"versions":{"0.2.0":{"name":"@blcklab/anyo-avatar","version":"0.2.0","keywords":["anyo","avatar","humanoid","3d","gltf","glb","sekai64","vrm","spatial-web"],"author":{"name":"blcklab"},"license":"MIT","_id":"@blcklab/anyo-avatar@0.2.0","maintainers":[{"name":"okarin_lab","email":"avelurs.billy@gmail.com"}],"homepage":"https://github.com/blcklab/anyo-avatar#readme","bugs":{"url":"https://github.com/blcklab/anyo-avatar/issues"},"dist":{"shasum":"7d5dd6d5f46fe75c2ad66630ca2d32e0701542cc","tarball":"https://registry.npmjs.org/@blcklab/anyo-avatar/-/anyo-avatar-0.2.0.tgz","fileCount":117,"integrity":"sha512-5fsSBiOHYKd+aRhDJFQqBYgmN1D/YcXauhIs6Nvxw2Jn8e9GbF9V9e46DTSjF+P7ypUGgXveYRQBW/UaSB54dw==","signatures":[{"sig":"MEYCIQDhMjp3rHceRGJ0KRKS5dmr8EbkiLzK7eh5iw82q8uHywIhANh0BncJVWvBYQa9n8h0t+2I4peUB/FUlRyT8RBCCDsM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blcklab%2fanyo-avatar@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":317251},"main":"./dist/cjs/index.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=22.12.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./vrm":{"types":"./dist/types/vrm/index.d.ts","import":"./dist/esm/vrm/index.js","require":"./dist/cjs/vrm/index.js"},"./sekai64":{"types":"./dist/types/sekai64/index.d.ts","import":"./dist/esm/sekai64/index.js"},"./authoring":{"types":"./dist/types/authoring/index.d.ts","import":"./dist/esm/authoring/index.js","require":"./dist/cjs/authoring/index.js"},"./contracts":{"types":"./dist/types/contracts/index.d.ts","import":"./dist/esm/contracts/index.js","require":"./dist/cjs/contracts/index.js"},"./vrm/sekai64":{"types":"./dist/types/vrm/sekai64/index.d.ts","import":"./dist/esm/vrm/sekai64/index.js"},"./package.json":"./package.json","./sekai64-binding":{"types":"./dist/types/sekai64-binding/index.d.ts","import":"./dist/esm/sekai64-binding/index.js"}},"gitHead":"68023d60def8d56a47995a61c85ff4930e945ab6","scripts":{"size":"node scripts/size.mjs","test":"npm run build && node --test tests/*.test.mjs","build":"node scripts/build.mjs","check":"npm run typecheck && npm run typecheck:examples && npm run test && npm run verify:boundaries && npm run verify:package && npm run verify:stable && npm run size","clean":"node scripts/clean.mjs","typecheck":"npm run generate:version && tsc -p tsconfig.check.json --noEmit --pretty false","verify:stable":"node scripts/verify-stable.mjs","prepublishOnly":"npm run check","verify:package":"node scripts/verify-package.mjs","generate:version":"node scripts/generate-version.mjs","verify:boundaries":"node scripts/verify-boundaries.mjs","typecheck:examples":"tsc -p tsconfig.examples.json --pretty false"},"_npmUser":{"name":"okarin_lab","email":"avelurs.billy@gmail.com"},"repository":{"url":"git+https://github.com/blcklab/anyo-avatar.git","type":"git"},"_npmVersion":"10.9.8","description":"Optional complete humanoid Avatar system for Anyo, including renderer-neutral runtime contracts, VRM 0.x/1.0 support, and explicit Sekai64 integrations.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"typesVersions":{"*":{"vrm":["dist/types/vrm/index.d.ts"],"sekai64":["dist/types/sekai64/index.d.ts"],"authoring":["dist/types/authoring/index.d.ts"],"contracts":["dist/types/contracts/index.d.ts"],"vrm/sekai64":["dist/types/vrm/sekai64/index.d.ts"],"sekai64-binding":["dist/types/sekai64-binding/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@blcklab/anyo":"0.10.0-rc.1","@blcklab/sekai64":"0.8.0-rc.33","@blcklab/anyo-animation":"0.1.1"},"peerDependencies":{"@blcklab/anyo":">=0.9.1-0 <0.10.0 || >=0.10.0-0 <1.0.0","@blcklab/sekai64":">=0.8.0-0 <0.9.0","@blcklab/anyo-animation":">=0.1.0 <0.2.0"},"peerDependenciesMeta":{"@blcklab/anyo":{"optional":true},"@blcklab/sekai64":{"optional":true},"@blcklab/anyo-animation":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/anyo-avatar_0.2.0_1789161064091_0.6433398969051507","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"_id":"@blcklab/anyo-avatar@0.2.1","bugs":{"url":"https://github.com/blcklab/anyo-avatar/issues"},"dist":{"shasum":"66903c8b6c6d3fd4f6a2f35559dc0984e2627535","tarball":"https://registry.npmjs.org/@blcklab/anyo-avatar/-/anyo-avatar-0.2.1.tgz","fileCount":117,"integrity":"sha512-HM/BugAF+veQ7Y1vGVZsuVcgV0k50DCj3FBgq4yvzPTtElEUsF+KKs265e1rQijEX3kEKc+B5EsZmqH17AE8pg==","signatures":[{"sig":"MEUCIQDvyTnIB3GcWLA7W/R7OWp0MkNI55i3PkbCRpGlELlZcgIgbB/AiXBhZyCGfxwfmzEeekwxkaxCAUmsVorSDdQZRRY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDN4VrXyxUgfwkmB6OhmNjLfmhQ4uul46VvUaPDMclQyQIgaZxMJ0JvaI7unF4f24Tjj5GiKZNbJHiR+cb5D37vUq8="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blcklab%2fanyo-avatar@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":318759},"main":"./dist/cjs/index.js","name":"@blcklab/anyo-avatar","type":"module","types":"./dist/types/index.d.ts","author":{"name":"blcklab"},"module":"./dist/esm/index.js","engines":{"node":">=22.12.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./vrm":{"types":"./dist/types/vrm/index.d.ts","import":"./dist/esm/vrm/index.js","require":"./dist/cjs/vrm/index.js"},"./sekai64":{"types":"./dist/types/sekai64/index.d.ts","import":"./dist/esm/sekai64/index.js"},"./authoring":{"types":"./dist/types/authoring/index.d.ts","import":"./dist/esm/authoring/index.js","require":"./dist/cjs/authoring/index.js"},"./contracts":{"types":"./dist/types/contracts/index.d.ts","import":"./dist/esm/contracts/index.js","require":"./dist/cjs/contracts/index.js"},"./vrm/sekai64":{"types":"./dist/types/vrm/sekai64/index.d.ts","import":"./dist/esm/vrm/sekai64/index.js"},"./package.json":"./package.json","./sekai64-binding":{"types":"./dist/types/sekai64-binding/index.d.ts","import":"./dist/esm/sekai64-binding/index.js"}},"gitHead":"98bf2a2420ca3e6fda24e6bfe0c0092df1f15238","license":"MIT","scripts":{"size":"node scripts/size.mjs","test":"npm run build && node --test tests/*.test.mjs","build":"node scripts/build.mjs","check":"npm run typecheck && npm run typecheck:examples && npm run test && npm run verify:boundaries && npm run verify:package && npm run verify:stable && npm run size","clean":"node scripts/clean.mjs","typecheck":"npm run generate:version && tsc -p tsconfig.check.json --noEmit --pretty false","verify:stable":"node scripts/verify-stable.mjs","prepublishOnly":"npm run check","verify:package":"node scripts/verify-package.mjs","generate:version":"node scripts/generate-version.mjs","verify:boundaries":"node scripts/verify-boundaries.mjs","typecheck:examples":"tsc -p tsconfig.examples.json --pretty false"},"version":"0.2.1","_npmUser":{"name":"okarin_lab","email":"avelurs.billy@gmail.com"},"homepage":"https://github.com/blcklab/anyo-avatar#readme","keywords":["anyo","avatar","humanoid","3d","gltf","glb","sekai64","vrm","spatial-web"],"repository":{"url":"git+https://github.com/blcklab/anyo-avatar.git","type":"git"},"_npmVersion":"10.9.8","description":"Optional complete humanoid Avatar system for Anyo, including renderer-neutral runtime contracts, VRM 0.x/1.0 support, and explicit Sekai64 integrations.","directories":{},"maintainers":[{"name":"okarin_lab","email":"avelurs.billy@gmail.com"}],"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"typesVersions":{"*":{"vrm":["dist/types/vrm/index.d.ts"],"sekai64":["dist/types/sekai64/index.d.ts"],"authoring":["dist/types/authoring/index.d.ts"],"contracts":["dist/types/contracts/index.d.ts"],"vrm/sekai64":["dist/types/vrm/sekai64/index.d.ts"],"sekai64-binding":["dist/types/sekai64-binding/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@blcklab/anyo":"0.10.0-rc.3","@blcklab/sekai64":"0.8.0-rc.34","@blcklab/anyo-animation":"0.1.3"},"peerDependencies":{"@blcklab/anyo":">=0.9.1-0 <0.10.0 || >=0.10.0-0 <1.0.0","@blcklab/sekai64":">=0.8.0-0 <0.9.0","@blcklab/anyo-animation":">=0.1.0 <0.2.0"},"peerDependenciesMeta":{"@blcklab/anyo":{"optional":true},"@blcklab/sekai64":{"optional":true},"@blcklab/anyo-animation":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/anyo-avatar_0.2.1_1790202606372_0.28243657925506205"}}},"time":{"created":"2026-09-11T21:11:03.845Z","modified":"2026-09-23T22:30:06.784Z","0.2.0":"2026-09-11T21:11:04.274Z","0.2.1":"2026-09-23T22:30:06.462Z"},"bugs":{"url":"https://github.com/blcklab/anyo-avatar/issues"},"author":{"name":"blcklab"},"license":"MIT","homepage":"https://github.com/blcklab/anyo-avatar#readme","keywords":["anyo","avatar","humanoid","3d","gltf","glb","sekai64","vrm","spatial-web"],"repository":{"url":"git+https://github.com/blcklab/anyo-avatar.git","type":"git"},"description":"Optional complete humanoid Avatar system for Anyo, including renderer-neutral runtime contracts, VRM 0.x/1.0 support, and explicit Sekai64 integrations.","maintainers":[{"name":"okarin_lab","email":"avelurs.billy@gmail.com"}],"readme":"# @blcklab/anyo-avatar\n\nRenderer-neutral humanoid avatar runtime for Anyo with generic humanoid mapping, VRM 0.x/1.0 support, expressions, look-at, attachments, normalization, and explicit Sekai64 integrations.\n\n## Installation\n\n```bash\nnpm install @blcklab/anyo-avatar\n```\n\nInstall optional peers only for the integration you use:\n\n```bash\nnpm install @blcklab/anyo@next @blcklab/anyo-animation @blcklab/sekai64@next\n```\n\n## Features\n\n- Generic GLB humanoid mapping with explicit overrides and name matching\n- Deterministic target-height and grounding normalization\n- Morph-target expressions and aliases\n- Smoothed head, neck, and eye look-at\n- Bone attachment slots\n- Locomotion parameters bridged to `@blcklab/anyo-animation`\n- Plain JSON snapshots and complete world/entity disposal\n- VRM 0.x and VRM 1.0 metadata support\n- Explicit Sekai64 integrations while the root entry remains renderer-neutral\n\n## Anyo component\n\n```json\n{\n  \"id\": \"hero\",\n  \"type\": \"animated-model\",\n  \"src\": \"/avatars/hero.glb\",\n  \"components\": [\n    {\n      \"type\": \"anyo.avatar\",\n      \"targetHeight\": 1.75,\n      \"grounding\": \"feet\",\n      \"forward\": \"-z\",\n      \"lookAt\": { \"mode\": \"camera\", \"weight\": 0.8 },\n      \"locomotion\": { \"speedParameter\": \"speed\", \"movingParameter\": \"moving\" }\n    }\n  ]\n}\n```\n\n## Sekai64 integration\n\nCreate Anyo Animation first, then attach Avatar to the same renderer. The adapter reuses the mounted model instead of fetching or decoding it again.\n\n```ts\nconst animation = createSekai64AnimationRuntime({ canvas })\nconst avatar = createSekai64AvatarPlugin({\n  renderer: animation.renderer,\n  animation: animation.plugin,\n})\n```\n\n## VRM\n\n```ts\nimport { parseVrmMetadata } from '@blcklab/anyo-avatar/vrm'\nimport { createSekai64VrmRuntime } from '@blcklab/anyo-avatar/vrm/sekai64'\n```\n\nThe historical `@blcklab/anyo-avatar-vrm` package is a compatibility facade for these exports.\n\n## Recommended package layering\n\nUse `@blcklab/anyo-avatar` as the reusable avatar-domain package. Keep application UI, camera controls, portfolio/studio presentation, and framework lifecycle outside the core.\n\n```text\n@blcklab/anyo-avatar\n  └─ avatar contracts, humanoid/VRM semantics, normalization, expressions, look-at, attachments\n     and explicit renderer integration subpaths\n\n@blcklab/anyo-avatar-viewer\n  └─ framework-independent viewer/presentation runtime: camera, navigation, rendering profile,\n     animation playback, recovery, screenshots/fullscreen and browser lifecycle\n\n@blcklab/anyo-avatar-vue\n  └─ Vue host adapter/components/composables and optional UI\n```\n\nFor an Anyo world or game runtime, prefer the core package directly. For a standalone portfolio/avatar screen, prefer Avatar Viewer. In a Vue application, use Avatar Vue and let it delegate avatar behavior to Viewer/Core rather than duplicating avatar logic in Vue.\n\n## Package entry points\n\n```text\n@blcklab/anyo-avatar\n@blcklab/anyo-avatar/contracts\n@blcklab/anyo-avatar/authoring\n@blcklab/anyo-avatar/sekai64\n@blcklab/anyo-avatar/sekai64-binding\n@blcklab/anyo-avatar/vrm\n@blcklab/anyo-avatar/vrm/sekai64\n```\n\n## Compatibility\n\nSee [Compatibility](docs/COMPATIBILITY.md).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}