Open lilleyse opened 8 years ago
I'll update with ideas for solving some of these, but to start region inside region should be pretty straightforward. Just need to check that the west/south/east/north/min/max are within the other's values
Please add functions to Cesium as needed.
@lilleyse Would you like me to add this functionality to the validateTileset.js
file along with the geometricError validation, or should I create a new one for all of the bounding volume validation?
Yes add it to the existing traversal in validateTileset
.
@rms13 let's finish the most important ones here, starting with Box inside box
.
For this it may help to reference Cesium's OrientedBoundingBox
class and look at how it's created from the box
array here: https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Cesium3DTile.js#L828.
I think the test itself will be decomposed to eight point vs OBB checks. The OBB is basically a 2x2x2 box that is rotated and scaled by the halfAxes
matrix. To do a point vs OBB check, you could apply the inverse of this matrix to the point and then check if it's in a 2x2x2 volume. (This may not be completely correct, but the right idea is somewhere in there).
@rms13
Let's tackle the region tests now.
While region is technically a curved surface along the earth, I think we can assume for most cases that it is close enough to a box shape. This will heavily simplify these 4 checks.
To convert a region to a box, check out TileBoundingRegion
in Cesium, specifically:
OrientedBoundingBox.fromRectangle(this.rectangle, this.minimumHeight, this.maximumHeight, ellipsoid);
Once converted to a box the previous written comparisons can be used.
For CesiumGS/3d-tiles-tools#9 @sumitshyamsukha
Let's do this one now:
There are three bounding volume types: region, box, and sphere. They are defined here: https://github.com/AnalyticalGraphicsInc/3d-tiles/blob/master/schema/boundingVolume.schema.json
If a tile has a content bounding volume, check that it is inside it's bounding volume. To visualize what a bounding volume / content bounding volume looks like, go to the 3D Tiles Sandcastle when running the 3d-tiles branch in Cesium and check out the
BV On/Off
andContents BV On/Off
buttons.We'll need support the following checks:
I'll update with ideas for solving some of these, but to start region inside region should be pretty straightforward. Just need to check that the west/south/east/north/min/max are within the other's values.