Les dernières nouveautés Giro3D

Dans un précédent article, nous vous présentions les dernières évolutions et la roadmap de Giro3D. Dans cet article, nous vous présentons les dernières nouveautés du projet.

Quoi de neuf dans Giro3D ?

La dernière version de Giro3D  ajoute de nombreuses fonctionnalités, améliorations et correctifs. Voici un aperçu des principales additions.

Effets de nuages de points (👉 Essayer en ligne)

Un élément important de la roadmap concerne l’amélioration du rendu des nuages de points. L’ajout d’effets comme l’Eye Dome Lighting (EDL) et inpainting améliore grandement la lisibilité et l’aspect visuel des nuages de points. Ces effets font désormais partie du coeur de Giro3D et peuvent être activés à la demande au runtime.
Eye dome lighting on a point cloud

Eye dome lighting sur un nuage de points

Reprojection des couches images (👉 Essayer en ligne)

L’entité Map  peut désormais contenir des couches  dont la projection diffère de celle de la scène. Dans ce cas, les images produites par les couches sont automatiquement reprojetées pour correspondre au système de coordonnées de la scène.
C’est particulièrement utile dans le cas où vous ne pouvez pas changer le système de coordonnées de la scène, (par exemple si la scène contient d’autres entités non reprojetables), ou pour mélanger des couches de fournisseurs différents (et de projections différentes).

Nouvelle entité: FeatureCollection (👉Essayer en ligne)

FeatureCollection permet d’afficher des données vectorielles directement sous forme 3D, sans passer par un drapage sur la Map. Les types de vecteurs supportés sont : points, polylignes et (multi-)polygones.
Nous travaillons actuellement au support des polygones extrudés pour l’affichage de bâtiments en 3D.

2 couches WFS (arrêts de bus et lignes de bus)  affichés sous forme de meshes 3D.

Support des plans de coupes (👉 Essayer en ligne)

Les entités supportent désormais nativement les plans de coupes (clipping planes) de three.js. Vous pouvez activer les plans de coupe pour la scène entière, ou bien par entité, grâce à la nouvelle propriété clippingPlanes. Un nombre illimité de plans de coupes peuvent être ajoutés, par exemple pour définir un volume.

A box volume made of 6 clipping planes

Côté technique

Migration vers TypeScript

La codebase de Giro3D migre vers TypeScript pour une meilleure gestion de la complexité du projet et réduire les erreurs de typages qui représentent une part importante de bugs dans les librairies web.

TypeScript offre de nombreux avantages, comme la migration progressive: pas besoin de migrer tous les fichiers d’un coup, il est possible de mélanger Javascript et Typescript dans le même projet sans problème. Cela nous permet de cibler en priorité les fichiers et modules critiques, tels que ceux qui exposent une API.

Les paquets publiés par Giro3D sur npm.js ne changent pas de contenu: ils resent en Javascript (accompagnés de déclaration de type). De fait, aucun changement n’est nécessaire du côté des utilisateurs de Giro3D et cette migration devrait être transparente.

Une meilleure intégration three.js

Giro3D est construit sur le moteur three.js. Notre objectif est une intégration maximale du moteur, afin de bénéficier automatiquement des fonctionnalités de three.js (comme les plans de coupe). Nous souhaitons également laisser les utilisateurs modifier ou adapter Giro3D en accédant directement au moteur sous-jacent et à la scène.
Concrètement, cela signifie que les shaders et materials spécifiques à Giro3D sont maintenant bien mieux intégrés aux mécanismes de three.js afin de bénéficier autant que possible des fonctionnalités three.js et éviter la duplication de code.

Nouveau document de gouvernance

La gouvernance de Giro3D est désormais formalisée via un document et une page dédiée. Notre objectif est d’être aussi inclusif que possible et d’accueillir toutes sortes de contributeurs.