CesiumGS / CesiumGS/3d-tiles-validator

Examine the effects of 'semantics' for the validation

Open
#261 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
474
Forks
156
PR merge metrics
No merged PRs in 30d

Description

**tl;dr**: The 'semantics' for metadata may cause certain tileset properties to be 'overridden'. It is not clear how this affects the validity of tilesets.

---

There is a set of predefined [semantics for metadata properties](https://github.com/CesiumGS/3d-tiles/tree/80cfa97f3c5dd7e1b7a830daae81f3ab866a29fd/specification/Metadata/Semantics). In some cases, these may just be a "name" for a certain type of additional information. In other cases, these semantics are supposed to essentially _override_ existing properties. For example, when a tile has a property with the `TILE_BOUNDING_BOX` semantic, then this overrides the `tile.boundingVolume.box`.

This raises some questions for the validation. The semantics are decoupled from the 3D Tiles specification itself. They are supposed to be defined and used by certain _applications_. Therefore, they can hardly be integrated into the validator _generically_.

For example, the specification says that the `tile.boundingVolume` must enclose all the contents. When the validator is supposed to check this, then it would determine the bounding volume of the contents, and check whether it is contained in the `tile.boundingVolume`. If this is not the case, an 'error' will be generated. But the tile may have a property with the `TILE_BOUNDING_BOX` semantic, and maybe this bounding volume **is** valid. It is not clear how this is supposed to be handled by the validator. The semantics do not _define_ the overridden property in a "machine-processable" sense, but only via a statement in their description. (And there is no limit in which meaning a third-party application _could_ assign to their third-party semantics...)

With some effort, a special treatment could be added manually, for the semantics that are currently known. But even there, the effect that this will have on the _validity_ of a tileset will have to be examined carefully. Referring to the example above: When there is an invalid `tile.boundingVolume`, then this is an 'error'. But when there is a `TILE_BOUNDING_BOX` semantic, then this 'error' might become a 'warning'. Completely omitting it would classify the tileset to be 'valid', but it wouldn't be valid according the the core specification - or for an _application_ that is not aware of the `TILE_BOUNDING_BOX` semantic...

Contributor guide

No contributing guide indexed for this repository

Research direction

Review the validator's existing tile bounding-volume checks and its handling of metadata semantics, then compare them with the linked semantics definitions and core specification. Define whether known or third-party semantics alter validation results and what the completed behavior should be; the issue names no implementation files or tests, so those must be located first.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
testing-qa
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.