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

About Tiles3DLoader loading 3d tiles will flicker #2570

Open
vanness30214 opened this issue Jul 28, 2023 · 8 comments
Open

About Tiles3DLoader loading 3d tiles will flicker #2570

vanness30214 opened this issue Jul 28, 2023 · 8 comments

Comments

@vanness30214
Copy link

Here is a demo
https://github.com/vanness30214/map-demo

question:

  1. After loading the model, when zooming, the "REPLACE" will disappear or flicker. Slices keep flickering; this visual experience is not friendly
  2. Regarding "skipLevelOfDetail", whether to optimize this strategy in the future; this will achieve faster loading;
  3. When moving left and right, the tiles will disappear and hide, and then reloaded; how can it be achieved without disappearing, slowly loading from the rough model to the high model of the corresponding level; directly disappear and hide this experience not friendly

These are the issues I found, thanks a lot

@vanness30214
Copy link
Author

f8hkg-c8ekx.mp4

This video will help you to see the problem more visually

@ibgreen
Copy link
Collaborator

ibgreen commented Jul 28, 2023

Thanks for reporting. that particular tileset does seem to exhibit the problem in a very pronounced way.

Assuming the tileset is well formed (I would guess that something in the tileset is exacerbating the issue), this would indicate problems in the tileset traversal algorithm (the algorithm that selects which tiles to show based on the viewport).

Unfortunately, loaders.gl currently does not have any active maintainers of the traversal algorithms for 3D tiles. We are always looking for contributors, however the funding and focus in loaders.gl for the last few years has been on I3S rather than 3D tiles.

@vanness30214
Copy link
Author

Through understanding, it seems to be related to the logic of tiles' isVisible '

@ibgreen
Copy link
Collaborator

ibgreen commented Aug 3, 2023

@vanness30214 Thanks for investigating! If you can provide additional info it would be highly appreciated.

@vanness30214
Copy link
Author

I don't know if my viewpoint is correct or not;

It seems to be related to the rendering scheduling order of tiles;

According to my personal understanding, the tiles with the lowest LOD level at the beginning of the rendering serve as the bottom layer for bottoming out; Then render deeper level tiles;

Based on source code:tiles-tile-3d.ts - updateVisibility function

this._visibilityPlaneMask = this.visibility(frameState, parentVisibilityPlaneMask); this._visible = this._visibilityPlaneMask !== CullingVolume.MASK_OUTSIDE;

It is related to the "_visible" logic display of this code

Then I consulted some other friends about the solution to this problem, and they proposed

"Template testing solution, first dye the sub template values, and render the parent based on the sub template values"

Solution for

@vanness30214
Copy link
Author

I don't know if my explanation will be helpful to the team, as I am also a beginner and don't have much ability to make changes. I have implemented too many functions and can only request the team's help; thanks

@vanness30214
Copy link
Author

visgl/deck.gl#5832

This question has been asked before by an issue.

@vanness30214
Copy link
Author

@ibgreen

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

No branches or pull requests

2 participants