-
Notifications
You must be signed in to change notification settings - Fork 473
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Refinement based on proximity #101
Comments
@lilleyse this will require some experimentation to flush out. This adds Here's a potential example where the root tile could be a city; the child is a building's interior tile; and the grandchild is an external tileset for a point cloud for an object in the building. For kicks I also added a transform to the children (#98) since the building's interior and point cloud would likely be in their own coordinate systems. {
"asset" : {
// ...
},
"geometricError": 200, // Error when no buildings are rendered
"root": {
"boundingVolume": { /* ... */ },
"geometricError": 20, // Error because building interior is not rendered
"refine": "replace",
"content": {
"url": "0.b3dm" // Exteriors for entire city
},
"children": [{
"transform": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7000000, 0, 0, 1], // transform to WGS84
"boundingVolume": { /* ... */ },
"geometricError": 2, // Error because point cloud is not rendered
"viewerRequestVolume": { /* ... */ },
"content": {
"url": "1.b3dm" // inside of building
},
"children": [{
"transform": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2, 0, 0, 1], // transform to Building's coordinate system
"boundingVolume": { /* ... */ },
"geometricError": 2, // Error because point cloud is not rendered, forces external tileset load
"viewerRequestVolume" : { /* ... */ },
"content": {
"url": "points-tileset.json" // New tileset with point cloud
}
}]
}]
}
} Here's another example where the root tile (a city) has two (grand-)children (each building interiors) in their own tilesets (using additive refinement so, for example, the city is visible outside of the window). {
"asset" : {
// ...
},
"geometricError": 200, // Error when no buildings are rendered
"root": {
"boundingVolume": { /* ... */ },
"geometricError": 20, // Error because biggest building interior is not rendered
"refine": "add",
"content": {
"url": "0.b3dm" // Exteriors for entire city
},
"children": [{
"transform": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7000000, 0, 0, 1], // transform this building to WGS84
"boundingVolume": { /* ... */ }
"geometricError": 20, // Error because biggest building interior is not rendered, forces external tileset load
"viewerRequestVolume": { /* ... */ },
"content": {
"url": "big-building-interior-tileset.json"
}
}, {
"transform": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6000000, 0, 0, 1], // transform this other building to WGS84
"boundingVolume": { /* ... */ },
"geometricError": 10, // Error because smaller building interior is not rendered, forces external tileset load
"viewerRequestVolume": { /* ... */ },
"content": {
"url": "small-building-interior-tileset.json"
}
}]
}
} Discussion
|
Cesium implementation is in CesiumGS/cesium#4138 |
Instead of relying just on SSE to refine a tile, this would allow, for example, when the viewer enters a bounding volume that the tile gets refined.
A use case is to tile a city with a kd-tree, then when the viewer enters (or comes close to) a building, the building is loaded with an octree, grid, portals, etc.
We might also want to be able to explicitly disable the rest of the scene when inside a building.
CC #15
The text was updated successfully, but these errors were encountered: