|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- # Generating multi-resolution tiles for a panorama
-
- ## Get a Panorama
- If you don't have your own, it's easy to use one of the examples in the repository.
- From this directory, run:
-
- ```bash
- $ cp ../../examples/examplepano.jpg .
- ```
-
- ## Generate tiles
-
- To use the `generate.py` script, either its dependencies need to be installed,
- or [Docker](https://www.docker.com/) can be used to avoid this installation.
-
- ### Option 1: with local dependencies
-
- The `generate.py` script depends on `nona` (from [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. On Ubuntu, these dependencies can be
- installed by running:
-
- ```bash
- $ sudo apt install python3 python3-pil python3-numpy python3-pip hugin-tools
- $ pip3 install --user pyshtools
- ```
-
- If you have issues installing `pyshtools`, you may be on an architecture for
- which PyPI does not have pre-built binaries. In this case, you might need to
- install the dependencies described in the
- [pyshtools build-from-source directions](https://shtools.github.io/SHTOOLS/python-installing.html#build-from-source).
-
- Once the dependencies are installed, a tileset can generated with:
-
- ```bash
- $ python3 generate.py examplepano.jpg
- Processing input image information...
- Assuming --haov 360.0
- Assuming --vaov 180.0
- Generating cube faces...
- Generating tiles...
- Generating fallback tiles...
- ```
-
-
- ### Option 2: with Docker
-
- A small Dockerfile is provided that allows one to easily generate a panorama tileset
- with the [generate.py](generate.py) script, without needing to install dependencies
- on one's host.
-
- First, build the Docker container:
-
- ```bash
- $ docker build -t generate-panorama .
- ```
-
- When it's finished, you can bind the present working directory to a location in
- the container (`/data`) so that your image is found in the container. Notice
- that the output needs to be specified in a directory that is bound to the host:
-
- ```bash
- $ docker run -it -v $PWD:/data generate-panorama --output /data/output /data/examplepano.jpg
- Processing input image information...
- Assuming --haov 360.0
- Assuming --vaov 180.0
- Generating cube faces...
- Generating tiles...
- Generating fallback tiles...
- ```
-
- ## Viewing output (for either method)
-
- The final output will be in your present working directory:
-
- ```bash
- $ ls output/
- 1 2 3 config.json fallback
- ```
-
- Next, change back to the root and start a server:
-
- ```bash
- $ cd ../..
- $ python3 -m http.server
- ```
-
- A generated tileset and configuration in `utils/multires/output` can then be viewed by navigating a browser to:
-
- [http://localhost:8000/src/standalone/pannellum.htm#config=../../utils/multires/output/config.json](http://localhost:8000/src/standalone/pannellum.htm#config=../../utils/multires/output/config.json)
-
- When the page is loaded, the console will output a logging stream corresponding to the HTTP requests:
-
- ```bash
- 127.0.0.1 - - [09/Aug/2019 09:41:24] "GET /src/standalone/pannellum.htm HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:24] "GET /src/css/pannellum.css HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:24] "GET /src/standalone/standalone.css HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:24] "GET /src/js/libpannellum.js HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:24] "GET /src/js/pannellum.js HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:24] "GET /src/standalone/standalone.js HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:24] "GET /utils/multires/output/config.json HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:24] "GET /src/css/img/background.svg HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:24] "GET /src/css/img/sprites.svg HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:24] "GET /src/css/img/compass.svg HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:26] "GET /src/css/img/grab.svg HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:27] "GET /utils/multires/output//1/r0_0.jpg HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:27] "GET /utils/multires/output//1/f0_0.jpg HTTP/1.1" 200 -
- 127.0.0.1 - - [09/Aug/2019 09:41:27] "GET /utils/multires/output//1/u0_0.jpg HTTP/1.1" 200 -
- ...
- ```
-
- The panorama, in multi-resolution format, should display in the browser.
|