Cette expérience en ligne immersive permet aux utilisateurs de naviguer virtuellement à travers une galerie d’art composée de tableaux de l’Art Institute of Chicago (ARTIC). Elle est accessible sur tous les navigateurs web (PC, tablette, téléphone).
Cette application génère les couloirs et les salles de la galerie grâce à une courbe d’Hilbert, une courbe fractale qui remplit un espace de dimension supérieure et se déploie en suivant une spirale complexe sans se chevaucher. Des mutations aléatoires sont appliquées à cette courbe pour créer des salles séparées par des couloirs, et à chaque rafraîchissement de la page, une nouvelle galerie est générée.
La bibliothèque REGL est utilisée pour simplifier l’utilisation de l’API WebGL et pour générer les appels WebGL en temps réel. Pour charger les textures des tableaux, j’ai utilisé l’API de l’ARTIC, qui permet d’accéder à une base de données de plus de 50 000 œuvres d’art du musée ainsi qu’à des informations sur les artistes et les œuvres. Cette API permet également de charger dynamiquement les textures des œuvres au fur et à mesure que l’utilisateur navigue dans la galerie virtuelle.
Le rendu graphique de l’application a connu plusieurs améliorations au fil du projet. Auparavant, la lumière devait être traitée en temps réel. Pour rendre cela possible, puisque les sources de lumière sont disposées sur une grille, j’ai pu simplifier le calcul en ne prenant en compte que les quatre sources de lumière voisines du pixel rendu. Pour optimiser davantage les performances, j’ai décidé d’utiliser un pré rendu stocké dans une texture, ce qui me permet d’obtenir le même rendu visuel avec une meilleur fluidité de l’application.
L’ajout de l’ombre factice des tableaux et de la réflexion du sol a contribué à donner une apparence plus réaliste de l’environnement. J’ai soigneusement ajusté différents paramètres de rendu pour obtenir le niveau de réalisme le plus élevé possible. Cependant, pour encore mieux ancrer l’environnement dans la réalité, j’aurais pu ajouter des accessoires tels que des portes, des projecteurs, des poteaux à sangle ou des panneaux d’indication.
Bien que le projet soit modulaire et facile à intégrer avec d’autres sources d’images, il n’a pas été prévu que des développeurs tiers souhaitent adapter l’application à leurs usages. Il n’est pas aisé d’ajouter de nouvelles fonctionnalités telles que des interactions avec l’environnement ou des modifications de l’environnement généré. Pour permettre une plus grande flexibilité, il serait nécessaire de modifier drastiquement l’architecture de l’application.
En conclusion, je suis fier du résultat obtenu, mais il reste des améliorations possibles. Je pourrais implémenter davantage d’interactions avec les tableaux, ajouter des détails à l’environnement pour le rendre plus réaliste, et modifier l’architecture pour faciliter l’adaptation aux besoins des développeurs tiers.