Comments (11)
Could also be useful for #90.
from 3d-tiles.
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.
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.
This should probably be called implicit tiling scheme, not explicit tiling scheme. Renamed.
from 3d-tiles.
For point clouds, also see https://github.com/connormanning/ept
from 3d-tiles.
A few potential use cases / interoperability to consider
- quadtree for global or local terrain or vector data. Dual-quadtree for Cesium's current quantized-mesh terrain. How valuable is the dual tree given it is atypical?
- Also for 3D buildings from OSM and trees from OTM
- octree for interior CAD/BIM, exterior CAD/BIM, point clouds, photogrammetry, 3D buildings, etc. Local with Cartesian AABB/OBBs and global with geographic regions
- interop well with Mapbox Vector Tiles, https://github.com/mapbox/vector-tile-spec
- Interop well with GeoPackage, #89 (comment)
- Interop well with CDB, https://www.opengeospatial.org/standards/cdb
- Interop well with Uber H3 Hexagon index? https://eng.uber.com/h3/
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.
Requested on the forum for figuring out which buildings are in a given area.
from 3d-tiles.
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.
Draft spec: #386
from 3d-tiles.
An idea I really like:
Implicit tiling in 3D Tiles should:
- allow new implicit tiling schemes to be defined, and
- 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.
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)
- Clarify the use of non-8-bit-channels in property textures HOT 1
- How to format data HOT 1
- glTF metadata uses integers where it should use "glTF IDs" HOT 1
- Inconsistency in tile schema and its description
- Cesium 1.1 tiling data failed to load
- Clarify details about `featureCount` and `nullFeatureId` HOT 4
- Can Earth Explorer 3D Map with Augmented reality be added as Viewer?
- Can Map Data Explorer iOS and Android be added as Viewer - it supports 3DTILES
- Selection Issue with GLB Model Organized by Tileset.json HOT 2
- Basic, minimal examples; sources for README figures HOT 10
- EXT_mesh_features Clarification: How many feature ids does an indexed geometry have when ids are implicitly derived? HOT 7
- EXT_mesh_features Rendering: How to visualize "interpolated" features? HOT 8
- 3D-Tiles 1.1 Implicit tile about .subtree binary file HOT 6
- Implementation notes refer to `bufferView` where `bitstream` should be used
- 3D-Tiles 1.1 implicit tile : Octree HOT 2
- 3D-Tiles 1.1 voxel HOT 1
- Clarification for content availability of implicit tileset roots HOT 4
- 3D-Tiles 1.1 voxel HOT 3
- 3D-Tiles 1.1 voxel's customShader HOT 1
- 3D-Tiles 1.1 binary .voxel file HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from 3d-tiles.