Pannellum 2.5

Pannellum 2.5 has now been released. As with Pannellum 2.4, this was a rather incremental release. The most noteworthy change is that equirectangular panoramas will now be automatically split into two textures if too big for a given device, which means images up to 8192 px across, covering all consumer panoramic cameras, now have widespread support. There has also been a significant improvement of the rendering quality on certain mobile devices (the fragment shaders now use highp precision), and support for partial panoramas has improved. Finally, there are an assortment of more minor improvements and bug fixes. See the changelog for full details. Pannellum also now has a Zenodo DOI (and a specific DOI for each new release).

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

21 Responses to Pannellum 2.5

  1. Valerio says:

    Great Matthew! Can I contribute with a donation to support development?
    Valerio Rome IT

  2. Luke Chable says:

    Hey Matthew, firstly – Pannellum is amazing! Well done and thank you for making the web a better place :)

    Secondly, I can’t get ‘look around’ by moving your device around to work in Mobile Safari. Every other mobile browser works fine. Is there a trick here or a switch we could prompt the users to turn on?

    • Matthew Petroff says:

      Apple disabled device orientation events by default in iOS 12.2 due to privacy concerns, so they need to be manually enabled in settings. When iOS 13 is released, there will be an API for triggering a permissions prompt; I just added code for using this, but it’s untested. For more details, see:

  3. Jörgen says:

    Hi, I can’t get any equirectangular pictures displayed with Pannellum. It says always file cannot be accessed. Even in simple tutorial, when I add the URL of the picture, the same problem.
    What did I wrong?
    Any help?

    • Matthew Petroff says:

      Look at your browser’s developer tools. The console / network tab should tell you additional details. I suspect you have a CORS configuration issue.

      • Jörgen says:

        Hi Matthew, I tried it in Firefox and MS Edge. Both are not working. What is CORS?
        Can I send you the picture URL by PN or mail for testing?

        • Matthew Petroff says:

          Please show me the respect of doing a basic internet search before asking questions; if you had done so, you wouldn’t need to ask about CORS. As I said before, look at your browser’s developer tools.

  4. JR says:

    Just found Panellum and I’m really impressed. It took a bit to get into something new (now there’s time) but it was pretty straight forward to get my first test image online (own server). And still plenty to tinker with all the features that I haven’t even tested. A big thank you!

    Note: for some reason, using Ubuntu16.04/Firefox75, I get the 4096 limit with 7000×3500 images – no automatic splitting for some reason?

  5. Tom says:

    Thank you for your great Pannellum product!
    A question:
    I would also like to use the customer controls from your example for tours.
    When I install the customer controls in a variant with a single image, everything works perfectly, but it does not work in the tour (obviously the eventListeners do not work).
    Do you have an idea or an approach for me?
    Best regards,

    • Matthew Petroff says:

      There’s no change between how controls are handled between single images and tours, so I don’t see why you would be having an issue. Custom controls (I assume this is what you mean by “customer controls”) also don’t use any event listeners, so I’m not sure why you’re mentioning them. Also, any issues should also be reported on GitHub, not here.

  6. Hi– Thanks for your continued work on this wonderful tool.

    How can/should I have a link outside the viewer that changes which scene is showing in the viewer? E.g. the library on the home page: could you add a caption underneath the image saying, “Don’t miss the (link)sixth floor(/link).”?

    I’m not a great programmer, so my klunky idea was to load a new HTML file into the viewer’s iframe– but even then I don’t get how you’d reset the firstScene option. I set up firstScene to be assigned to a, which works great but requires reloading the whole page. I have an article that scrolls alongside the viewer and describes the contents of the tour– except that it can’t actually direct you to any particular scene, and reloading the whole page makes the reader lose her place.

    Hope that makes sense; any leads welcome.



    • Matthew Petroff says:

      Use the API, not the standalone / <iframe> viewer. Then, once you create the viewer with var viewer = pannellum.viewer(...);, you can switch the scene by calling the viewer.loadScene('scene_id'); method.

  7. Maciek says:

    I am testing Pannellum, and it’s super cool when working on desktop browsers. However there is some problem (with Pannellum or with me) on the iOS Safari and iOS Chrome. Images are loading with no results (and no errors).
    The same situation is on localhost and in my test domain.
    Has anyone faced that problem?

    • Matthew Petroff says:

      Can you check the developer console with Safari on a Mac? For future reference, the page rendering on Chrome on iOS is identical to Safari, since Apple doesn’t allow for other browser engines.

  8. Thanks for the email on doing a back-button type thing. You said:

    “To record the view before the scene changes, you should use the clickHandlerFunc (and clickHandlerArgs) hot spot property to add an event listener that records the information you need and then calls loadScene instead of settings the sceneId hot spot property.”

    That makes perfect sense, but I’m very stuck making the clickHandlerArgs work and can’t find a model/example. When defining the hotspot, after clickHandlerArgs: should I be specifying a string, or the name of an object? And does it matter what type (info or scene) the hotspot has?

    Hope that makes sense. Thanks,


    • Matthew Petroff says:

      You can specify whatever you like. There are two arguments passed to the clickHandlerFunc: the click event and the contents of clickHandlerArgs. For example, if you set clickHandlerArgs to be a string, the second argument passed to the clickHandlerFunc will be that string. The hot spot type does not matter.

  9. Thank you for your wonderful JavaScript API, Matthew. It inspired and powers our virtual art gallery from views rendered in Blender. Our next version will automatically generate the static js data file and hotspots from a database, and update the url when changing scenes.

  10. Jeff Surette says:

    Hi Matthew,

    Thanks for the great work. Pannellum is just what we needed.

    I’ve had a request for a hotspot to present an image instead of text. Is it possible? I don’t know much about programming javascript, but I know how to follow directions. :)

    • Matthew Petroff says:

      There are a couple ways that this can be done. There’s an undocumented hot spot image parameter, which can be used instead of the hot spot text parameter to supply an image URL; it’s not very flexible and is poorly tested, which is why it’s undocumented and not officially supported. You could also use the createTooltipFunc / createTooltipArgs to create custom hot spot tool tips (see custom hot spots example) that could contain an image, but that’s quite a bit more complicated than just following directions.

Leave a Reply to Geoffrey Bonnycastle Cancel reply

Your email address will not be published. Required fields are marked *