You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hope everyone is doing well! My apologies that it's been a while since the conference where we initially proposed the idea - life and work got very busy 😅
We've worked on a tile selection algorithm, in our case for global terrain rendering, that solves for geometric error in the frustum rather than traversing tiles until an acceptable match is found. It's far faster when the tileset is very large (e.g. > 1 million tiles), we experienced the page hanging for a long time when trying to load through the existing traversal algorithm. We'd love to contribute that back to the community in the hopes it might help someone in a similar position.
This selection algorithm is slightly limited in that we have only tested it for 3d-tiles (but it may be possible to adapt to support I3S in the future), and it requires that the tileset must be an implicit tileset so that geometric error can be calculated for an arbitrary level of detail.
It is currently limited in a few additional ways, but these could be supported in the future:
The tileset must use the REFINE replacement strategy - it does not yet contain logic to select all parent tiles for an ADD strategy.
It expects a single subtree for which all tiles are available, and all have content - however as long as the subtree data was not too large, a step could be added to remove tiles from the selection which are not available or do not have content.
Before I raised a PR, I wanted to ask for opinions on some architectural questions:
How should this be activated? Should this be a prop set by the user when creating the Tileset3D instance, or should it automatically trigger if and only if the above conditions are met? My personal thought was a user-set prop with a runtime error if the tileset does not match the required constraints.
Internally how might this be structured? My personal thought was to subclass TilesetTraverser in modules/tiles/src/tileset and override executeTraversal to perform our alternate algorithm, but I was wondering if there was an alternative preference.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Hi,
Hope everyone is doing well! My apologies that it's been a while since the conference where we initially proposed the idea - life and work got very busy 😅
We've worked on a tile selection algorithm, in our case for global terrain rendering, that solves for geometric error in the frustum rather than traversing tiles until an acceptable match is found. It's far faster when the tileset is very large (e.g. > 1 million tiles), we experienced the page hanging for a long time when trying to load through the existing traversal algorithm. We'd love to contribute that back to the community in the hopes it might help someone in a similar position.
This selection algorithm is slightly limited in that we have only tested it for 3d-tiles (but it may be possible to adapt to support I3S in the future), and it requires that the tileset must be an implicit tileset so that geometric error can be calculated for an arbitrary level of detail.
It is currently limited in a few additional ways, but these could be supported in the future:
REFINE
replacement strategy - it does not yet contain logic to select all parent tiles for anADD
strategy.Before I raised a PR, I wanted to ask for opinions on some architectural questions:
Tileset3D
instance, or should it automatically trigger if and only if the above conditions are met? My personal thought was a user-set prop with a runtime error if the tileset does not match the required constraints.TilesetTraverser
inmodules/tiles/src/tileset
and overrideexecuteTraversal
to perform our alternate algorithm, but I was wondering if there was an alternative preference.Thanks,
Chris
Beta Was this translation helpful? Give feedback.
All reactions