{"id":35038474,"url":"https://github.com/arkavo-org/vrmmetalkit","last_synced_at":"2026-05-23T01:12:45.019Z","repository":{"id":320785216,"uuid":"1083334601","full_name":"arkavo-org/VRMMetalKit","owner":"arkavo-org","description":"VRM Metal","archived":false,"fork":false,"pushed_at":"2026-05-03T21:02:57.000Z","size":4485,"stargazers_count":3,"open_issues_count":42,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T23:14:57.811Z","etag":null,"topics":["metal","swift","vrm"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/arkavo-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-25T20:03:24.000Z","updated_at":"2026-04-27T00:41:18.000Z","dependencies_parsed_at":"2025-10-25T22:21:27.356Z","dependency_job_id":"8eee9cd2-a2a2-4609-a729-055ffd50454f","html_url":"https://github.com/arkavo-org/VRMMetalKit","commit_stats":null,"previous_names":["arkavo-org/vrmmetalkit"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/arkavo-org/VRMMetalKit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkavo-org%2FVRMMetalKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkavo-org%2FVRMMetalKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkavo-org%2FVRMMetalKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkavo-org%2FVRMMetalKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arkavo-org","download_url":"https://codeload.github.com/arkavo-org/VRMMetalKit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkavo-org%2FVRMMetalKit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32632292,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"online","status_checked_at":"2026-05-05T02:00:06.033Z","response_time":54,"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":["metal","swift","vrm"],"created_at":"2025-12-27T08:07:13.916Z","updated_at":"2026-05-23T01:12:45.013Z","avatar_url":"https://github.com/arkavo-org.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VRMMetalKit\n\nA high-performance Swift Package for loading and rendering 3D assets on Apple's Metal framework. Ships **two** library products built on a shared `GLTFCore`:\n\n- **VRMMetalKit** — VRM 1.0 avatars with humanoid bones, MToon shading, spring physics, expressions, ARKit drivers.\n- **GLTFMetalKit** — glTF 2.0 PBR renderer for static / skinned / morphed / animated assets. Targets the inanimate-objects half of the ecosystem (props, scenery, items) and clears the Khronos Sample Assets credibility bar (PBR + IBL + skinning + morph + animation + KHR_lights_punctual + KHR_materials_unlit).\n\n[![Swift](https://img.shields.io/badge/Swift-6.2-orange.svg)](https://swift.org)\n[![Platforms](https://img.shields.io/badge/Platforms-macOS%2026%2B%20%7C%20iOS%2026%2B-blue.svg)](https://developer.apple.com)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n[![Models License](https://img.shields.io/badge/Models-VPL%201.0-green.svg)](LICENSE-MODELS.md)\n\n## Products\n\n### VRMMetalKit\n- **VRM 1.0 Specification Support** — full VRMC_vrm with VRM 0.0 fallback, MToon shader, 55 humanoid bones, 18 facial expressions, and complete metadata.\n- **Animation System** — VRMA loader with rest-pose retargeting, humanoid bone mapping, non-humanoid node animation, and an AnimationPlayer with looping and speed control.\n- **GPU-Accelerated Physics** — SpringBone XPBD simulation in Metal compute shaders at fixed 120Hz substeps, with sphere/capsule colliders.\n- **Advanced Rendering** — MToon NPR with matcap, rim, and outline passes; GPU morph targets; skinning up to 256 joints; triple-buffered uniforms.\n- **Performance \u0026 Debugging** — built-in metrics, three-level StrictMode validation, and zero-cost conditional debug logging.\n\n### GLTFMetalKit *(new)*\n- **glTF 2.0 PBR** — Lambert + GGX/Trowbridge-Reitz with Schlick Fresnel, Khronos PBR Neutral tonemap, spec-correct sRGB/linear texture pipeline.\n- **Image-Based Lighting** — split-sum approximation with a runtime-generated procedural sky environment (no HDR asset shipping required); BRDF LUT auto-generated at renderer init.\n- **Asset Loading** — full glTF 2.0 scene-graph + materials + textures + skinning (`JOINTS_0`/`WEIGHTS_0` + IBM joint palettes) + morph targets + animation playback (`LINEAR`/`STEP`/`CUBICSPLINE` samplers, TRS + weights channels).\n- **Extensions** — `KHR_materials_unlit`, `KHR_lights_punctual` (directional/point/spot, max 8).\n- **Sibling CLI** — `GLTFRender` for headless rendering of static or animated glTF assets.\n\n```swift\nimport GLTFMetalKit\n\nlet renderer = try GLTFRenderer(device: device)\nrenderer.environment = try GLTFEnvironment.makeProcedural(device: device, library: renderer.library)\n\nlet loader = GLTFAssetLoader()\nlet asset = try await loader.load(from: url, device: device)\n\nlet pipelines = try renderer.makePipelineStates(colorFormat: .bgra8Unorm, depthFormat: .depth32Float)\nrenderer.encodeOpaqueDrawCalls(\n    asset.drawCalls(animationIndex: 0, time: currentTime),\n    scene: scene,\n    pipelineStates: pipelines,\n    depthState: depthState,\n    encoder: encoder\n)\n```\n\n## Installation\n\n### Swift Package Manager\n\nAdd VRMMetalKit to your `Package.swift`:\n\n```swift\ndependencies: [\n    .package(url: \"https://github.com/arkavo-org/VRMMetalKit\", from: \"0.1.0\")\n]\n```\n\nOr in Xcode: **File → Add Package Dependencies** and enter the repository URL.\n\n## Command Line Rendering\n\n### VRMRender (avatars)\n\n`VRMRender` is a CLI for headless VRM rendering — batch thumbnails, CI/CD pipelines, etc.\n\n![AvatarSample_A Render](AvatarSample_A.png)\n\n```bash\n# Basic render\nswift run VRMRender model.vrm output.png\n\n# High-quality render with MSAA\nswift run VRMRender --msaa 4 model.vrm output.png\n\n# Custom resolution and camera position\nswift run VRMRender -w 2048 -h 2048 --camera-pos 0,1.5,-2 model.vrm output.png\n```\n\n**Options:**\n- `-w, --width \u003cpixels\u003e` - Output width (default: 1024)\n- `-h, --height \u003cpixels\u003e` - Output height (default: 1024)\n- `--camera-pos \u003cx,y,z\u003e` - Camera position (default: 0,1.5,2)\n- `--camera-target \u003cx,y,z\u003e` - Camera look-at target (default: 0,1.5,0)\n- `--msaa \u003csamples\u003e` - MSAA sample count: 1, 2, or 4 (default: 1)\n\n### GLTFRender (glTF 2.0 assets)\n\n`GLTFRender` is the inanimate-objects counterpart — single PNG output from any glTF 2.0 `.glb`. Loads + animates + renders in one call.\n\n```bash\n# Basic render\nswift run GLTFRender Box.glb -o box.png\n\n# Sample an animation at a specific time\nswift run GLTFRender BoxAnimated.glb --time 1.5 -o anim_mid.png\n\n# Use the gray fallback environment instead of the procedural sky\nswift run GLTFRender RiggedSimple.glb --no-ibl -o rigged.png\n```\n\n**Options:**\n- `-o \u003cpath\u003e` — output PNG path (default: `out.png`)\n- `-w \u003cpx\u003e` / `--height \u003cpx\u003e` — output size (default: 1024×1024)\n- `--time \u003csec\u003e` — sample animation at this time (default: rest pose)\n- `--animation \u003cidx\u003e` — animation clip index (default: 0)\n- `--no-ibl` — skip the procedural IBL environment\n- `--camera-distance \u003cs\u003e` — frame scale relative to asset bounds diagonal (default: 1.5)\n\n## Documentation\n\nFull API reference, integration guides, and migration notes:\n**https://arkavo-org.github.io/VRMMetalKit/**\n\n- **Getting Started** — install and first render\n- **Loading VRM Models** — entry points, options, version detection\n- **Rendering Avatars** — renderer config, MSAA, outlines\n- **Animation and Retargeting** — VRMA loading and playback\n- **ARKit Integration** — face and body driving\n- **SpringBone Physics** — hair and cloth simulation\n- **Strict Mode** — runtime validation\n- **Migrating from VRM 0.x** — automatic 0.x compatibility notes\n\nOr build locally:\n\n```bash\nmake docs        # local preview server\nmake docs-static # static site under .build/docs\n```\n\n## Contributing\n\nContributions are welcome! Please read our [Contributing Guidelines](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md).\n\n**Quick checklist:**\n1. Follow existing code style and architecture\n2. Add tests for new features\n3. Update documentation\n4. Add Apache 2.0 license headers to new files\n5. Use descriptive commit messages\n6. Submit pull requests against `main` branch\n\nFor security issues, see [SECURITY.md](SECURITY.md).\n\n## Licensing\n\nVRMMetalKit uses a **dual licensing structure** to clearly distinguish between code and content:\n\n### Source Code - Apache License 2.0\n\nAll source code (`.swift`, `.metal` files) is licensed under the **Apache License 2.0**.\n\n```\nCopyright 2025 Arkavo\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n\nSee [LICENSE](LICENSE) for the full Apache 2.0 license text.\n\n### VRM Models and Assets - VPL 1.0\n\nVRM model files (`.vrm`) and 3D avatar assets follow the **VRM Platform License 1.0** (VPL 1.0) as defined by the VRM Consortium.\n\nEach VRM model contains its own licensing metadata:\n- **Author attribution** (required)\n- **Commercial use permissions** (varies per model)\n- **Modification rights** (varies per model)\n- **Redistribution terms** (varies per model)\n\nSee [LICENSE-MODELS.md](LICENSE-MODELS.md) for details on VRM Platform License 1.0.\n\n**Key Point**: When using VRMMetalKit, you must comply with:\n1. **Apache 2.0** for the library code\n2. **VPL 1.0** and model-specific licenses for any VRM models you use\n\n### Attribution\n\nVRMMetalKit implements the [VRM specification](https://github.com/vrm-c/vrm-specification) developed by the VRM Consortium. The VRM specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).\n\nSee [NOTICE](NOTICE) for complete attribution information.\n\n## Credits\n\n**Developed by**: [Arkavo](https://arkavo.org)\n\n**Based on**: [VRM Specification](https://github.com/vrm-c/vrm-specification) by the VRM Consortium\n\n**Built with**: Apple's Metal framework for high-performance GPU rendering\n\n## Version History\n\nSee [CHANGELOG.md](CHANGELOG.md) for detailed version history.\n\n### 0.1.0 (Current)\n\nVRM 1.0 + VRMA support, MToon shading, GPU SpringBone physics, performance metrics, StrictMode validation, and the full DocC catalog.\n\n---\n\n**Questions?** Open an issue on GitHub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkavo-org%2Fvrmmetalkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farkavo-org%2Fvrmmetalkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkavo-org%2Fvrmmetalkit/lists"}