Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
52e466c
Feature metadata draft
lilleyse Feb 19, 2021
02f08ab
New draft for version 1.0.0
lilleyse Feb 21, 2021
aa4e1dd
Add examples section
lilleyse Feb 22, 2021
30df478
Updates from review
lilleyse Feb 22, 2021
a68f643
Fix min/max schema
lilleyse Feb 22, 2021
26ff97c
Peer review edits
lilleyse Feb 22, 2021
405137c
Resolve TODOs
lilleyse Feb 23, 2021
e6f3c2a
Wording
lilleyse Feb 23, 2021
973865e
Insert Wetzel output
ptrgags Feb 23, 2021
8885cd0
Wetzel output revisions
lilleyse Feb 23, 2021
4f0ab88
Add last figure
lilleyse Feb 24, 2021
d7f3339
Addressed review feedback
lilleyse Feb 24, 2021
3c981cc
Fix schema TOC indentation
lilleyse Feb 24, 2021
a71267e
Don't make class required in case the model does not have metadata
lilleyse Feb 24, 2021
75397a9
Schema wording tweaks
lilleyse Feb 24, 2021
35eb9bf
Change bufferView type back to integer
lilleyse Feb 24, 2021
8fcb230
Update extensions/2.0/Vendor/EXT_feature_metadata/1.0.0/schema/featur…
lilleyse Feb 24, 2021
d22a9d1
Update links to Cesium 3D Metadata spec
lilleyse Feb 24, 2021
e2a54d9
Update date
lilleyse Feb 24, 2021
ceaefcf
Minor updates
lilleyse Feb 24, 2021
97b5ac6
Update links to EXT_mesh_gpu_instancing
lilleyse Feb 24, 2021
6ff6344
Reorder classes/enums
lilleyse Feb 25, 2021
39b824e
Wording
lilleyse Feb 25, 2021
3a907d0
Tweaks
lilleyse Feb 25, 2021
972f7dc
Update README.md
lilleyse Apr 27, 2021
1675ae2
Clarify enum binary properties
lilleyse Jun 21, 2021
91ae3fa
Fix year
lilleyse Jul 31, 2021
3bf5af9
Change number to integer in JSON schema
lilleyse Aug 25, 2021
eca3730
Remove landing page
lilleyse Aug 30, 2021
e646fa2
Add revision history section
lilleyse Aug 30, 2021
222071f
Remove version number and links to versions
lilleyse Aug 30, 2021
c5e7761
Don't use non-standard not.required mechanism.
kring May 5, 2021
f626a49
Specify item type of statistic arrays.
kring May 5, 2021
060a834
Add item types to class properties schema.
kring May 5, 2021
d0930a2
Avoid duplicate title.
kring May 14, 2021
f14b5e0
Merge pull request #10 from CesiumGS/metadata-schema-cleanup
lilleyse Aug 30, 2021
2996cb7
Fix links to 3D Tiles Next extensions
lilleyse Aug 31, 2021
f826abe
Describe binary data storage, remove prefix from FEATURE_ID_#, and de…
donmccurdy Sep 3, 2021
8ae6401
Update other occurences of FEATURE_ID_# and binary data storage.
donmccurdy Sep 3, 2021
9c6cf46
Update extensions/2.0/Vendor/EXT_feature_metadata/README.md
donmccurdy Sep 7, 2021
b716e08
Clean up TODOs.
donmccurdy Sep 7, 2021
d2f0f47
Merge pull request #11 from donmccurdy/review-EXT_feature_metadata
ptrgags Sep 7, 2021
0bed33e
Remove markdown generated from JSON schema. Flatten nested extensions.
donmccurdy Sep 7, 2021
8574c05
Clean up.
donmccurdy Sep 8, 2021
6cb8294
EXT_feature_metadata: Remove statistics, rename constant->offset and …
donmccurdy Sep 8, 2021
62aa86b
EXT_feature_metadata: Clarify scope and examples.
donmccurdy Sep 9, 2021
24be518
Minor grammar tweak
ptrgags Sep 9, 2021
74e3eab
Merge pull request #13 from donmccurdy/ext-feature-metadata-v2.0
ptrgags Sep 9, 2021
375f365
Merge pull request #12 from donmccurdy/ext-feature-metadata-wetzel-up…
ptrgags Sep 9, 2021
ae6bb27
EXT_feature_metadata: Simplify feature texture definition.
donmccurdy Sep 8, 2021
d9b885b
EXT_feature_metadata: featureIds refactor
donmccurdy Sep 13, 2021
26cc187
EXT_feature_metadata: Updates for primitive extension schema.
donmccurdy Sep 14, 2021
e2168e4
typo fix
donmccurdy Sep 14, 2021
1295794
EXT_feature_metadata: Add 'featureTables' to node extension.
donmccurdy Sep 14, 2021
ee07bc4
EXT_feature_metadata: Fix typo in feature texture example.
donmccurdy Sep 14, 2021
7613375
EXT_feature_metadata: Clarify channel index numbering and required pr…
donmccurdy Sep 14, 2021
8693fbc
EXT_feature_metadata: Use disjoint enums for 'type' and 'componentType'.
donmccurdy Sep 14, 2021
903c85d
EXT_feature_metadata: Clarify VECN and MATN dimensions.
donmccurdy Sep 15, 2021
061cd61
Merge pull request #15 from donmccurdy/ext-feature-metadata-v2.2
ptrgags Sep 16, 2021
02d1ca5
Merge pull request #14 from donmccurdy/ext-feature-metadata-v2.1
ptrgags Sep 20, 2021
602985d
EXT_feature_metadata: Add 'noData' property.
donmccurdy Sep 15, 2021
36b9f4a
EXT_feature_metadata: Allow feature IDs outside [0, count - 1] as no-…
donmccurdy Sep 15, 2021
55d327c
EXT_feature_metadata: Disallow NaN, +Inf, -Inf.
donmccurdy Sep 15, 2021
b5a3262
EXT_feature_metadata: Clarify ENUM noData values.
donmccurdy Sep 15, 2021
e2a3f58
EXT_feature_metadata: Apply wording feedback.
donmccurdy Sep 16, 2021
7833833
EXT_feature_metadata: Clarify 'noData' length requirements.
donmccurdy Sep 16, 2021
b366af7
EXT_feature_metadata: Add 'required' boolean.
donmccurdy Sep 20, 2021
d6da3e9
EXT_feature_metadata: Wording & clarity in class.property schema file.
donmccurdy Sep 20, 2021
b3ac63c
Merge pull request #16 from donmccurdy/ext-feature-metadata-v2.3
ptrgags Sep 20, 2021
3b49b24
EXT_feature_metadata: featureTables/featureTextures --> propertyTable…
donmccurdy Sep 20, 2021
fb17e9b
EXT_feature_metadata: Remove unneeded disambiguation.
donmccurdy Sep 22, 2021
36ceb70
Merge pull request #17 from donmccurdy/ext-feature-metadata-v2.4
ptrgags Sep 23, 2021
a648ac8
Rename EXT_feature_metadata → EXT_mesh_features
donmccurdy Sep 24, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
443 changes: 443 additions & 0 deletions extensions/2.0/Vendor/EXT_mesh_features/README.md

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Class property",
"type": "object",
"description": "A class property.",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "The name of the property, e.g. for display purposes."
},
"description": {
"type": "string",
"minLength": 1,
"description": "The description of the property."
},
"type": {
"type": "string",
"enum": [
"SINGLE",
"VEC2",
"VEC3",
"VEC4",
"MAT2",
"MAT3",
"MAT4",
"ARRAY"
],
"default": "SINGLE",
"description": "Element type represented by each property value. `VECN` is a vector with `N` components. `MATN` is an `N ⨉ N` matrix. `ARRAY` is fixed-length when `componentCount` is defined, and is variable-length otherwise."
},
"enumType": {
"type": "string",
"description": "Enum ID as declared in the `enums` dictionary. Required when `componentType` is `ENUM`."
},
"componentType": {
"enum": [
"INT8",
"UINT8",
"INT16",
"UINT16",
"INT32",
"UINT32",
"INT64",
"UINT64",
"FLOAT32",
"FLOAT64",
"BOOLEAN",
"STRING",
"ENUM"
],
"description": "Data type of an element's components. When `type` is `SINGLE`, then `componentType` is also the data type of the element. When `componentType` is `ENUM`, `enumType` is required."
},
"componentCount": {
"type": "integer",
"minimum": 2,
"description": "Number of components per element for fixed-length `ARRAY` elements. Always undefined for variable-length `ARRAY` and all other element types."
},
"normalized": {
"type": "boolean",
"description": "Specifies whether integer values are normalized. This applies both when `type` is an integer type, or when `type` is `ARRAY` with a `componentType` that is an integer type. For unsigned integer types, values are normalized between `[0.0, 1.0]`. For signed integer types, values are normalized between `[-1.0, 1.0]`. For all other types, this property is ignored.",
"default": false
},
"max": {
"oneOf": [
{"type": "number"},
{"type": "array", "items": {"type": "number"}, "minItems": 1}
],
"description": "Maximum allowed value for the property. Only applicable for single-value numeric types, fixed-length arrays of numeric types, and `VECN` types. For single-value numeric types this is a single number. For fixed-length arrays and `VECN`, the maximum is an array with the same number of elements. The `normalized` property has no effect on the maximum, which always contains integer values."
},
"min": {
"oneOf": [
{"type": "number"},
{"type": "array", "items": {"type": "number"}, "minItems": 1}
],
"description": "Minimum allowed value for the property. Only applicable for single-value numeric types, fixed-length arrays of numeric types, and `VECN` types. For single-value numeric types this is a single number. For fixed-length arrays and `VECN`, the minimum is an array with the same number of elements. The `normalized` property has no effect on the minimum, which always contains integer values."
},
"required": {
"type": "boolean",
"description": "If required, the property must be present for every feature of its class. If not required, individual features may include `noData` values, or the entire property may be omitted from a property table or texture. As a result, `noData` has no effect on a required property. Client implementations may use required properties to make performance optimizations.",
"default": false
},
"noData": {
"oneOf": [
{"type": "number"},
{"type": "string"},
{"type": "array", "items": {"type": "number"}, "minItems": 1},
{"type": "array", "items": {"type": "string"}, "minItems": 1}
],
"description": "A `noData` value represents missing data — also known as a sentinel value — wherever it appears. If omitted (excluding variable-length `ARRAY` properties), property values exist for all features, and the property is required in property tables or textures instantiating the class. For variable-length `ARRAY` elements, `noData` is implicitly `[]` and the property is never required; an additional `noData` array, such as `[\"UNSPECIFIED\"]`, may be provided if necessary. For fixed-length `ARRAY` properties, `noData` must be an array of length `componentCount`. For `VECN` properties, `noData` must be an array of length `N`. For `MATN` propperties, `noData` must be an array of length `N²`. `BOOLEAN` properties may not specify `noData` values. `ENUM` `noData` values must be a valid item name, not an integer value."
},
"semantic": {
"type": "string",
"minLength": 1,
"description": "An identifier that describes how this property should be interpreted. The semantic cannot be used by other properties in the class."
},
"extensions": {},
"extras": {}
},
"dependencies": {
"componentCount": [
"type"
]
},
"required": [
"componentType"
]
}
28 changes: 28 additions & 0 deletions extensions/2.0/Vendor/EXT_mesh_features/schema/class.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Class",
"type": "object",
"description": "A class containing a set of properties.",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "The name of the class, e.g. for display purposes."
},
"description": {
"type": "string",
"minLength": 1,
"description": "The description of the class."
},
"properties": {
"type": "object",
"description": "A dictionary, where each key is a property ID and each value is an object defining the property.",
"minProperties": 1,
"additionalProperties": {
"$ref": "class.property.schema.json"
}
},
"extensions": {},
"extras": {}
}
}
46 changes: 46 additions & 0 deletions extensions/2.0/Vendor/EXT_mesh_features/schema/enum.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Enum",
"type": "object",
"description": "An object defining the values of an enum.",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "The name of the enum, e.g. for display purposes."
},
"description": {
"type": "string",
"minLength": 1,
"description": "The description of the enum."
},
"valueType": {
"type": "string",
"default": "UINT16",
"enum": [
"INT8",
"UINT8",
"INT16",
"UINT16",
"INT32",
"UINT32",
"INT64",
"UINT64"
],
"description": "The type of the integer enum value."
},
"values": {
"type": "array",
"description": "An array of enum values. Duplicate names or duplicate integer values are not allowed.",
"items": {
"$ref": "enum.value.schema.json"
},
"minItems": 1
},
"extensions": {},
"extras": {}
},
"required": [
"values"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Enum value",
"type": "object",
"description": "An enum value.",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "The name of the enum value."
},
"description": {
"type": "string",
"minLength": 1,
"description": "The description of the enum value."
},
"value": {
"type": "integer",
"description": "The integer enum value."
},
"extensions": {},
"extras": {}
},
"required": [
"name",
"value"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Feature IDs",
"type": "object",
"description": "Feature IDs to be used as indices to property arrays in the property table.",
"properties": {
"attribute": {
"type": "string",
"pattern": "^FEATURE_ID_([1-9]\\d*|0)$",
"description": "The name of the attribute containing feature IDs."
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Initial value for an implicit feature ID range."
},
"repeat": {
"type": "integer",
"minimum": 1,
"description": "Number of vertices for which to repeat each feature ID before incrementing the ID by 1. If `repeat` is undefined, the feature ID for all vertices is `offset`."
},
"extensions": {},
"extras": {}
},
"not": {
"anyOf": [
{
"required": [
"attribute",
"offset"
]
},
{
"required": [
"attribute",
"repeat"
]
}
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Feature ID Texture",
"type": "object",
"allOf": [ { "$ref": "textureInfo.schema.json" } ],
"description": "An object describing a texture used for storing per-texel feature IDs.",
"properties": {
"index": { },
"texCoord": { },
"propertyTable": {
"type": "string",
"description": "The ID of the property table in the model's root `EXT_mesh_features.propertyTables` dictionary."
},
"channel": {
"type": "integer",
"minimum": 0,
"description": "Single channel index storing per-texel feature IDs."
},
"extensions": {},
"extras": {}
},
"required": [
"propertyTable",
"channel"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"title": "EXT_mesh_features glTF extension",
"type": "object",
"description": "glTF extension that assigns metadata to features in a model.",
"properties": {
"schema": {
"allOf": [ { "$ref": "schema.schema.json" } ],
"description": "An object defining classes and enums."
},
"schemaUri": {
"type": "string",
"description": "A uri to an external schema file.",
"format": "uriref"
},
"propertyTables": {
"type": "object",
"description": "A dictionary, where each key is a property table ID and each value is an object defining the property table.",
"minProperties": 1,
"additionalProperties": {
"$ref": "propertyTable.schema.json"
}
},
"propertyTextures": {
"type": "object",
"description": "A dictionary, where each key is a property texture ID and each value is an object defining the property texture.",
"minProperties": 1,
"additionalProperties": {
"$ref": "propertyTexture.schema.json"
}
},
"extensions": {},
"extras": {}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"title": "EXT_mesh_features extension for EXT_mesh_gpu_instancing",
"type": "object",
"description": "An object describing per-instance feature IDs to be used as indices to property arrays in the property table.",
"properties": {
"featureIds": {
"type": "array",
"description": "",
"items": {"$ref": "featureIdAttribute.schema.json"},
"minItems": 1
},
"propertyTables": {
"type": "array",
"description": "An array of IDs of property tables from the root `EXT_mesh_features` object.",
"items": {
"allOf": [ {"$ref": "glTFid.schema.json" } ]
},
"minItems": 1
},
"extensions": {},
"extras": {}
},
"required": ["featureIds"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make sure to update the filename of the JSON file, it still uses EXT_feature_metadata. There are a couple other files like this.

"$schema": "http://json-schema.org/draft-04/schema",
"title": "EXT_mesh_features glTF Primitive extension",
"type": "object",
"description": "`EXT_mesh_features extension` for a primitive in a glTF model, to associate it with the root `EXT_mesh_features` object.",
"properties": {
"featureIds": {
"type": "array",
"description": "",
"items": {
"oneOf": [
{"$ref": "featureIdAttribute.schema.json"},
{"$ref": "featureIdTexture.schema.json"}
]
},
"minItems": 1
},
"propertyTables": {
"type": "array",
"description": "An array of IDs of property tables from the root `EXT_mesh_features` object.",
"items": {
"allOf": [ {"$ref": "glTFid.schema.json" } ]
},
"minItems": 1
},
"propertyTextures": {
"type": "array",
"description": "An array of IDs of property textures from the root `EXT_mesh_features` object.",
"items": {
"allOf": [ {"$ref": "glTFid.schema.json" } ]
},
"minItems": 1
},
"extensions": {},
"extras": {}
},
"anyOf": [
{
"required": [
"featureIds",
"propertyTables"
]
},
{
"required": [
"propertyTextures"
]
}
]
}
Loading