Skip to content

3d tile traversal fix - #13710

Open
mzschwartz5 wants to merge 7 commits into
mainfrom
3d-tile-traversal-fix
Open

3d tile traversal fix#13710
mzschwartz5 wants to merge 7 commits into
mainfrom
3d-tile-traversal-fix

Conversation

@mzschwartz5

@mzschwartz5 mzschwartz5 commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Description

See linked issue. tl;dr - this bug fixes a niche edge case in tile traversal that manifests most obviously in vector-data tilesets.

Issue number and link

#13686

Testing plan

Use the vector data sandcastle linked from the issue

Tileset + traversal specs (with WebGL stub): 15362 passed, 0 failed, 73 skipped.

Author checklist

  • I have submitted a Contributor License Agreement
  • I have added my name to CONTRIBUTORS.md
  • I have updated CHANGES.md with a short summary of my change
  • I have added or updated unit tests to ensure consistent code coverage
  • I have updated the inline documentation, and included code examples where relevant
  • I have performed a self-review of my code

AI acknowledgment

  • I used AI to generate content in this PR
  • If yes, I have reviewed the AI-generated content before submitting

If yes, I used the following Tools(s) and/or Service(s):
Claude

If yes, I used the following Model(s):

Opus 4.8

@github-actions

Copy link
Copy Markdown
Contributor

Thank you for the pull request, @mzschwartz5!

✅ We can confirm we have a CLA on file for you.

@mzschwartz5
mzschwartz5 force-pushed the 3d-tile-traversal-fix branch from a079a19 to 412aef6 Compare August 20, 2026 17:09
@mzschwartz5
mzschwartz5 marked this pull request as ready for review August 21, 2026 17:01
@mzschwartz5
mzschwartz5 requested a review from xuanhuang1 August 21, 2026 17:04
Comment on lines +250 to +256
// Vector tilesets opt into relaxed empty-tile refinement so empty regions reached
// through implicit or external placeholders do not block their content siblings.
// Note: it's likely we don't need to limit this behavior to vector tilesets. However,
// we are being cautious of breaking changes to existing tilesets.
const isVectorTileset = root.tileset.hasExtension(
"3DTILES_content_gltf_vector",
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'll want to confirm and likely extend this behavior to all 3D Tiles 2.0 tilesets, when we have them. Could you open a dedicated issue?

Comment on lines +274 to +277
// For vector tilesets only unloaded renderable content blocks refinement, so an empty
// tile at its resolved level of detail does not hold back its content siblings,
// including across implicit or external placeholders. All other tilesets keep the
// original behavior of blocking whenever traversal stops without content available.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIUC, this is "unconditional refinement" as described in https://github.com/CesiumGS/glTF/tree/3d-tiles-2.0/extensions/2.1/Vendor/3DTILES_tileset#unconditional-refinement. Maybe we should link to this directly for context.

@ggetz

ggetz commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

@xuanhuang1 Could you please confirm the behavior in this branch addresses your needs from #13686?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants