Pannellum
Pannellum: a lightweight web-based panorama viewer - Published in JOSS (2019)
Science Score: 100.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 10 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org, zenodo.org -
✓Committers with academic emails
3 of 48 committers (6.3%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Repository
Pannellum is a lightweight, free, and open source panorama viewer for the web.
Basic Info
- Host: GitHub
- Owner: mpetroff
- License: mit
- Language: JavaScript
- Default Branch: master
- Homepage: https://pannellum.org/
- Size: 20.4 MB
Statistics
- Stars: 4,557
- Watchers: 133
- Forks: 745
- Open Issues: 212
- Releases: 18
Topics
Metadata Files
readme.md
Pannellum
About
Pannellum 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 <iframe>. A configuration utility is included to generate the required code for embedding. An API is included for more advanced integrations.
Getting started
Hosted examples
A set of examples that demonstrate the viewer's various functionality is hosted on 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.
Simple tutorial and configuration utility
If 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. Said page also includes a utility for easily creating the necessary Pannellum configuration.
Local testing and self-hosting
If you would like to locally test or self-host Pannellum, continue to the How to use section below.
How to use
- Upload
build/pannellum.htmand a full equirectangular panorama to a web server or run a development web server locally.- 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.
- Due to browser security restrictions, a web server must be used locally as well. With Python 3, one can use
- 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. - Insert the generated
<iframe>code into a page, or create a more advanced configuration with JSON or the API.
Configuration parameters are documented in the doc/json-config-parameters.md file, which is also available at pannellum.org/documentation/reference/. API methods are documented inline with JSDoc comments, and generated documentation is available at 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.
Using a minified copy
For 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 and use the pre-built copy of either pannellum.htm or pannellum.js & 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.
Using generate.py to create multires panoramas
To be able to create multiresolution panoramas, you need to have the nona program installed, which is available as part of Hugin, as well as Python 3 with the Pillow and NumPy packages. The pyshtools Python package is also recommended. Then, run
python3 generate.py pano_image.jpg
in 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:
bash
$ cd utils/multires
$ python3 generate.py pano_image.jpg
where pano_image.jpg is the filename of your equirectangular panorama. If nona is not on the system path, use:
bash
$ cd utils/multires
$ python3 generate.py -n /path/to/nona pano_image.jpg
For a complete list of options, run:
bash
$ python3 generate.py --help
To view the generated configuration, run:
bash
$ cd ../..
$ python3 -m http.server
This 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.
Bundled examples
Examples 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:
bash
$ python3 -m http.server
in 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.
Additional examples are available at pannellum.org.
Browser Compatibility
Since Pannellum is built with web standards, it requires a modern browser to function.
Full support (with appropriate graphics drivers):
- Firefox 23+
- Chrome 24+
- Safari 8+
- Internet Explorer 11+
- Edge
The support list is based on feature support. As only recent browsers are tested, there may be regressions in older browsers.
Not officially supported:
Mobile / app / web frameworks are not officially supported. They may work, but they're not tested and are not the targeted platform.
Translations
All user-facing strings can be changed using the strings configuration parameter. There exists a third-party respository of user-contributed translations that can be used with this configuration option.
Building
The 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:
bash
$ cd utils/build
$ ./build.sh
If successful, this should create build/pannellum.htm, build/pannellum.js, and build/pannellum.css, relative to the root directory of the repository.
Tests
A minimal Selenium-based test suite is located in the tests directory. The tests can be executed by running:
bash
python3 run_tests.py
A Selenium-driven web browser (with a Chrome driver, by default) is created, and screenshots are generated and compared against previously generated ones in tests. For example, to regenerate the screenshots one can run:
bash
$ python3 tests/run_tests.py --create-ref
And to simply run the tests to compare to, eliminate that argument. By default, a random port is selected, along with other arguments. One can see usage via:
bash
$ python tests/run_tests.py --help
Continuous integration tests are run via GitHub Actions. Running the tests locally requires Python 3, the Selenium Python bindings, Pillow, NumPy, and either Firefox & geckodriver or Chrome & ChromeDriver.
Seeking support
If you wish to ask a question or report a bug, please open an issue at github.com/mpetroff/pannellum. See the Contributing section below for more details.
Contributing
Development takes place at 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 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.
License
Pannellum is distributed under the MIT License. For more information, read the file COPYING or peruse the license online.
In the past, parts of Pannellum were based on three.js r40, which is licensed under the MIT License.
The panoramic image provided with the examples is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
Credits
- Matthew Petroff, Original Author
- three.js r40, Former Underlying Framework
If used as part of academic research, please cite:
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
Owner
- Name: Matthew Petroff
- Login: mpetroff
- Kind: user
- Location: Boston
- Website: https://mpetroff.net/
- Twitter: petroffm
- Repositories: 19
- Profile: https://github.com/mpetroff
JOSS Publication
Pannellum: a lightweight web-based panorama viewer
Authors
Tags
panoramas visualization WebGLCitation (CITATION.cff)
cff-version: 1.2.0
title: Pannellum
authors:
- family-names: Petroff
given-names: Matthew
orcid: "https://orcid.org/0000-0002-4436-4215"
doi: 10.5281/zenodo.3334433
repository-code: "https://github.com/mpetroff/pannellum"
message: "If you use this software, please cite it as below."
preferred-citation:
type: article
authors:
- family-names: Petroff
given-names: Matthew A.
orcid: "https://orcid.org/0000-0002-4436-4215"
doi: 10.21105/joss.01628
journal: "Journal of Open Source Software"
start: 1628
title: "Pannellum: a lightweight web-based panorama viewer"
volume: 4
issue: 40
year: 2019
GitHub Events
Total
- Issues event: 32
- Watch event: 284
- Delete event: 1
- Issue comment event: 48
- Push event: 15
- Pull request event: 2
- Fork event: 30
- Create event: 1
Last Year
- Issues event: 32
- Watch event: 284
- Delete event: 1
- Issue comment event: 48
- Push event: 15
- Pull request event: 2
- Fork event: 30
- Create event: 1
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Matthew Petroff | m****w@m****t | 747 |
| Benjamin BERNARD | b****i@m****t | 7 |
| Guillaume de Bure | g****e@g****m | 7 |
| mko | c****e@m****e | 5 |
| David von Oheimb | D****O | 5 |
| strarsis | s****s@g****m | 4 |
| Tortila90 | T****0 | 4 |
| Janne Cederberg | j****g@g****m | 4 |
| Didac | d****z@g****m | 4 |
| Johannes Wienke | j****e@t****e | 4 |
| Will Calderbank | w****l@d****k | 3 |
| András Molnár | a****4@g****m | 3 |
| Daniel Naber | n****r@d****e | 3 |
| PhobosK | p****k@k****t | 3 |
| Prisacariu Alexandru | z****x@g****m | 3 |
| Will Calderbank | w****1@g****m | 3 |
| Vanessa Sochat | v****t@s****u | 3 |
| Jonas Petersen | j****x@m****m | 2 |
| Andras Elso | e****s@g****m | 2 |
| Bei Yang | b****s@g****m | 2 |
| Daniel Morgenstern | d****n@i****e | 2 |
| Gabriel Cangussu | g****u@g****m | 2 |
| Johannes Lehtinen | j****n@i****i | 2 |
| clashlab | n****t@g****m | 2 |
| nachopas | l****l@g****m | 2 |
| sayali-15 | 3****5 | 1 |
| praefectius | w****r@k****e | 1 |
| haripo | e****d@g****m | 1 |
| Stefan Keim | i****s | 1 |
| Kevin Van Kessel | k****n@v****a | 1 |
| and 18 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 220
- Total pull requests: 17
- Average time to close issues: about 1 year
- Average time to close pull requests: 4 days
- Total issue authors: 170
- Total pull request authors: 15
- Average comments per issue: 3.43
- Average comments per pull request: 1.65
- Merged pull requests: 6
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 27
- Pull requests: 6
- Average time to close issues: 7 days
- Average time to close pull requests: about 20 hours
- Issue authors: 26
- Pull request authors: 5
- Average comments per issue: 1.85
- Average comments per pull request: 0.83
- Merged pull requests: 4
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- aproni34f (8)
- aliMurtaja (5)
- almarass1 (5)
- zeleamaaa (5)
- dbwodlf3 (3)
- paulks-software (3)
- OlivierLeal (3)
- Ephraim-Bryski (3)
- ghost (3)
- L00ncan (3)
- StadtGE (2)
- vlkpa (2)
- SuhaibMaraqa (2)
- codingisverytaxing (2)
- needsmorecoffee (2)
Pull Request Authors
- zbycz (2)
- strarsis (2)
- gitteeee (2)
- kabalin (2)
- jox (2)
- Elbandi (2)
- jsccosta (2)
- mpetroff (2)
- nohosh (1)
- Malgalad (1)
- trey0 (1)
- Wolfshe (1)
- the-ft (1)
- robertaugusteijn (1)
- hootstheowl (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 5
-
Total downloads:
- npm 38,606 last-month
-
Total dependent packages: 23
(may contain duplicates) -
Total dependent repositories: 88
(may contain duplicates) - Total versions: 18
- Total maintainers: 4
- Total advisories: 1
npmjs.org: pannellum
Pannellum is a lightweight, free, and open source panorama viewer for the web.
- Homepage: https://pannellum.org/
- License: MIT
-
Latest release: 2.5.6
published about 6 years ago
Rankings
Maintainers (1)
npmjs.org: sorokinsh-pannellum
Pannellum is a lightweight, free, and open source panorama viewer for the web.
- Homepage: https://pannellum.org/
- License: MIT
- Status: unpublished
-
Latest release: 0.0.1-dev.0
published over 3 years ago
Rankings
Maintainers (1)
npmjs.org: pannellum-next
Pannellum is a lightweight, free, and open source panorama viewer for the web.
- Homepage: https://pannellum.org/
- License: MIT
-
Latest release: 2.5.7
published over 3 years ago
Rankings
Maintainers (1)
npmjs.org: pannellum-extended
Pannellum is a lightweight, free, and open source panorama viewer for the web.
- Homepage: https://pannellum.org/
- License: MIT
-
Latest release: 2.5.6
published almost 4 years ago
Rankings
Maintainers (1)
repo1.maven.org: org.webjars.npm:pannellum
WebJar for pannellum
- Homepage: http://webjars.org
- Documentation: https://appdoc.app/artifact/org.webjars.npm/pannellum/
- License: MIT
-
Latest release: 2.4.1
published almost 7 years ago
Rankings
Dependencies
- ubuntu 20.04 build
