{"id":14981324,"url":"https://github.com/icosa-foundation/three-icosa","last_synced_at":"2026-02-23T10:17:37.484Z","repository":{"id":42550328,"uuid":"468548152","full_name":"icosa-foundation/three-icosa","owner":"icosa-foundation","description":"three.js implementations of glTF extensions relating to Open Brush (and Tilt Brush) exports.","archived":false,"fork":false,"pushed_at":"2026-02-10T14:13:23.000Z","size":12723,"stargazers_count":42,"open_issues_count":2,"forks_count":5,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-02-10T16:53:39.263Z","etag":null,"topics":["gltf","gltf-extensions","open-brush","openbrush","three","three-js","threejs","tilt-brush","tiltbrush"],"latest_commit_sha":null,"homepage":"","language":"GLSL","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/icosa-foundation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"icosa-gallery","open_collective":"icosa"}},"created_at":"2022-03-10T23:56:05.000Z","updated_at":"2026-02-06T17:10:14.000Z","dependencies_parsed_at":"2025-05-24T03:27:30.374Z","dependency_job_id":"1c1ccbca-ce84-4a4b-800a-3ebb77a0bab4","html_url":"https://github.com/icosa-foundation/three-icosa","commit_stats":null,"previous_names":["icosa-foundation/three-icosa","icosa-gallery/three-icosa"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/icosa-foundation/three-icosa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icosa-foundation%2Fthree-icosa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icosa-foundation%2Fthree-icosa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icosa-foundation%2Fthree-icosa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icosa-foundation%2Fthree-icosa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/icosa-foundation","download_url":"https://codeload.github.com/icosa-foundation/three-icosa/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icosa-foundation%2Fthree-icosa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29741146,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["gltf","gltf-extensions","open-brush","openbrush","three","three-js","threejs","tilt-brush","tiltbrush"],"created_at":"2024-09-24T14:03:19.677Z","updated_at":"2026-02-23T10:17:37.427Z","avatar_url":"https://github.com/icosa-foundation.png","language":"GLSL","funding_links":["https://github.com/sponsors/icosa-gallery","https://opencollective.com/icosa"],"categories":[],"sub_categories":[],"readme":"# three-icosa - Open Brush / Tilt Brush glTF Extensions for three.js\n\n[![Latest NPM release](https://img.shields.io/npm/v/three-icosa.svg)](https://www.npmjs.com/package/three-icosa)\n[![Support us on Open Collective!](https://img.shields.io/opencollective/all/icosa?logo=open-collective\u0026label=Support%20us%20on%20Open%20Collective%21)](https://opencollective.com/icosa)\n[![Twitter](https://img.shields.io/badge/follow-%40IcosaGallery-blue.svg?style=flat\u0026logo=twitter)](https://twitter.com/IcosaGallery)\n[![Discord](https://discordapp.com/api/guilds/783806589991780412/embed.png?style=shield)](https://discord.gg/W7NCEYnEfy)\n\n![Sample image showing a glTF file exported from Open Brush being rendered correctly in a three.js scene.](./banner.png)\n\n`three-icosa` provides glTF extensions for [three.js](https://threejs.org) that allow for the correct rendering and animation of glTFs exported from [Open Brush](https://openbrush.app) and the now-discontinued Tilt Brush.\n\nSpecific extensions are required due to the shaders used to render Open Brush's unique brushes. These are currently implemented under the `GOOGLE_tilt_brush_material` extension originally written by Google.\n\nThis repository will also be home to extensions written by the Open Brush team for future brush enhancements, such as user-created brushes.\n\n## Get\n```\nnpm install --save three-icosa\n```\n\nYou will also need a copy of the `brushes` directory from this repository. It is not distributed with this package through `npm` to save space. A GitHub hosted copy is available at the path: `https://icosa-gallery.github.io/three-icosa-template/brushes/`.\n## Usage\n\nAdding a new glTF extension is simple. our `GLTFGoogleTiltBrushMaterialExtension` only requires a path to a `brushes` directory (see above).\n\n```js\nimport { GLTFGoogleTiltBrushMaterialExtension } from './three-icosa.module.js';\n\n...\n\nconst scene = new Scene();\nconst gltfLoader = new GLTFLoader();\n\ngltfLoader.register(parser =\u003e new GLTFGoogleTiltBrushMaterialExtension(parser, 'path/to/brush/folder/'));\n\ngltfLoader.load('your_creation.glb' (model) =\u003e {\n    scene.add(model.scene);\n});\n```\n\nAfter registering the extension, it will automatically replace any detected Open Brush brushes.\n\n## Limitations\nCurrently, the model will respond to the main directional light color for shading. However, the angle of the light is incorrect. We hope to have this fixed shortly.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficosa-foundation%2Fthree-icosa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficosa-foundation%2Fthree-icosa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficosa-foundation%2Fthree-icosa/lists"}