Pannellum 2.2

After a little over a year of work, I’ve just released Pannellum 2.2.0. New features in this release include an experimental API, instead of just a standalone viewer, for better integration with external code; support for the PosePitchDegrees and PoseRollDegrees XMP tags, as used by the Ricoh Theta S; an optional fade animation for tour transitions; and a debug parameter to assist with placing hot spots. Noteworthy improvements include vastly improved equirectangular video support, high-DPI display support, and unification of regular and tour configuration files. Finally, there are numerous bug-fixes.

Previously, equirectangular videos were sort of supported, but the user experience was terrible, as there were no playback controls. Pannellum is a panorama viewer of course, not a video player, so I didn’t want to write my own video player nor did I want to build it into Pannellum—this is where the new API comes in. Instead, I wrote a Video.js plug-in that uses Pannellum to render the video; this achieves the objective of a fully-featured equirectangular video player without actually having to write a video player.

I would have created a new release sooner, but I didn’t want to release yet another version without much in the way of documentation, specifically examples. At the beginning of December, I received the Ricoh Theta S I had pre-ordered, allowing me to quickly shoot a variety of panoramas1 to use with examples—this is when my push to write documentation started in earnest. To this end, I converted from using Jekyll to using Hugo, as it better suited the documentation effort (and moved it to a dedicated repository). I then wrote examples, integrated the existing configuration parameter documentation, and added the new API documentation. Finally, I created a Pannellum CDN and integrated a configuration generator to allow one to easily display CORS-hosted panoramas (e.g. hosted with Imgur).

As always, report bugs on the GitHub issue tracker.

  1. Actually, they’re all of Baltimore near my apartment or of the area around San Pedro de Atacama, Chile where I’m currently working.  

This entry was posted in and tagged , , , . Bookmark the permalink.

10 Responses to Pannellum 2.2

  1. How would I go about hosting the images on my own site, or what others photo services offer CORS support?

  2. Hallo Matthew,
    great script, it works fine for me. For my own use I extended the API by a function switching the autorotate:
    * Sets autoRotate value.
    * @memberof Viewer
    * @instance
    * @param {number} yaw – Yaw in degrees [-180, 180]
    * @returns {Viewer} `this`
    this.setAutoRotate = function(val) {
    config.autoRotate = val;
    if (val !== false) animateInit();
    return this;
    Maybe you like to take this over to your source.
    Can I donate?
    Best regards – Ulrich

  3. Thiago Sanches says:

    How do I use the movies hosted out of my site. VIMEO for example?
    Only the sound is played, the picture not.

  4. Stefan says:


    I am trying to use the API to move around in the image.
    However, calling “setPitch” and “setYaw” does not update the view in the browser.

    What do I have to do so it updates the view after setting the pitch and yaw?

    • Matthew Petroff says:

      This has been fixed in the development version. Either use that or wait for the next release.