Code Monkey home page Code Monkey logo

Comments (11)

pjcozzi avatar pjcozzi commented on May 18, 2024

Could also be useful for #90.

from 3d-tiles.

pjcozzi avatar pjcozzi commented on May 18, 2024

The tileset.json would have to specify the tile format - or each tile could say the formats of its children - and each tiling scheme may have some specific data like a bounding volume if it isn't global, e.g.,

{
  "asset": { /* ... */ },
  "tilingScheme": "quadtree",
  "format": "b3dm",
  "boundingVolume" : {
    "region": [ /* ... */ ]  // could default to global
  }
}
  • Geometric error would either be implicit or part of a new section of the tile's payload
  • The tile may also need a new section for children information like child contents' bounding volumes

from 3d-tiles.

pjcozzi avatar pjcozzi commented on May 18, 2024

This might have to get pushed post 1.0, but I would at least like to prototype beforehand since this is an important feature for global-scale datasets.

@austinEng perhaps you can help with this once you are ramped up.

from 3d-tiles.

pjcozzi avatar pjcozzi commented on May 18, 2024

This should probably be called implicit tiling scheme, not explicit tiling scheme. Renamed.

from 3d-tiles.

pjcozzi avatar pjcozzi commented on May 18, 2024

For point clouds, also see https://github.com/connormanning/ept

from 3d-tiles.

pjcozzi avatar pjcozzi commented on May 18, 2024

A few potential use cases / interoperability to consider

Implementation notes

  • See #92 (comment)
  • How much better can this make skip LODs, prefetch, etc?
  • How to efficiently handle sparse trees and avoid needless client requests for empty tiles. What can we learn from https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Core/CesiumTerrainProvider.js#L57?
  • Does this interop well with tilesets of tilesets?
  • What client-side projections to support other than geographic to Cartesian? Also for use beyond rendering use cases?
  • What metadata to store about tiles, e.g., tile format(s), used point cloud attributes, used vertex attributes, (including range for both?), etc. Note this is likely a useful object property for 3D Tiles even separate from implicit tiling.

from 3d-tiles.

OmarShehata avatar OmarShehata commented on May 18, 2024

Requested on the forum for figuring out which buildings are in a given area.

from 3d-tiles.

loshjawrence avatar loshjawrence commented on May 18, 2024

Some of the potential schema ideas coming out of the implicit tiling brainstorm/prototyping:
https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/implicit-tiling/extensions/3DTILES_implicit_tiling_scheme

layerNames string array that supplies prefixes (or postfixes) to the base uri for fetching those layers of data. One set of traversal calculations and one availability for a bunch of different layers of data that pertain to the same context.
Use this mechanism to encode a bunch of layers of metadata(ex: per point) as basis textures (ktx2 payloads). Mip down to 1x1 for ave, min, max
Use this mechanism for time-dynamic (layer name is timestamp) or is something more explicit needed?

from 3d-tiles.

pjcozzi avatar pjcozzi commented on May 18, 2024

Draft spec: #386

from 3d-tiles.

kring avatar kring commented on May 18, 2024

An idea I really like:

Implicit tiling in 3D Tiles should:

  1. allow new implicit tiling schemes to be defined, and
  2. not require that clients actually understand the implicit tiling scheme in order to work.

This might sound impossible, but it's surprisingly easy to achieve with a small tweak. Rather than expressing implicit tiling as a special section in the tileset.json with a bunch of parameters that clients need to understand, instead allow the BVH to be loaded from an arbitrary external URI referenced in the tileset.json. Then, provide some standard external URLs can be used to express standard tiling schemes.

So, a tileset.json might look like this:

{
    "asset": {
        "version": "1.0"
    },
    "geometricError": 563.8721715009725,
    "root": {
        "uri": "https://cesium.com/3dtiles/tilingschemes/quadtree?bbox=-180,-90,180,90&root=2,1&levels=12"
    }
}

So now a client that understands the quadtree implicit tiling scheme just notes the URI and knows what do; no need to actually request it. While a client that doesn't understand that particular implicit tiling scheme simply has to request the full 3D Tiles BVH available at that URI. By requesting and caching unfamiliar tiling schemes, clients can "learn" new implicit tiling schemes.

Obviously lots of details to work out, particularly around the standard URIs. But I think this provides a really nice progressive enhancement approach. There's almost zero new mandatory spec for clients to deal with, but it still enables optimization - in an extensible way - by sophisticated clients.

from 3d-tiles.

lilleyse avatar lilleyse commented on May 18, 2024

Implicit tiling is now an extension: https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling.

Will open a new issue for #92 (comment)

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.