3d-tiles icon indicating copy to clipboard operation
3d-tiles copied to clipboard

Time-dynamic 3D Tiles

Open pjcozzi opened this issue 8 years ago • 13 comments

As alluded to in the intro:

Cesium is designed for time-dynamic visualizations, such as of satellites and UAVs. The next step is to extend this to 3D Tiles so users can, for example, see topography or snow cover change over time with massive time-dynamic terrain and point clouds.

The may work like streaming video per tile: a tile contains data for a set of tiles and can be prefetched like streaming video. So a tile really has a set of physical tiles each with a subset of the times.

pjcozzi avatar Jul 12 '16 01:07 pjcozzi

A clean approach could be to introduce a new TemporalComposite tile format similar to Composite that contains multiple time-tagged potentially heterogeneous tiles.

It could have pointers to past and future (in time) tiles - or - the tile in tileset.json could have a tree of time intervals that reference TemporalComposite tiles. Either way, the key is that multiple tile steps can be stored in one tile and past/future tiles can be prefetched. Different tiles in tileset.json can, of course, have different sets of time intervals.

For specific cases, e.g., points clouds, we can explore just storing the deltas, e.g., if per-point color remained constant over time, and just a delta position is needed for the next time step.

pjcozzi avatar Jul 15 '16 14:07 pjcozzi

Adding use case here per our conversation on the forum:

We have thousands of points with billboards (MILSYM) that are being updated on an irregular basis (think worldwide flight data). We are currently using the entity API to display and update these points and we are running into performance limits. Time dynamic tiles seem like a clean solution to matching desktop application performance levels. Let me know if there is anything else you want to know about our use case.

colek42 avatar Jul 27 '16 21:07 colek42

Thanks for the use case, @colek42.

pjcozzi avatar Jul 30 '16 00:07 pjcozzi

The lazy functional approach I described in my comments on #90 is also well-suited here, using something like a functional-reactive style. One component of the context passed to the callback could be a simulation-time value. When you regenerate the root occasionally in response to events (e.g. timesteps), the rest of the tree will still only need to be regenerated on an as-needed basis. I suspect this would be helpful to @colek42's performance problems if the majority of the billboards being updated aren't visible most of the time.

elfprince13 avatar Aug 19 '16 16:08 elfprince13

Perhaps HTTP Byte Serving will be useful.

pjcozzi avatar Nov 10 '17 23:11 pjcozzi

Byte serving could be an interesting case, where the hole tile contains all data and may be several mb large. Then maybe having a seperate index file or the first part of the file has the index.

Then the client could request the index part, and from there decide which range requests to do to get data for a specific time interval.

I think this is much like .mp4 container format, where some of the first bytes contain the length of the metadata and then the actual data coming after.

pksorensen avatar Dec 06 '17 15:12 pksorensen

@pksorensen agreed, also see Cloud optimized GeoTIFF.

pjcozzi avatar Dec 07 '17 01:12 pjcozzi

@pjcozzi , cool - i did not know there was a need for cloud optimized geotiffs. I been using geotiffs over http get ranges with current tooling of gdal and normal gtiffs without problems already.

But sounds like its a good direction.

Whats your take, since i asked here the other day https://groups.google.com/forum/#!topic/cesium-dev/JiTff4W5Gw4 and hoped it was already here. How is this priotized acording to other items, when would be a good time for me to plan my demo project if i want to wait for some time-dynamic 3d tiles. (I wont hunt you for giving me a wrong day, just to have an idea).

pksorensen avatar Dec 07 '17 08:12 pksorensen

Sorry I do not have any dates on this, but updates will be posted here.

pjcozzi avatar Dec 07 '17 11:12 pjcozzi

Hi, For the record, we (LIRIS Lab in Lyon, France) are working on extending 3D Tiles for managing spatio-temporal features (using the new extras and extensions mechanisms). We are currently finishing a paper on this subject and we will then provide examples in open access. I'll come back with more information whenever it's fully ready :)

jailln avatar Jul 12 '18 14:07 jailln

@jailln cool, looking forward to it!

pjcozzi avatar Jul 13 '18 13:07 pjcozzi

This CesiumJS PR adds a per-tile availability range: https://github.com/CesiumGS/cesium/pull/8488 - an approach to consider for 3D Tiles Next.

lilleyse avatar Jul 13 '20 12:07 lilleyse

Also see TileDB which which has support for sparse data and time dynamic data. CC https://github.com/CesiumGS/3d-tiles/issues/580#issuecomment-982627927.

lilleyse avatar Nov 30 '21 13:11 lilleyse