Code Monkey home page Code Monkey logo

Comments (8)

mpgerlek avatar mpgerlek commented on May 18, 2024

+1

from 3d-tiles.

pjcozzi avatar pjcozzi commented on May 18, 2024

Until we flush out the bounding volume, Cesium is deriving the bounding sphere from the bounding box: https://github.com/AnalyticalGraphicsInc/cesium/pull/3158/files#diff-e51181d6e2f4fd006b1404f2fe1f65a2R58

Not optimal, but only temporary.

from 3d-tiles.

pjcozzi avatar pjcozzi commented on May 18, 2024

I'm not ready to fully design this quite yet, but I am thinking we will replace tile.box and tile.content.box with something like tile.boundingVolume/tile.content.boundingVolume, which would be a dictionary object like:

boundingVolume : {
    sphere : //
    box : // a true box in Cartesian space
    region : // a "box" in Cartographic space, what "box" currently is
    ...
}

I think box would be an AABB in the tilesets coordinate system (which we would need to store in tiles.json) so, for example, cities with a principal bearing axis of 45 degrees or point clouds with arbitrary orientation can be subdivided optimally instead of just slicing longitude/latitude/height.

There may also be a need for box to be an OBB (or for separate AABB and OBB properties).

Perhaps the spec will allow multiple bounding volumes to be declared in boundingVolume so the client can pick the optimal one for the task, e.g., a k-DOP may be used for collision detection and a sphere may be used for culling.

Is allowing multiple bounding volumes overkill, e.g., the union of children bounding volumes is a better fit than a parent's bounding volume so it can be useful to test the parent, then children bounding volumes before rendering the parent. This can be done with the current tiles.json schema. Is something more general worth the complexity?

from 3d-tiles.

e-andersson avatar e-andersson commented on May 18, 2024

Is there anything I can do to help on this? I think we'd like to use a bounding sphere for the root tile in a global tileset scenario, so we can have a root covering the whole globe.

from 3d-tiles.

pjcozzi avatar pjcozzi commented on May 18, 2024

Yes, you are welcome to do all of it. ๐Ÿ‘

In Cesium, here are the types of interest:

I have also toyed with the idea that we only need AABB, not OBB, since the tileset should be able to define a local coordinate system, e.g., for point clouds or cities that are not subdivided on longitude/latitude boundaries, so the tiles would use an AABB in the tileset's coordinate system, which would be an OBB in WGS84. I dunno, it will need some implementation work to be sure.

To get started, perhaps you could just do the least amount needed to the spec and Cesium to add support for bounding spheres. Then we can see how to scale it to AABB/OBB (should be obvious).

What do you think?

from 3d-tiles.

e-andersson avatar e-andersson commented on May 18, 2024

That's generous ๐Ÿ˜„

Sounds good, I'll have a go at adding support for bounding spheres and then we'll see about the other types.

from 3d-tiles.

pjcozzi avatar pjcozzi commented on May 18, 2024

Awesome! Looking forward to you progress.

from 3d-tiles.

pjcozzi avatar pjcozzi commented on May 18, 2024

Spec updates: #51

from 3d-tiles.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.