Le développement de Photo Sphere Viewer est loin d’être mort. La version 2.3 est âgée de seulement un mois, mais déjà la version 2.4 est là, et elle vient avec pas moins de sept nouvelles options et trois nouvelles méthodes publiques.

Contrôlez l’animation verticale !

Depuis quelques versions déjà, il est possible de contrôler la vitesse horizontale de l’animation. Cependant, il n’était pas possible de choisir la vitesse verticale. Maintenant, ça l’est, grâce à une nouvelle option : vertical_anim_speed qui accepte les mêmes valeurs que anim_speed (pour la vitesse horizontale).

Aussi, il est possible de sélectionner la cible de cette animation verticale avec vertical_anim_target. Vous indiquez à cette option une latitude, en radians ou degrés. Quand l’animation commence, la partie verticale va aller vers cette latitude. Par défaut, l’utilisateur va toujours retourner vers l’équateur mais, maintenant, vous pouvez changer ça.

Cachez une partie de votre panorama

La plus grosse nouvelle fonctionnalité de Photo Sphere Viewer 2.4 est la possibilité de sélectionner les longitudes visibles. Vous pouvez en effet indiquer des longitudes minimale et maximale avec min_longitude et max_longitude. Ces valeurs peuvent être en degrés ou radians. Ces options sont utiles si vous voulez cacher une partie du panorama pour une quelconque raison.

Mais, qu’en est-il de l’animation horizontale ? Qu’arrive-t-il quand le bord de la zone autorisée est atteint ? Bonne question.

Pour répondre à cette question, quoi de mieux qu’une nouvelle option ? Nommée reverse_anim, cette option est un booléen. Si il est défini à false, l’animation va s’arrêter quand le bord est atteint. Mais si vous le définissez à true (sa valeur par défaut), l’animation va être inversée : vous pouvez maintenant dire « non » avec une tête virtuelle.

Définir des longitudes minimale et maximale peut aussi être utile si votre panorama est incomplet. Cependant, pour l’instant, Photo Sphere Viewer ne peut pas détecter les panoramas rognés (sauf s’ils ont été pris avec Photo Sphere de Google).

C’est pourquoi vous pouvez définir vos propres valeurs avec pano_size. Cette option est un objet qui peut accepter six propriétés :

  • cropped_width et cropped_height : la taille du panorama rogné (si cette taille est la même que celle de l’image, vous pouvez ignorer ces propriétés) ;
  • full_width et full_height : la taille que le panorama devrait faire si il n’était pas rogné ;
  • cropped_x et cropped_y : les coordonnées de la partie rognée relativement au panorama complet (si cette partie est centrée vous pouvez ignorer ces propriétés).

Un nouveau type de loader

Photo Sphere Viewer 2.4 vient avec un troisième type de loader. Si vous pouvez toujours utiliser un simple loader textuel ou imagé, il est maintenant possible d’indiquer un loader plus complexe en HTML, avec loading_html.

Vous pouvez indiquer à cette option une chaîne de caractère qui représente l’arbre DOM à insérer pendant le chargement. Vous pouvez également indiquer un nœud DOM à attacher.

Un exemple concret peut être vu dans le fichier example1.html, avec un très simple loader HTML animé en CSS.

Contrôler la position !

Si vous le voulez, vous pouvez forcer l’utilisateur à voir un point spécifique dans votre panorama avec la nouvelle méthode publique moveTo(). Vous lui passez les coordonnées d’un point, et l’utilisateur le verra.

Vous pouvez également récupérer le point sur lequel le panorama est actuellement centré avec getPosition() qui vous donne les coordonnées de ce point en radians. Les degrés sont également disponibles avec getPositionInDegrees().

Quelques bugs corrigés

La fonctionnalité de plein écran était cassée sur Internet Explorer. Maintenant, c’est réparé et vos visiteurs utilisant IE peuvent voir vos panoramas en plein écran.

Il y avait toujours un problème avec box-sizing sur certains sites. Apparemment, certains développeurs n’aiment pas trop la valeur inherit pour box-sizing, donc j’ai corrigé le problème des éléments de la barre de navigation sur ces sites.

Maintenant, le bug bizarre. Dans le fichier example1.html, je propose un input de type file pour autoriser l’envoi d’un panorama affiché avec Photo Sphere Viewer. Il apparaît que, sur certains navigateurs sur certaines plate-formes, ça ne marche pas. J’ai trouvé le problème : ces navigateurs n’aiment pas l’AJAX avec des fichiers locaux.

Cependant, je ne vois aucune manière de corriger ça, mais vous ne verrez plus ce problème pour autant. En effet, maintenant, quand PSV voit un fichier local, il passe la fonction AJAX. Alors, problème résolu ? Pas vraiment…

Si la fonction AJAX est là, ce n’est pas pour rien, et elle n’est pas inutile : cette fonction lit les données XMP, et ces données sont utilisées par PSV pour voir si un panorama est rogné, si il a été pris avec Photo Sphere de Google.

Si vos panoramas ne sont pas rognés, la fonction AJAX est inutile (c’est pourquoi l’option usexmpdata est là). Si vous voulez utiliser des panoramas locaux rognés, c’est toujours possible, mais vous devez indiquer vous-même les bonnes dimensions avec la nouvelle option pano_size. Je sais que ce n’est pas parfait, mais je n’ai pas trouvé de meilleure solution.

Et la suite ?

Toujours pas de moteur 3D dans cette version ? Eh non, mais c’est normal, tout simplement parce qu’il n’est pas prêt. Cependant, j’ai commencé à le développer et, pour l’instant, la progression est plutôt bonne. J’ai eu quelques soucis et je pense que d’autres vont arriver, mais c’est un truc vraiment intéressant à développer donc je n’abandonnerai pas.

Je ne sais pas quand ce nouveau moteur sera prêt. La seule chose que je peux dire, c’est que vous n’avez aucune chance de le voir dans les prochains jours.

Ce nouveau moteur ne va en effet pas venir seul dans une nouvelle version. Il sera présent dans Photo Sphere Viewer 3.0, une version qui changera énormément de choses, pour la plupart invisibles pour vous, mais importantes pour le développement. Photo Sphere Viewer 3.0 sera une très grosse mise à jour, c’est pourquoi vous pouvez être sûr qu’elle mettre un peu de temps à être développée.