{"id":13397933,"url":"https://github.com/mpetroff/pannellum","last_synced_at":"2025-05-13T18:12:09.556Z","repository":{"id":4696135,"uuid":"5843215","full_name":"mpetroff/pannellum","owner":"mpetroff","description":"Pannellum is a lightweight, free, and open source panorama viewer for the web.","archived":false,"fork":false,"pushed_at":"2024-10-10T00:13:44.000Z","size":21469,"stargazers_count":4449,"open_issues_count":209,"forks_count":741,"subscribers_count":132,"default_branch":"master","last_synced_at":"2025-05-03T05:03:44.611Z","etag":null,"topics":["javascript","library","panorama","webgl"],"latest_commit_sha":null,"homepage":"https://pannellum.org/","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/mpetroff.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"ko_fi":"mpetroff"}},"created_at":"2012-09-17T15:43:07.000Z","updated_at":"2025-04-29T06:57:36.000Z","dependencies_parsed_at":"2024-05-15T16:08:05.747Z","dependency_job_id":"8d2e8020-d310-4065-97a0-e24178d13570","html_url":"https://github.com/mpetroff/pannellum","commit_stats":{"total_commits":844,"total_committers":51,"mean_commits":16.54901960784314,"dds":"0.12322274881516593","last_synced_commit":"1eaccef60f75c8553997b37fe5d9784b2ed7b07a"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpetroff%2Fpannellum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpetroff%2Fpannellum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpetroff%2Fpannellum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpetroff%2Fpannellum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mpetroff","download_url":"https://codeload.github.com/mpetroff/pannellum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254000857,"owners_count":21997442,"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":["javascript","library","panorama","webgl"],"created_at":"2024-07-30T18:01:54.490Z","updated_at":"2025-05-13T18:12:09.531Z","avatar_url":"https://github.com/mpetroff.png","language":"JavaScript","funding_links":["https://ko-fi.com/mpetroff"],"categories":["JavaScript","Libraries"],"sub_categories":["VR/AR"],"readme":"# Pannellum\n\n[![Build Status](https://app.travis-ci.com/mpetroff/pannellum.svg?branch=master)](https://app.travis-ci.com/github/mpetroff/pannellum)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3334433.svg)](https://doi.org/10.5281/zenodo.3334433)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.01628/status.svg)](https://doi.org/10.21105/joss.01628)\n\n## About\n\nPannellum is a lightweight, free, and open source panorama viewer for the web. Built using HTML5, CSS3, JavaScript, and WebGL, it is plug-in free. It can be deployed easily as a single file, just 21kB gzipped, and then embedded into pages as an `\u003ciframe\u003e`. A configuration utility is included to generate the required code for embedding. An API is included for more advanced integrations.\n\n## Getting started\n\n### Hosted examples\n\nA set of [examples](https://pannellum.org/documentation/examples/simple-example/) that demonstrate the viewer's various functionality is hosted on [pannellum.org](https://pannellum.org/). This is the best place to start if you want an overview of Pannellum's functionality. They also provide helpful starting points for creating custom configurations.\n\n### Simple tutorial and configuration utility\n\nIf you are just looking to display a single panorama without any advanced functionality, the steps for doing so are covered on the [simple tutorial page](https://pannellum.org/documentation/overview/tutorial/). Said page also includes a utility for easily creating the necessary Pannellum configuration.\n\n### Local testing and self-hosting\n\nIf you would like to locally test or self-host Pannellum, continue to the _How to use_ section below.\n\n## How to use\n1. Upload `build/pannellum.htm` and a full equirectangular panorama to a web server or run a development web server locally.\n    * Due to browser security restrictions, _a web server must be used locally as well_. With Python 3, one can use `python3 -m http.server`, but any other web server should also work.\n2. Use the included multi-resolution generator (`utils/multires/generate.py`), the configuration tool (`utils/config/configuration.htm`), or create a configuration from scratch or based on an [example](https://pannellum.org/documentation/examples/simple-example/).\n3. Insert the generated `\u003ciframe\u003e` code into a page, or create a more advanced configuration with [JSON](https://pannellum.org/documentation/reference) or the [API](https://pannellum.org/documentation/api/).\n\nConfiguration parameters are documented in the `doc/json-config-parameters.md` file, which is also available at [pannellum.org/documentation/reference/](https://pannellum.org/documentation/reference). API methods are documented inline with [JSDoc](https://jsdoc.app/) comments, and generated documentation is available at [pannellum.org/documentation/api/](https://pannellum.org/documentation/api/). For the standalone viewer, configuration parameters are preferably specified using a location hash instead of a location search query, e.g., `pannellum.htm#panorama=...` instead of `pannellum.htm?panorama=...`, since this does not unnecessarily send the query parameters to the server.\n\n### Using a minified copy\n\nFor final deployment, it is recommended that one use a minified copy of Pannellum instead of using the source files in `src` directly. The easiest method is to download the most recent [release](https://github.com/mpetroff/pannellum/releases) and use the pre-built copy of either `pannellum.htm` or `pannellum.js` \u0026 `pannellum.css`. If you wish to make changes to Pannellum or use the latest development copy of the code, follow the instructions in the _Building_ section below to create `build/pannellum.htm`, `build/pannellum.js`, and `build/pannellum.css`.\n\n### Using `generate.py` to create multires panoramas\nTo be able to create multiresolution panoramas, you need to have the `nona` program installed, which is available as part of [Hugin](http://hugin.sourceforge.net/), as well as Python 3 with the [Pillow](https://pillow.readthedocs.org/) and [NumPy](https://numpy.org/) packages. The [pyshtools](https://shtools.github.io/SHTOOLS/) Python package is also recommended. Then, run\n\n```\npython3 generate.py pano_image.jpg\n```\n\nin the `utils/multires` directory. This will generate all the image tiles and the `config.json` file in the `./output` folder by default. For this to work, `nona` needs to be on the system path; otherwise, the location of `nona` can be specified using the `-n` flag. On a Unix-like platform, with `nona` already on the system path use:\n\n```bash\n$ cd utils/multires\n$ python3 generate.py pano_image.jpg\n```\n\nwhere `pano_image.jpg` is the filename of your equirectangular panorama. If `nona` is not on the system path, use:\n\n```bash\n$ cd utils/multires\n$ python3 generate.py -n /path/to/nona pano_image.jpg\n```\n\nFor a complete list of options, run:\n\n```bash\n$ python3 generate.py --help\n```\n\nTo view the generated configuration, run:\n\n```bash\n$ cd ../..\n$ python3 -m http.server\n```\n\nThis goes back to the root directory of the repository and starts a local development web server. Then open http://localhost:8000/src/standalone/pannellum.htm#config=../../utils/multires/output/config.json in your web browser of choice.\n\n\n## Bundled examples\n\nExamples using both the minified version and the version in the `src` directory are included in the `examples` directory. These can be viewed by starting a local web server in the root of the repository, e.g., by running:\n```bash\n$ python3 -m http.server\n```\nin the directory containing this readme file, and then navigating to the hosted HTML files using a web browser; note that the examples use files from the `src` directory, so **the web server must be started from the repository root, not the `examples` directory**. For the `example-minified.htm` example to work, a minified copy of Pannellum must first be built; see the _Building_ section below for details.\n\nAdditional examples are available at [pannellum.org](https://pannellum.org/documentation/examples/simple-example/).\n\n## Browser Compatibility\n\nSince Pannellum is built with web standards, it requires a modern browser to function.\n\n#### Full support (with appropriate graphics drivers):\n* Firefox 23+\n* Chrome 24+\n* Safari 8+\n* Internet Explorer 11+\n* Edge\n\nThe support list is based on feature support. As only recent browsers are tested, there may be regressions in older browsers.\n\n#### Not officially supported:\n\nMobile / app / web frameworks are not officially supported. They may work, but they're not tested and are not the targeted platform.\n\n## Translations\n\nAll user-facing strings can be changed using the `strings` configuration parameter. There exists a [third-party respository of user-contributed translations](https://github.com/DanielBiegler/pannellum-translation) that can be used with this configuration option.\n\n## Building\nThe `utils` folder contains the required build tools, with the exception of Python 3.2+ and Java installations. To build a minified version of Pannellum, run either `build.sh` or `build.bat` depending on your platform. On a Unix-like platform:\n\n```bash\n$ cd utils/build\n$ ./build.sh\n```\n\nIf successful, this should create `build/pannellum.htm`, `build/pannellum.js`, and `build/pannellum.css`, relative to the root directory of the repository.\n\n## Tests\n\nA minimal [Selenium](https://www.seleniumhq.org/)-based test suite is located in the `tests` directory. The tests can be executed by running:\n\n```bash\npython3 run_tests.py\n```\n\nA Selenium-driven web browser (with a Chrome driver, by default) is created, and screenshots are generated\nand compared against previously generated ones in [tests](tests). For example, to regenerate the screenshots\none can run:\n\n```bash\n$ python3 tests/run_tests.py --create-ref\n```\n\nAnd to simply run the tests to compare to, eliminate that argument. By default, a random\nport is selected, along with other arguments. One can see usage via:\n\n```bash\n$ python tests/run_tests.py --help\n```\n\nContinuous integration tests are run via [Travis CI](https://travis-ci.org/mpetroff/pannellum). Running the tests locally requires Python 3, the Selenium Python bindings, [Pillow](https://pillow.readthedocs.io/), [NumPy](https://www.numpy.org/), and either Firefox \u0026 [geckodriver](https://github.com/mozilla/geckodriver) or Chrome \u0026 [ChromeDriver](https://chromedriver.chromium.org/).\n\n## Seeking support\nIf you wish to ask a question or report a bug, please open an issue at [github.com/mpetroff/pannellum](https://github.com/mpetroff/pannellum). See the _Contributing_ section below for more details.\n\n## Contributing\nDevelopment takes place at [github.com/mpetroff/pannellum](https://github.com/mpetroff/pannellum). Issues should be opened to report bugs or suggest improvements (or ask questions), and pull requests are welcome. Please make an attempt to write in grammatically-correct English on the issue tracker; using the results of machine translation is acceptable if one in not fluent in the language, and attempts to work past language barriers will be made. When reporting a bug, please try to include a minimum reproducible example (or at least some sort of example). When proposing changes, please try to match the existing code style, e.g., four space indentation and [JSHint](https://jshint.com/) validation. If your pull request adds an additional configuration parameter, please document it in `doc/json-config-parameters.md`. Pull requests should preferably be created from [feature branches](https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow).\n\n## License\nPannellum is distributed under the MIT License. For more information, read the file `COPYING` or peruse the license [online](https://github.com/mpetroff/pannellum/blob/master/COPYING).\n\nIn the past, parts of Pannellum were based on [three.js](https://github.com/mrdoob/three.js) r40, which is licensed under the [MIT License](https://github.com/mrdoob/three.js/blob/44a8652c37e576d51a7edd97b0f99f00784c3db7/LICENSE).\n\nThe panoramic image provided with the examples is licensed under the [Creative Commons Attribution-ShareAlike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/).\n\n## Credits\n\n* [Matthew Petroff](http://mpetroff.net/), Original Author\n* [three.js](https://github.com/mrdoob/three.js) r40, Former Underlying Framework\n\nIf used as part of academic research, please cite:\n\n\u003e Petroff, Matthew A. \"Pannellum: a lightweight web-based panorama viewer.\" _Journal of Open Source Software_ 4, no. 40 (2019): 1628. [doi:10.21105/joss.01628](https://doi.org/10.21105/joss.01628)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpetroff%2Fpannellum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmpetroff%2Fpannellum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpetroff%2Fpannellum/lists"}