An update on Giro3D

By Monday August 28th, 20233D, NewsFR, Open Source,

In a previous article, we presented the latest evolutions and roadmap for the Giro3D library. We would like to showcase a few interesting features recently added.

What’s new in Giro3D ?

The latest version of Giro3D  added numerous features, improvements and bugfixes. Here is an overview of the main additions.

Post-processing effects on point clouds (👉 Try it online !)

A major item in the roadmap was the inclusion of effects such as Eye Dome Lighting (EDL) and inpainting effects, to improve the readability of point clouds. Now they are part of Giro3D core, and can be toggled on and off at runtime.
Eye dome lighting on a point cloud

Eye dome lighting on a point cloud

Reprojection support for map layers (👉 Try it online !)

The Map entity can now contain layers with a different projection than the projection of the scene. In this case, the images will be reprojected to match the target coordinate system.
This is especially useful when you cannot change the projection of the scene (for example when you have other entities that cannot be reprojected), or to mix layers from different providers in the same Map.

New entity: FeatureCollection (👉Try it online !)

The FeatureCollection entity can display vector data in the form of 3D meshes (rather than draped on a Map). Supported types are points, (multi-)lines and (multi-)polygons, as well as styling.
We are currently working on support of extruded polygons to display 3D buildings.

2 WFS layers (bus stops and bus lines) displayed as 3D meshes.

Clipping plane support (👉 Try it online !)

Entities now support three.js clipping planes out of the box. You can enable clipping planes at the scene level or on a per-entity basis, using the new clippingPlanes property. An unlimited numbers of planes can be set, for example to create a clipping volume.

A box volume made of 6 clipping planes

On the technical side

Migration to TypeScript

The codebase is migrating to TypeScript to better handle the complexity and reduce typing issues, which represent a major source of bugs in web libraries.

TypeScript offers numerous advantages, such as progressive migration: no need to migrate all files at once, you can have a mix of JS and TS files in the same codebase, and this works perfectly. This allows us to target more critical files and modules first, such as modules that have a user-facing API.

Another advantage is that the published packages remain in Javascript (with TypeScript type declarations, as before), so no change is required for the users of the library.

Better integration with three.js

Giro3D is built on top of the three.js rendering engine. Our goal is to integrate it as much as possible with Giro3D in order to benefit from built-in features (such as clipping planes), and let the users be able to directly manipulate the underlying renderer and scene.
This means that custom shaders and materials written for Giro3D will be using as much common features as feasible from the built-in features of three.js. This also makes it easier for end-users to customize Giro3D to suit their needs.

New governance document

The governance of Giro3D is now clearly laid out in a dedicated page. Our goal is to be as inclusive as possible and to welcome all sorts of contributors.