{"id":15019017,"url":"https://github.com/bhouston/threeify","last_synced_at":"2025-04-06T07:10:44.205Z","repository":{"id":38085644,"uuid":"267436418","full_name":"bhouston/threeify","owner":"bhouston","description":"A Typescript 3D library loosely based on three.js","archived":false,"fork":false,"pushed_at":"2024-06-25T15:30:45.000Z","size":279985,"stargazers_count":199,"open_issues_count":21,"forks_count":15,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-01T17:43:20.348Z","etag":null,"topics":["3d","ar","javascript","typescript","vr","webgl","webgl2","webgpu","webxr","xr"],"latest_commit_sha":null,"homepage":"http://threeify.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bhouston.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2020-05-27T22:09:40.000Z","updated_at":"2025-03-02T13:29:05.000Z","dependencies_parsed_at":"2024-09-12T07:09:27.589Z","dependency_job_id":null,"html_url":"https://github.com/bhouston/threeify","commit_stats":{"total_commits":1175,"total_committers":13,"mean_commits":90.38461538461539,"dds":"0.39914893617021274","last_synced_commit":"9edb162dbb058b572be5d4e49b6d53644ed4126b"},"previous_names":["threeify/threeify"],"tags_count":98,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhouston%2Fthreeify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhouston%2Fthreeify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhouston%2Fthreeify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhouston%2Fthreeify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bhouston","download_url":"https://codeload.github.com/bhouston/threeify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247445669,"owners_count":20939958,"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":["3d","ar","javascript","typescript","vr","webgl","webgl2","webgpu","webxr","xr"],"created_at":"2024-09-24T19:52:46.317Z","updated_at":"2025-04-06T07:10:44.187Z","avatar_url":"https://github.com/bhouston.png","language":"TypeScript","readme":"\u003ch1 align=\"center\" style=\"border-bottom: none;\"\u003ethreeify\u003c/h1\u003e\n\u003ch3 align=\"center\"\u003eA Typescript library loosely based on three.js\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/threeify\"\u003e\n    \u003cimg alt=\"npm latest version\" src=\"https://img.shields.io/npm/v/threeify/latest.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/threeify\"\u003e\n    \u003cimg alt=\"npm next version\" src=\"https://img.shields.io/npm/v/threeify/next.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n**threeify** is a Typescript 3D library loosely based on three.js.\n\nFeature overview:\n\n- Modern: Typescript, Tree Shakable, Small Build Files\n- Rendering: WebGL 2 and WebGPU (coming soon)\n- Materials: Physically based materials\n- Post Effects: DOF (coming soon), Motion Blur ((coming soon)), SOA (coming soon), TRAA (coming soon)\n- Animation: Clips (coming soon), Mixer (coming soon)\n- Assets: glTF (coming soon), Draco (coming soon) and Basis (coming soon)\n- XR: Augmented Reality and Virtual Reality via WebXR (coming soon)\n- Documented (TSDocs) and Tested (Jest)\n\n[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)\n\n### Warning\n\n**_In Development, Not Yet Ready for Use of Any Kind_**\n\nThis library is currently in alpha and in midst of significant development. It may not even compile properly. You have been warned.\n\n## Install and Import\n\nThreeify and its modules are published on npm with full typing support. To install, use:\n\n```sh\nnpm install threeify --save\n```\n\nOr\n\n```sh\nyarn add threeify\n```\n\nThis will allow you to import Threeify entirely using:\n\n```javascript\nimport * as THREEIFY from 'threeify'; // NOT YET SUPPORTED\n```\n\nor individual classes using:\n\n```javascript\nimport { RenderContext, Vector3 } from 'threeify';\n```\n\n### Usage\n\nThis code creates a scene, a camera, and a geometric cube, and it adds the cube to the scene. It then creates a `WebGL` renderer context for the scene and camera, and it adds that viewport to the `document.body` element. Finally, it animates the cube within the scene for the camera.\n\n```typescript\nimport { box } from '@threeify/geometry/primitives/Box';\nimport { MaterialOutputs } from '@threeify/materials/MaterialOutputs';\nimport { PhysicalMaterial } from '@threeify/materials/PhysicalMaterial';\nimport { PerspectiveCamera } from '@threeify/nodes/cameras/PerspectiveCamera';\nimport { Mesh } from '@threeify/nodes/Mesh';\nimport { Node } from '@threeify/nodes/Node';\nimport { RenderingContext } from '@threeify/renderers/webgl2';\n\nconst camera = new PerspectiveCamera(70, 0.01, 10);\ncamera.position.x = 1;\n\nconst geometry = box(0.2, 0.2, 0.2);\nconst material = new PhysicalMaterial();\nmaterial.outputs = MaterialOutputs.Normal;\n\nconst mesh = new Mesh(geometry, material);\n\nconst scene = new Node();\nscene.children.add(mesh);\n\nconst context = new RenderingContext();\nconst canvasFramebuffer = context.canvasFramebuffer;\ndocument.body.appendChild(canvasFramebuffer.canvas);\n\nfunction animate(): void {\n  requestAnimationFrame(animate);\n\n  mesh.rotation.x += 0.01;\n  mesh.rotation.y += 0.02;\n  mesh.dirty();\n\n  canvasFramebuffer.render(scene, camera, true);\n}\n\nanimate();\n```\n\n### Development\n\n#### Local Development Setup\n\nTo run:\n\nCheck out the git repository\n\n```zsh\ngit clone git@github.com:bhouston/threeify.git\n```\n\nInstall dependencies\n\n```sh\nnpm install\n```\n\nRun in watch mode\n\n```sh\nnpm run dev\n```\n\nStart example server\n\n```sh\nnpm run start -w=examples-server\n```\n\nBuild for production\n\n```sh\nnpm run build\n```\n\n## Contributors\n\nThis project exists thanks to all \u003ca href=\"https://github.com/bhouston/threeify/graphs/contributors\"\u003ethe people who contribute.\u003c/a\u003e\n\n## License\n\n[ISC](https://github.com/bhouston/threeify/blob/master/LICENSE.md)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhouston%2Fthreeify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbhouston%2Fthreeify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhouston%2Fthreeify/lists"}