-
Notifications
You must be signed in to change notification settings - Fork 471
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarifications and additions for the specification #711
Comments
Most of the points mentioned above have been addressed in #726 (comment). Points that have been moved into dedicated issues or remain open for discussion are listed here: Issues that rather affect the validator, and not so much the specification:
Open issues from the list above:
A new question that could be considered for the specification:
|
|
The points here should all have been addressed with the finalization of 3D Tiles 1.1. If there's anything left, it can be tracked in a dedicated issue. |
Possible constraints and clarifications to add to the schema and specification:
For
boundingVolume
:latitude
andlongitude
for theregion
bounding volume should be constrained to the ranges that are mentioned in https://spatialreference.org/ref/epsg/4979/ (-180.0000, -90.0000, 180.0000, 90.0000)south
may not be greater than thenorth
radius
of the bounding sphere should not be negativeFor
properties
(although deprecated?)maximum
should not be smaller than theminimum
For
statistics
:classes
should be requiredclasses
dictionary and..." - this is confusing. It should say "... in theclasses
dictionary of the metadata schema of the containing tileset, and ..."statistics.class.properties
description should refer to the class of the metadata schemaFor
statistics.class.property
:!(min>max)
) here. But one could go pretty far, e.g.!(mean>min)
, and even make mathematically based constraints about the possible values of the standard deviation and such. Maybe this is a step too far for now (there are more important constraints/checks to be added)For
class.property
:enumType
should be disallowed for non-"ENUM"
typescomponentType
should be required for the SCALAR/VECn/MATn types.min
/max
to be integer values when the component type is integral, and require the bounds of the values to be obeyed. For aUINT8
(withoutoffset
orscale
), amax=0.8
does not make sense, and neither does amin=-10000
.min/max/offset/scale
do not make sense for variable length arrays. This is mentioned at https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/Metadata#minimum-and-maximum-values but could also be mentioned in the schemaFor
templateUri
{level}
,{x}
,{y}
,{z}
MUST be present for the respective tree types. For now, I assume that any{unknown}
expression is an error, and "missing" ones (e.g. a missing{z}
for anOCTREE
) should cause a warning.For
subtree
For
availability
availableCount
may not be larger thanbufferView.byteLength/8
(?)tile.content
now, and does not mentiontile.contents
)0
For
tile
:transform
. From "weak" to strict: It should probably not be zero. It should probably be invertible. It should probably have a positive determinant. It should probably not contain skew/shear components. It should probably be decomposable into translation, rotation, scale components. See https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#transformations for inspiration.content
/contents
MUST be present are difficult. One could say that one of them MUST be present whenimplicitTiling
is present, but ... strictly speaking, only when there is anycontentAvailability[i]=true
.For
schema
schema.id
is marked as 'required' and must match the usual "ID regex". The ID may eventually be used (e.g. by CesiumJS) to uniquely identify properties in Custom Shaders, or to identify that theschema
objects of two loaded tilesets are the same schema. But the spec should (at least as an 'Implementation Node') describe the purpose, and give usage hints - for example, whether it should only be a semi-random "unique ID", or a human-readable string, or maybe something that includes a concept of "versioning".For
tileset
:extensionsRequired
must also appear inextensionsUsed
Structural:
geometricError
that is larger than thegeometricError
of the parent, but overrides this geometric error with metdata so that it is smaller than that of the parent, should this cause a validation issue?For
subtree
The specification should mention that for binary subtrees, only onebuffer
may omit theuri
property (only one buffer may refer to the binary chunk)Regarding
extensionsUsed
:The spec says at https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification#extensions-1
This should be reviewed and possibly clarified. If one tileset refers to an external tileset that does not use any extensions, but is later modified to use a certain extension, then the containing tileset may become "invalid", because it does not declare this extension as
extensionsUsed
. While this makes sense from the perspective of knowing which extensions will be used as a whole, it somewhat contradicts the idea of external tilesets being "building blocks" that can be combined arbitrarily.The text was updated successfully, but these errors were encountered: