Pannellum

Pannellum: a lightweight web-based panorama viewer - Published in JOSS (2019)

https://github.com/mpetroff/pannellum

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

javascript library panorama webgl
Last synced: 4 months ago · JSON representation ·

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
javascript library panorama webgl
Created over 13 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing Funding License Citation

readme.md

Pannellum

CI DOI DOI

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

  1. Upload build/pannellum.htm and 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.
  2. 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.
  3. 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

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

JOSS Publication

Pannellum: a lightweight web-based panorama viewer
Published
August 31, 2019
Volume 4, Issue 40, Page 1628
Authors
Matthew A. Petroff ORCID
Department of Physics & Astronomy, Johns Hopkins University, Baltimore, Maryland 21218, USA
Editor
Leonardo Uieda ORCID
Tags
panoramas visualization WebGL

Citation (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

All Time
  • Total Commits: 851
  • Total Committers: 48
  • Avg Commits per committer: 17.729
  • Development Distribution Score (DDS): 0.122
Past Year
  • Commits: 13
  • Committers: 3
  • Avg Commits per committer: 4.333
  • Development Distribution Score (DDS): 0.154
Top Committers
Name Email 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...

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
question (106) enhancement (12) bug (6) duplicate (5) invalid (4) wontfix (1)
Pull Request Labels
invalid (2)

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.

  • Versions: 13
  • Dependent Packages: 21
  • Dependent Repositories: 86
  • Downloads: 38,563 Last month
Rankings
Downloads: 1.1%
Dependent packages count: 1.1%
Average: 1.3%
Forks count: 1.4%
Stargazers count: 1.5%
Dependent repos count: 1.5%
Maintainers (1)
Last synced: 4 months ago
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
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 8 Last month
Rankings
Forks count: 1.4%
Stargazers count: 1.5%
Average: 17.6%
Downloads: 49.9%
Maintainers (1)
Last synced: 4 months ago
npmjs.org: pannellum-next

Pannellum is a lightweight, free, and open source panorama viewer for the web.

  • Versions: 1
  • Dependent Packages: 1
  • Dependent Repositories: 1
  • Downloads: 17 Last month
Rankings
Forks count: 1.4%
Stargazers count: 1.5%
Dependent repos count: 10.3%
Average: 17.8%
Dependent packages count: 20.9%
Downloads: 54.9%
Maintainers (1)
Last synced: 4 months ago
npmjs.org: pannellum-extended

Pannellum is a lightweight, free, and open source panorama viewer for the web.

  • Versions: 1
  • Dependent Packages: 1
  • Dependent Repositories: 0
  • Downloads: 18 Last month
Rankings
Forks count: 1.8%
Stargazers count: 1.8%
Dependent packages count: 16.2%
Average: 18.2%
Dependent repos count: 25.3%
Downloads: 45.8%
Maintainers (1)
Last synced: 4 months ago
repo1.maven.org: org.webjars.npm:pannellum

WebJar for pannellum

  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 1
Rankings
Stargazers count: 5.4%
Forks count: 7.0%
Dependent repos count: 20.8%
Average: 20.8%
Dependent packages count: 50.2%
Last synced: 4 months ago

Dependencies

utils/multires/Dockerfile docker
  • ubuntu 20.04 build
package.json npm