3D Tiles: the next big step for Cesium and 3D geospatial

Biao - it is going to be a bit before converters for this are in place. Check out the Q&A section of the spec.

Patrick

Folks - here’s another quick 3D Tiles update:

  • We continue to make good progress on glTF 1.0 Check out the spec-1.0 branch.
  • We started defining the Instanced 3D Model tile format (e.g., for trees) and the Composite tile format (e.g., for combining buildings and trees in the same tile). See #23.
    Patrick

Hi all,

Here’s an update on 3D Tiles progress:

  • The Composite tile format is done. This allows storing heterogeneous tiles in one tile.
  • The Instanced 3D Model format is done; however, there will be some changes to it before 1.0 to store each instance in a more optimized and flexible way. This tile format is for lots of “instances” of the small model, e.g., drawing the same tree at many different locations each with a different height.
    The Cesium implementation of these is almost through review, see #3158.

The next step is to get the 3d-tiles branch in better shape with tests and sample data since we are getting a lot of pull requests into it (thanks everyone!), we need to make it more production ready.

Patrick

If you love details, here is the cleanup we’re going to do to make the 3d-tiles branch more production ready: #3177.

Patrick

Hi Patrick, all.

Can you give some example of 3d-tile usage? I use very simple case with CanaryWharf tiles.json and its b3dm files, but tiles didn’t appear.

I use HelloWorld example from Cesium - upgraded with 3d-tiles

My structure of tileset is same as CanaryWharf tileset

b3dm files were loaded (i can see it in network tab of console), but buildings doesn’t appeared.

Can anyone give advice?
Thanks

Hi,

That code looks great. Are you sure the tiles.json has the correct bounding boxes and geometric error?

As part of #3177, we’re going to add some trivial test data (and tests), which you will be able to compare against.

Patrick

Patrick,

This is a very exciting feature!

Here it says that “AGI is also developing tools for creating 3D Tiles”: GitHub - CesiumGS/3d-tiles: Specification for streaming massive heterogeneous 3D geospatial datasets 🌎

Are there any tools available today to help creating 3D Tiles or are they still a work in progress?

Thanks!

AGI’s tools for 3D Tiles are still a work-in-progress as is the spec itself and the Cesium implementation, but things are moving along nicely. I believe a few other folks - at least - are also building tools for 3D Tiles. Search the forum or Google for more info.

Patrick

Dear 3d-tiles team!

I wonder whether it will be possible to store 3d models in a database (Postgres) and maybe stream directly from there, or else generate b3dm files from there?

In my opinion the best would be that the geometries are stored in a 3d spatial database, therefore I could perform spatial queries on a database level (e.g. “where are the buildings that are higher than 10 meters?”).

Postgres from 9.4 supports JSON and JSONB formats quite nicely, the tiles.json could surely be stored in a table. But what about the data itself?

I know it is a different approach that 3d-tiles uses (although I’m quite new to it and don’t think I understand it completely), just a question.

Best,

Gergely

Hi Gergely,

I imagine that is possible. tile.json is JSON, of course, and the tiles are just binary blobs. You could store or generate these however you see fit.

There will also be some declarative client-side filtering; for example, try the “color by height” option in the NYC demo:

http://cesiumjs.org/NewYork/

You will also be able to do things like “hide all the buildings built after some year”, etc., depending on the metadata available in the tile or through a REST service.

Patrick

Hi folks,

Here’s a quick update on 3D Tiles:

  • There’s now a detailed roadmap for the Cesium implementation being worked in the 3d-tiles branch.
  • Sean has made a lot of progress on the cleanup and tests, which includes some trivial datasets for testing. These changes also make the code in the 3d-tiles branch much closer to production so it will be easier for us to review and merge pull requests (thanks for all the support!).

Patrick

Quick question:

I noticed that the spec says, “the bounding volume for child tiles are completely inside the parent’s bounding volume.” Why? Isn’t it sufficient for the child content to be inside the parent’s bounding volume?

This is standard spatial coherence and the content bounding volume is optional (defaulting to the tile’s bounding volume) since its use case is additive refinement.

Is there a use case we should consider where a child tile’s bounding volume should not need to be completely instead the parent’s bounding volume?

Patrick

Well… yeah! Haven’t we long observed that tightly-fitting bounding volumes of child tiles don’t necessarily fit inside tightly-fitting bounding volumes of parent tiles?

The simple example is using bounding spheres for a quadtree with a single tile at the root (ignoring the fact that bounding spheres are probably not a great choice). The root tile’s bounding sphere wraps the whole Earth. The bounding spheres of the children are much smaller, but they “stick up” outside the parent sphere.

I guess this probably can’t happen with the bounding volumes currently used in 3D Tiles. Although, it’s safe to assume you’re turning those bbox-with-height-range volumes into OBBs on the client, and it might happen with the OBBs (I’m not sure).

In any case, if the intention is to support more bounding volumes in 3D Tiles, I guess I’d turn your question around: is there any use case where child BVs extending beyond parent BVs is a problem, as long as descendant content all fits inside the parent BV? Certainly hierarchical culling still works fine.

To be clear, I’m not talking about content bboxes (which I understand are optional). I’m talking about the content itself. The client will not try to verify this or anything, it’s just the rule that makes culling work right.

Ah, yes, you are right! I submitted #43 to tweak the spec wording. I think we are fine with saying that the child’s content is within the parent’s BV, and that a tile’s BV encloses its content, which does not imply that a parent’s BV fully encloses the child’s BV.

I don’t think the current more restricting language enables any additional client-side optimizations.

Patrick

Hi Guys,

Loving the progress with the tiles branch, and Cesium generally. =)

We have been working with the 3d tile branch from circa 1.12, and models compatible with that branch.

The time has come to get up to date and I wondered if anyone can clarify what has changed with regards to models…

Is it a case of “using the source, Luke” to understand these changes?

Is it b3dm files that have changed, or just tiles.json? Or all of the things! =)

I noticed elsewhere that some people were seeing the models load, but they were not being rendered now, and the issue was perhaps related to the “properties” section of tiles.json…

Is it that simple?

Thanks for any pointers…

Stephen

Hi Stephen,

Thanks for the kind words! What kind of app are you building with 3D Tiles?

Since circa 1.12, everything has changed.

Hi Patrick,

We’re working on the Cityzenith Smart Cities application.

Understood on all the changes.

We have a bunch of model sets. It’s a fairly big job each time we do it.

Regenerating or patching tiles.json files is potentially less stressful than rebuilding the model sets.

So I guess I am trying to pick a good time where changes to the spec would be expected to be more or less backwards compatible.

I am sure you’ve been asked this before, I know you can make no guarantees, and I am aware of the 2016 projected roadmap. =)

Should we stick with 1.12 for a while longer?

Kind regards,

Stephen

glTF is stable. b3dm is pretty stable, but I can’t promise that it won’t change, especially the batch table. Again, no promises, but the future tiles.json changes may be backwards compatible.

If it were me, I would just constantly stay up-to-date with the spec and the branch.

Patrick

Dear Partick!

I recently ran into 3DPS (3D Portrayal Service), which is an ongoing OGC specification regarding 3D (“map server for 3D”). I haven’t heard of it before, and if I get it right it is still in progress, but in the future an OGC-specification for 3D data streaming sounds really nice. Is 3d-tiles or AGI itself is part of this workgroup?

I think 3d-tiles is the most advanced solution for visualizing huge amounts of 3d data on the web, but when an OGC standard comes out, I have fears that maybe 3d-tiles maybe will lose its potential and will eventually fade.

Since I would like to dive into something that is maintainable even years after now, this is a big concern for me. Could you please give me some information about 3d-tiles in that (3DPS) matter?

Best,

Gergely

  1. december 18., péntek 15:57:41 UTC+1 időpontban Patrick Cozzi a következőt írta: