Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implicit tile not refining correctly #11564

Closed
ptrgags opened this issue Oct 10, 2023 · 2 comments
Closed

Implicit tile not refining correctly #11564

ptrgags opened this issue Oct 10, 2023 · 2 comments

Comments

@ptrgags
Copy link
Contributor

ptrgags commented Oct 10, 2023

My team was working with a 3D Tiles 1.1 tileset with implicit tiling. Nothing particularly unusual about this one, it's an octree with a box bounding volume. The GE value at the root tile seems reasonable for most of the tileset except this one.

Unfortunately I can't share the data for this one, only a couple select screenshots to show the issue:

When I zoom in on this building, it's still blurry and the tile is huge. However, if you look to the right side, the neighbor tile (same size as this one) has refined once or twice.
image

Furthermore, if I fly to another side of the building and zoom in very close, it does finally refine, but zooming in further it goes back to blurry again:

Blurry Better! Blurry again??
image image image

Also note that this does not happen in Cesium for Unreal, the tile refines just fine
image

This effect seems to be sensitive to camera angle, the problem shows up more/less depending on which direction the camera is facing.

As for things to look into:

@ptrgags
Copy link
Contributor Author

ptrgags commented Nov 1, 2023

I'm starting to look into this. I started by looking at the tiles that are loaded.

image

Observations:

  • The first tile with the problem is (level; x, y, z) = (1; 0, 0, 0) which fortunately is easy to remember
  • in terms of the tile.children array, there are 6 available children out of 8. With +x to the right, +y into the screen, +z up, we have the bottom layer available (2; x, y, 0) plus two from the top layer (the two closest to the camera, (2; 0, 0, 1) and (2; 1, 0, 1)).
  • However, only 5 out of the 6 children are loaded! The missing one is (2; 1, 0, 1).
  • Strangely, only the bounding volume for the missing child appears!
  • Also it looks like (2; 1, 0, 1) has no content nor should any of its descendants (at least from a quick visual inspection
  • I just noticed that when I zoom in on the building with the issue, there's a tiiiiiny triangle in floating above the lightning rod just barely in the new tile, (5; 14, 7, 8)
    image
  • oh wait, found a better view, there's supposed to be a tile underneath it, (5; 14, 7, 7) but doesn't always show up
    image

Things to check:

  • Double check which content files I have on disk to see if the above makes sense
  • Inspect the availability bitstream and see if anything is incorrect (it's still possible that this is a data problem)
  • Determine why tile (2; 1, 0, 1) is loaded but seems to have no content or descendants.
  • Look through the refinement logic in CesiumJS to see if I'm hitting a corner case. it might have to do with the fact that 5/6 children are loaded (at least nominally, that seems incorrect as it is)

@ptrgags
Copy link
Contributor Author

ptrgags commented Nov 2, 2023

I had a chat today with @lilleyse, we determined that this is a known issue, #9356 and confirmed that the fix described here fixes this tileset, is more spec-compliant, and is more consistent with Cesium Native.

I'm closing this issue in favor of #9356, I'll start putting together a PR for it.

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

No branches or pull requests

1 participant