Py3dtiles est une librairie et un outil Python en ligne de commande pour générer, lire et modifier des 3D Tiles. On peut l'utiliser seul ou l'intégrer dans sa propre application Python.

La version 7.0.0 vient de sortir, il est temps de faire une petite rétrospective sur les dernières années !

La communauté et un nouveau mainteneur

Nous accueillons un nouveau mainteneur : Lorenzo Marnat (Liris). Le Liris a très significativement contribué à py3dtiles et a mené un travail de R&D conséquent sur leur fork et via l'application py3dtilers. Lorenzo réalise depuis quelques mois le travail d'intégration dans le tronc commun, véritable travail de fourmi ô combien nécessaire. L'intégrer à l'équipe était donc l'étape logique dans  ce processus.

Cela signifie que py3dtiles n'est plus un projet uniquement Oslandien ! Ceci constitue une étape très importante dans le développement d'un projet réellement communautaire et nous sommes très heureux de l'avoir dans l'équipe.

En conséquence, certains changements ont été adoptés afin que py3dtiles soit plus indépendant d'Oslandia. Nous espérons ainsi favoriser les contributions externes et l'implication d'autres entitées qu'Oslandia et le Liris:

  • Le dépôt de code a été déplacé vers sa propre organisation: https://gitlab.com/py3dtiles/py3dtiles. Nous en avons profité pour renommer la branche principale en main à la place de master (afin de s'approcher du défaut de GitLab).
  • Le site web est maintenant hébergé sur https://py3dtiles.org. Une redirection de l'ancien site a été mise en place, mais nous conseillons tout de même de mettre à jour vos signets web.
  • Nous avons maintenant un document décrivant la gouvernance: GOVERNANCE.md, qui décrit le fonctionnement de la communauté.
  • Et nous avons un canal de discussion instantané sur matrix.org !

Lidar HD de l'ign converti en 3dtiles avec py3dtiles et visualisé avec giro3d

Les évolutions fonctionnelles

Améliorations du support de la spécification

En version 2, py3dtiles souffrait encore de l'absence de ces quelques classes décrivant les concepts 3Dtiles, et qui sont maintenant présentes en version 7 :

  • BoundingVolumeBox
  • TileSet
  • Tile
  • Extension

Les feature tables sont maintenant supportées pour les b3dm en plus des pnts.

Nouveaux formats

Py3dtiles supporte maintenant les fichiers PLY (en nuage de points uniquement) et LAZ.

Le support XYZ et CSV a été amélioré, avec une auto-détection du format du CSV.

py3dtiles merge

Il s'agit d'une nouvelle commande permettant de générer un tileset à partir de 2 autres tilesets. Pour l'instant la génération des tuiles racines est assez naïve, mais devrait très bien fonctionner avec les nuages de points.

Autres fonctionnalités

Il est maintenant possible d'exporter les classifications des nuages de points dans les pnts.

Le support des batch tables a été ajouté.

Les évolutions techniques

Des évolutions de packaging

Les dépendances optionnelles

Avec le support de formats additionnels, le nombre de dépendances de py3dtiles augmente de façon significative. Nous avons créé des sections de dépendances optionnelles, afin d'éviter de demander aux utilisateurs d'installer des librairies pour des formats qu'ils n'utilisent pas.

Image Docker

Nous publions maintenant des images docker sur le gitlab registry et docker hub.

Support Windows

Un premier travail pour supporter Windows a été effectué, mais du travail reste à accomplir pour produire un .exe facilitant le déploiement.

La qualité du code

De gros efforts ont été effectués pour rendre la contribution plus agréable et améliorer globalement la qualité du code. Des analyseurs automatiques de code ont été mis en place, notamment des linters et un SonarCloud.

Nous avons fait un effort spécifique pour typer nos déclarations de fonctions et variables avec les nouvelles possibilités qu'offre les versions modernes de Python.

À venir

Le point principal sera le support des géométries dans le processus de conversion multiprocessus lancé par py3dtiles convert. Cela permettra ensuite d'avoir un support des formats géométriques, en particulier l'IFC ! (Mais également, l'amélioration du support PLY, des tables PostGIS, des OBJ, etc.).

D'autres améliorations sont bien sûr dans les cartons.

Impliquez-vous !

Py3dtiles est un logiciel communautaire et se portera mieux si vous participez ! Tester, ouvrir des tickets, voire contribuer ou financer sont des actions qui sont très utiles pour le projet. Le guide de contribution de la communauté est ici. Alternativement, n'hésitez pas à nous contacter pour en discuter !