{"id":14981336,"url":"https://github.com/gkjohnson/threejs-model-loader","last_synced_at":"2025-11-13T22:52:22.023Z","repository":{"id":32486444,"uuid":"129469274","full_name":"gkjohnson/threejs-model-loader","owner":"gkjohnson","description":"THREE.js Model Loader for delegating to the appropriate geometry loader and associated Web Component","archived":false,"fork":false,"pushed_at":"2023-03-01T23:09:40.000Z","size":1622,"stargazers_count":14,"open_issues_count":25,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-29T05:45:23.443Z","etag":null,"topics":["geometry","graphics","javascript","loader","model","three-js","threejs","webcomponent"],"latest_commit_sha":null,"homepage":"https://gkjohnson.github.io/threejs-model-loader/example/index.bundle.html","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gkjohnson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"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}},"created_at":"2018-04-14T01:16:05.000Z","updated_at":"2025-08-31T01:56:16.000Z","dependencies_parsed_at":"2024-06-21T16:45:26.295Z","dependency_job_id":"6ec23cbe-ff72-4bb4-809c-d5c2d129d016","html_url":"https://github.com/gkjohnson/threejs-model-loader","commit_stats":{"total_commits":119,"total_committers":3,"mean_commits":"39.666666666666664","dds":0.03361344537815125,"last_synced_commit":"13a2789ad68112e7f00eace4394c448970c5b864"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/gkjohnson/threejs-model-loader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gkjohnson%2Fthreejs-model-loader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gkjohnson%2Fthreejs-model-loader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gkjohnson%2Fthreejs-model-loader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gkjohnson%2Fthreejs-model-loader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gkjohnson","download_url":"https://codeload.github.com/gkjohnson/threejs-model-loader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gkjohnson%2Fthreejs-model-loader/sbom","scorecard":{"id":428949,"data":{"date":"2025-08-11","repo":{"name":"github.com/gkjohnson/threejs-model-loader","commit":"13a2789ad68112e7f00eace4394c448970c5b864"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/19 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"56 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-6chw-6frg-f759","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-x9w5-v3q2-3rhw","Warn: Project is vulnerable to: GHSA-c6rq-rjc2-86v2","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-vh7m-p724-62c2","Warn: Project is vulnerable to: GHSA-r9p9-mrjm-926w","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-8r6j-v8pm-fqw3","Warn: Project is vulnerable to: MAL-2023-462","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-pfq8-rq6v-vf5m","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-4xcv-9jjx-gfj3","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-fhjf-83wg-r2j9","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-4g88-fppr-53pp","Warn: Project is vulnerable to: GHSA-4jqc-8m5r-9rpr","Warn: Project is vulnerable to: GHSA-v834-rhv4-65m3","Warn: Project is vulnerable to: GHSA-j44m-qm6p-hp7m","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw","Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-fq6p-x6j3-cmmq","Warn: Project is vulnerable to: GHSA-884p-74jh-xrg2","Warn: Project is vulnerable to: GHSA-j7fq-p9q7-5wfv","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T02:52:31.568Z","repository_id":32486444,"created_at":"2025-08-19T02:52:31.568Z","updated_at":"2025-08-19T02:52:31.568Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284304462,"owners_count":26982161,"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","status":"online","status_checked_at":"2025-11-13T02:00:06.582Z","response_time":61,"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":["geometry","graphics","javascript","loader","model","three-js","threejs","webcomponent"],"created_at":"2024-09-24T14:03:20.606Z","updated_at":"2025-11-13T22:52:21.988Z","avatar_url":"https://github.com/gkjohnson.png","language":"JavaScript","readme":"# threejs-model-loader\n\n[![npm version](https://img.shields.io/npm/v/threejs-model-loader.svg?style=flat-square)](https://www.npmjs.com/package/threejs-model-loader)\n[![lgtm code quality](https://img.shields.io/lgtm/grade/javascript/g/gkjohnson/threejs-model-loader.svg?style=flat-square\u0026label=code-quality)](https://lgtm.com/projects/g/gkjohnson/threejs-model-loader/)\n\nTHREE.js Model Loader for delegating to the appropriate and normalizing the result of different geometry loaders. Uses the file's extension to an appropriate loader function.\n\n[Drag and drop example](https://gkjohnson.github.io/threejs-model-loader/example/index.bundle.html)\n\n## ModelLoader\n\n```js\nimport PLYLoader from 'three/examples/loaders/PLYLoader';\nimport ModelLoader from 'threejs-model-loader';\n\nvar loader = new ModelLoader();\n\n// register the function to load ply files\nloader.loaderCallbacks[ 'ply' ] = function( url, manager, onLoad, onProgress, onError ) {\n\n\tnew PLYLoader( manager ).load( url, onLoad, onProgress, onError );\n\n} );\n\nloader.load( '.../model.ply', res =\u003e {\n\n    // res.model\n    // res.originalResult\n    // res.extension\n\n} );\n```\n\n### Static Members\n#### ModelLoader.ExtensionToThreeLoader\n\nA map of file extensions to THREE Loader names that are provided with the THREE project. When using imports or require the loaders are not available so these loader functions must be registered manually.\n\n```js\n{\n\n\t'dae': 'ColladaLoader',\n\t'fbx': 'FBXLoader',\n\t'gcode': 'GCodeLoader',\n\t'gltf': 'GLTFLoader',\n\n\t// ...\n\n}\n```\n\n### Members\n#### loaderCallbacks\n\nAn object that maps file extension to loader function callback. Defaults to empty. Add functions to the map to register load callbacks.\n\n```js\n{\n\tply:  function( url, manager, onLoad, onProgress, onError ) {\n\n\t\tnew PLYLoader( manager ).load( url, onLoad, onProgress, onError );\n\n\t}\n}\n```\n\n### Functions\n#### constructor(manager)\n\nInstantiate the `ModelLoader` with a `THREE.LoadingManager`.\n\n#### load(path, onLoad, onProgress, onError, options)\n\nA function signature that mirrors all the THREE.js geometry loaders. An appropriate loader is selected from the loaderCallbacks based on the file extension.\n\n`onLoad` is passed an object with following values.\n```js\n{\n    model,         // THREE.js Object3D, Group, or Mesh that was loaded\n    extension,     // The extension of the model that was loaded\n    originalResult // The original result that the loader returned\n}\n```\n\n##### options\n###### extension\n\nAn override to the detected file extension.\n\n#### parse(data, extension, onLoad, onError, options)\n\nTakes the `data` to parse into geometry and the associated file extension.\n\nThe model is returned asynchronously in `onLoad`.\n\nSee `load` for documentation on what the `onLoad` function is passed.\n\n### Override-able Functions\n#### getLoaderCallback(extension, done)\n\nFunction used to get the function used to load the geometry.\n\nBy default this looks the given extension up in the `loaderCallbacks` object.\n\n#### canLoadModel(extension)\n\nReturns whether or not the ModelLoader can load a file with the provided extension.\n\nBy default this checks if the given extension is in the `loaderCallbacks` object.\n\n## model-viewer Element\n```html\n\u003c!-- Register the Element --\u003e\n\u003cscript href=\".../model-viewer-element.js\" /\u003e\n\u003cscript\u003ecustomElements.define('model-viewer', ModelViewer)\u003c/script\u003e\n\n\u003cbody\u003e\n  \u003cmodel-viewer src=\".../path/to/model.ply\" display-shadow ambient-color=\"red\"\u003e\u003c/model-viewer\u003e\n\u003c/body\u003e\n```\n### Attributes\n\n#### src\n\nThe url of the model to display.\n\n#### display-shadow\n\nWhether or not the render the shadow under the robot.\n\n#### ambient-color\n\nThe color of the ambient light specified with css colors.\n\n#### show-grid\n\nShow a grid underneath the model.\n\n#### auto-redraw\n\nAutomatically redraw the model every frame instead of waiting to be dirtied.\n\n### Functions\n\n#### redraw()\n\nDirty the renderer so the element will redraw next frame.\n\n### Events\n\n#### 'model-change'\n\nFires when a model is going to load.\n\n#### 'model-loaded'\n\nFires when all the geometry has been fully loaded.\n\n#### 'error'\n\nFires when there's a problem loading the model.\n\n## Running the Example\n\nInstall Node.js and NPM.\n\nRun `npm install`.\n\nRun `npm run server`.\n\nVisit `localhost:9080/example/` to view the page.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgkjohnson%2Fthreejs-model-loader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgkjohnson%2Fthreejs-model-loader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgkjohnson%2Fthreejs-model-loader/lists"}