/497d327919606ba6024cb13b4bee38a4

  • Est-ce qu’il existe des alternatives libres à KRPano, Pano2VR… permettant de créer et afficher des panoramas 360° en ligne ?

    Il y a deux aspects :
    – fabriquer les « tuiles » d’images qui seront affichées (idéalement, un script côté serveur serait trop kikou)
    – afficher la navigation 360° (idéalement : scriptable de l’extérieur pour pouvoir contrôler dynamiquement des hotspots, des zooms/dézooms, des changements de scènes…).

    • Pour l’affichage, je viens de voir Pannellum :
      https://pannellum.org

      @b_b Je vois que tu l’avais référencé en 2015. Tu l’utilises ? Tu as des retours ?

      https://pannellum.org/documentation/overview

      Panoramic images can be provided in either equirectangular, cube map, or multiresolution formats. Equirectangular is the simplest to use as only a single image is needed; Google Photo Sphere XMP metadata is automatically read and used if provided. However, to ensure support among all WebGL-capable devices, the maximum image size should be preferably limited to 4096 px wide; 8192 px is also acceptable for most devices. Cube maps require six images but support somewhat higher resolution panoramas, as the vast majority of devices support cube faces up to 4096 px across. Additionally, cube maps are supported by Pannellum’s fallback CSS 3D transform-based renderer and will therefore work on older mobile devices that don’t support WebGL. Although larger images are supported, download sizes should be taken into consideration. The final input format is Pannellum’s multiresolution format, which is generated from an equirectangular image using Pannellum’s generate.py Python script. This format is a cube map-based format, except each cube face is a tiled image pyramid instead of a single image. Arbitrarily large images are supported, the CSS 3D transform-based fallback renderer is supported, and load times are quick due to the image pyramids. The downside of this format is that extra work is required to convert an image to it and the large number of files that must be hosted.

    • J’ai commencé à jouer avec Pannellum, ça m’a l’air de faire tout ce dont j’ai besoin dans le rendu. Notamment il y a une API pour contrôler l’affichage « après coup », ajouter des hotspots… et surtout ça gère le multirésolution :
      https://pannellum.org/documentation/examples/multiresolution

      Quand on a une image qui fait 4096 pixels (ou moins), c’est très facile à utiliser, on lui balance directement l’image équirectangulaire, et ça fonctionne tout seul (comme la démo de @fil).

      En revanche, si on veut afficher des images plus grandes, il faut passer par les tuiles en multi-résolution, et pour ça il fournit uniquement un script Python, qui est une plaie à faire tourner (ça demande des dépendances, dont une certaine « nona » que je vais jamais réussir à installer sur un serveur normal – et que de toute façon ça marche déjà pas sur mon Mac) :
      https://raw.githubusercontent.com/mpetroff/pannellum/master/utils/multires/generate.py

      Ça serait tout de même bien pratique d’avoir un script PHP (comme maptiler pour les tuiles zoomables « à plat »).

    • Si je comprends bien, nona sert à projeter ton immense image source en 6 faces de cube (front back top bottom left right), des images carrées donc, qui seront ensuite tuilées de façon assez classique. Si tu as la seconde partie, reste à implémenter la première. Mais si tes images sont énormes il faut peut-être faire ce traitement en amont de toute façon ?

    • Oui, c’est ça. J’ai trouvé des scripts Python qui semblent capables de fabriquer les 6 faces sans utiliser nona, et du coup un peu plus faciles à installer, ça serait déjà ça. Mais toujours pas idéal, parce qu’il faut tout de même installer Pillow pour Python.

      Idéalement, j’aimerais au moins trouver un fonction php::imagick pour faire le job.

      Et comme par ailleurs je n’arrive même pas à faire tourner le script generate.py, je n’ai pas trop d’idée de la structure des fichiers…

      Après, pour le « en amont », le hic c’est :
      – d’abord je n’arrive même pas à faire tourner le script en local, donc y’a même pas d’amont pour l’instant :-))
      – l’idéal tout de même serait que l’usager puisse directement uploader ses images et badaboum ça fabrique le panoramique.

    • J’ai un souci assez similaire avec les tuiles « à plat » : je n’arrive pas à traiter correctement les images de plus de 4096 pixels. (édit : en local ; sur mon serveur, j’arrive à traiter au moins le double)

      Et tout ça est, évidemment, documenté avec une extrême parcimonie, par des gens bloqués dans une zone de l’espace-temps où les plus grandes images sur le Web semblent faire 256 pixels de large en 8 bits.