You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12 年之前
12 年之前
12 年之前
12 年之前
12 年之前
12 年之前
12 年之前
12 年之前
10 年之前
12 年之前
12 年之前
12 年之前
12 年之前
12 年之前
12 年之前
12 年之前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. # Pannellum
  2. [![Build Status](https://travis-ci.org/mpetroff/pannellum.svg?branch=master)](https://travis-ci.org/mpetroff/pannellum)
  3. [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3334433.svg)](https://doi.org/10.5281/zenodo.3334433)
  4. ## About
  5. 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.
  6. ## Getting started
  7. ### Hosted examples
  8. A 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.
  9. ### Simple tutorial and configuration utility
  10. 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](https://pannellum.org/documentation/overview/tutorial/). Said page also includes a utility for easily creating the necessary Pannellum configuration.
  11. ### Local testing and self-hosting
  12. If you would like to locally test or self-host Pannellum, continue to the _How to use_ section below.
  13. ## How to use
  14. 1. Upload `build/pannellum.htm` and a full equirectangular panorama to a web server or run a development web server locally.
  15. * 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.
  16. 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](https://pannellum.org/documentation/examples/simple-example/).
  17. 3. Insert the generated `<iframe>` 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/).
  18. Configuration 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/).
  19. ### Using a minified copy
  20. 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](https://github.com/mpetroff/pannellum/releases) 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`.
  21. ### Using `generate.py` to create multires panoramas
  22. To 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 with the [Pillow](https://pillow.readthedocs.org/) package. Then, run
  23. ```
  24. python3 generate.py pano_image.jpg
  25. ```
  26. 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:
  27. ```bash
  28. $ cd utils/multires
  29. $ python3 generate.py pano_image.jpg
  30. ```
  31. where `pano_image.jpg` is the filename of your equirectangular panorama. If `nona` is not on the system path, use:
  32. ```bash
  33. $ cd utils/multires
  34. $ python3 generate.py -n /path/to/nona pano_image.jpg
  35. ```
  36. For a complete list of options, run:
  37. ```bash
  38. $ python3 generate.py --help
  39. ```
  40. To view the generated configuration, run:
  41. ```bash
  42. $ cd ../..
  43. $ python3 -m http.server
  44. ```
  45. 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.
  46. ## Bundled examples
  47. 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:
  48. ```bash
  49. $ python3 -m http.server
  50. ```
  51. 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.
  52. Additional examples are available at [pannellum.org](https://pannellum.org/documentation/examples/simple-example/).
  53. ## Browser Compatibility
  54. Since Pannellum is built with web standards, it requires a modern browser to function.
  55. #### Full support (with appropriate graphics drivers):
  56. * Firefox 23+
  57. * Chrome 24+
  58. * Safari 8+
  59. * Internet Explorer 11+
  60. * Edge
  61. The support list is based on feature support. As only recent browsers are tested, there may be regressions in older browsers.
  62. #### Not officially supported:
  63. Mobile / app frameworks are not officially supported. They may work, but they're not tested and are not the targeted platform.
  64. ## Translations
  65. All 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.
  66. ## Building
  67. 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:
  68. ```bash
  69. $ cd utils/build
  70. $ ./build.sh
  71. ```
  72. If successful, this should create `build/pannellum.htm`, `build/pannellum.js`, and `build/pannellum.css`, relative to the root directory of the repository.
  73. ## Tests
  74. A minimal [Selenium](https://www.seleniumhq.org/)-based test suite is located in the `tests` directory. The tests can be executed by running:
  75. ```bash
  76. python3 run_tests.py
  77. ```
  78. A Selenium-driven web browser (with a Chrome driver, by default) is created, and screenshots are generated
  79. and compared against previously generated ones in [tests](tests). For example, to regenerate the screenshots
  80. one can run:
  81. ```bash
  82. $ python3 tests/run_tests.py --create-ref
  83. ```
  84. And to simply run the tests to compare to, eliminate that argument. By default, a random
  85. port is selected, along with other arguments. One can see usage via:
  86. ```bash
  87. $ python tests/run_tests.py --help
  88. ```
  89. Continuous 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 & [geckodriver](https://github.com/mozilla/geckodriver) or Chrome & [ChromeDriver](https://chromedriver.chromium.org/).
  90. ## Seeking support
  91. If 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.
  92. ## Contributing
  93. Development 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. 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).
  94. ## License
  95. Pannellum 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).
  96. In 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).
  97. The 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/).
  98. ## Credits
  99. * [Matthew Petroff](http://mpetroff.net/), Original Author
  100. * [three.js](https://github.com/mrdoob/three.js) r40, Former Underlying Framework