As a contributor to deck.gl, I’m super excited to use this! Contributors added a TerrainExtension [0] to drape or offset 2D data onto 3D surfaces in 8.9, which is huge for 3D visualization in general since common 2D layers would often be occluded by anything 3D. It’s great to see Google using open standards and openly governed projects for rendering too. Carto developed a story map [1] to showcase the new features, and played a big role in the integrations and extensions. Documentation has been updated, so it’s all ready to use. Happy mapping!
I haven't looked at the specs yet so maybe you can help me understand if the TerrainExtension, which uses raster DEM data can work with a point cloud data like Googles tiles?
My understanding is that with raster data, you cannot have arches, trees, or any object which has a thin component, like a tree trunk under a thick component like the tree canopy.
It’ll work in the situations you’ve described. The TerrainExtension can be applied to the TerrainLayer or the 3DTilesLayer. The TerrainLayer uses the 2D raster data to dynamically generate 3D meshes, and your understanding is correct in that this won’t have any overhangs. As far as I know, google doesn’t offer an api for the terrain layer, but AWS hosts a free open dataset for that. 3DTilesLayer renders GLTF meshes, which can contain overhangs. I’m not sure what the overhang behavior is, but it’d probably be something like “use the highest value”. In this case, Google’s api serves 3D textured meshes rather than point clouds.
I’ll caveat that this is all pretty new to me as well, and I might be missing something.
Have to say for anyone looking into this space though cesium was there first Deck.gl is far and away the best choice for almost any 3d mapping library now. Much much faster than cesium. And its great with 2d too even though it hardly gets a mention amongst leaflet, maplibre, openlayers etc.
Thanks! It’s been a great community to collaborate with. The deck.gl group works pretty closely with MapLibre these days in react-map-gl, and Cesium as well on 3D tile loaders in loaders.gl
It's slightly more complex than that. This is in 3D Tiles format which uses GLTF but I don't think you can simply grab a GLTF from an API endpoint. It's been sliced into cubes with hierarchical level of detail and other things I barely understand.
Oh that's interesting. You probably still need to jump through hoops to figure out the right url for the grid square and level of detail you need. And the session parameter - so you still need to make the initial tile request to get the JSON.
Do a little googling and you can probably find code on github to take care of the "get me terrain for these coordinates" part for you. That's how I managed it a few years ago when I was programmatically downloading tiles from google earth without understanding how to convert from coordinates to their url scheme.
[0] https://deck.gl/docs/api-reference/extensions/terrain-extens... [1] https://3dtiles.carto.com/