Skip to content

Tile Refinement Modification for Vector Tiles #13686

Description

@xuanhuang1

Feature

I encountered what I thought was a bug but turns to be potentially a mismatch between runtime traversal behavior and the newly generated vector tiles. Had a discussion with @ggetz @lilleyse and @jaadelgren and it seems to be a persisting JS traversal implementation issue to some extend, but just visually more noticeable with vector tiles due to its heavy feature elimination at LOD generation.

The Sep 1 vector tile release will depend on this feature implementation.

Feature Requested:
Add a special path in the traversal logic to

  1. identify vector tiles through the 3DTILES_content_gltf_vector extension
  2. use unconditional refinement to resolve refinement traversal on empty tiles as planned with 3D Tiles 2.0 already

Problem description:
An example with a large, uneven vector data of global river as polylines. Notice that a couple tiles at the entering point of Yangzi river near Shanghai refuse to refine before suddenly jumping to a much deeper LOD.

Screencast.from.2026-08-04.17-30-09.mp4

This happen when there is a tile (of actual geometry content) with one of its children empty all the way until maybe >3 levels down, where the leave contains a bit of actual geometry that got simplified & discarded in tiling once moving to the coarser LOD. This should be somewhat an edge case for other meshes? Anyhow due to the extensive feature removal this structure is fairly common for large vector data, say for land features that have bits here and there on small islands. See the red arrow in the chart for a tree branch illustration.

Image

Related issue: #9356 (comment). A previous attempt #11843 to resolve, which made some assumptions about how far the empty tile chain will be in the tileset.

AI acknowledgment

  • I used AI to generate this feature request.
  • (If the above is checked) I have reviewed the AI-generated content before submitting.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions