UNPKG

@loaders.gl/gltf

Version:

Framework-independent loader for the glTF format

421 lines 22.7 kB
import { GLTFTextureInfo } from "./gltf-json-schema.js"; /** * EXT_feature_metadata extension types * This extension has glTF-level metadata and primitive-level feature indexing and segmentation metadata * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata * * glTF-level metadata * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#gltf-extension-1 * JSON Schema - https://github.com/CesiumGS/glTF/blob/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata/schema/glTF.EXT_feature_metadata.schema.json */ export type GLTF_EXT_feature_metadata_GLTF = { /** An object defining classes and enums. */ schema?: GLTF_EXT_feature_metadata_Schema; /** A uri to an external schema file. */ schemaUri?: string; /** An object containing statistics about features. */ statistics?: GLTF_EXT_feature_metadata_Statistics; /** A dictionary, where each key is a feature table ID and each value is an object defining the feature table. */ featureTables?: { [key: string]: GLTF_EXT_feature_metadata_FeatureTable; }; /** A dictionary, where each key is a feature texture ID and each value is an object defining the feature texture. */ featureTextures?: { [key: string]: GLTF_EXT_feature_metadata_FeatureTexture; }; extensions?: Record<string, unknown>; extras?: unknown; }; /** * An object defining classes and enums. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#schema * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/schema.schema.json */ export type GLTF_EXT_feature_metadata_Schema = { /** The name of the schema. */ name?: string; /** The description of the schema. */ description?: string; /** Application-specific version of the schema. */ version?: string; /** A dictionary, where each key is a class ID and each value is an object defining the class. */ classes?: { [key: string]: GLTF_EXT_feature_metadata_Class; }; /** A dictionary, where each key is an enum ID and each value is an object defining the values for the enum. */ enums?: { [key: string]: GLTF_EXT_feature_metadata_Enum; }; extensions?: Record<string, unknown>; extras?: unknown; }; /** * A class containing a set of properties. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#class * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/class.schema.json */ export type GLTF_EXT_feature_metadata_Class = { /** The name of the class, e.g. for display purposes. */ name?: string; /** The description of the class. */ description?: string; /** A dictionary, where each key is a property ID and each value is an object defining the property. */ properties: { [key: string]: GLTF_EXT_feature_metadata_ClassProperty; }; extensions?: Record<string, unknown>; extras?: unknown; }; /** * A class property. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#class-property * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/class.property.schema.json */ export type GLTF_EXT_feature_metadata_ClassProperty = { /** The name of the property, e.g. for display purposes. */ name?: string; /** The description of the property. */ description?: string; /** * The property type. If ENUM is used, then enumType must also be specified. * If ARRAY is used, then componentType must also be specified. * ARRAY is a fixed-length array when componentCount is defined, and variable-length otherwise. */ type: 'INT8' | 'UINT8' | 'INT16' | 'UINT16' | 'INT32' | 'UINT32' | 'INT64' | 'UINT64' | 'FLOAT32' | 'FLOAT64' | 'BOOLEAN' | 'STRING' | 'ENUM' | 'ARRAY' | string; /** * An enum ID as declared in the enums dictionary. * This value must be specified when type or componentType is ENUM. */ enumType?: string; /** * When type is ARRAY this indicates the type of each component of the array. * If ENUM is used, then enumType must also be specified. */ componentType?: 'INT8' | 'UINT8' | 'INT16' | 'UINT16' | 'INT32' | 'UINT32' | 'INT64' | 'UINT64' | 'FLOAT32' | 'FLOAT64' | 'BOOLEAN' | 'STRING' | 'ENUM' | string; /** The number of components per element for ARRAY elements. */ componentCount?: number; /** * 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. */ normalized: boolean; /** * Maximum allowed values for property values. * Only applicable for numeric types and fixed-length arrays of numeric types. * For numeric types this is a single number. * For fixed-length arrays this is an array with componentCount number of elements. * The normalized property has no effect on these values: they always correspond to the integer values. */ max?: number | number[]; /** * Minimum allowed values for property values. * Only applicable for numeric types and fixed-length arrays of numeric types. * For numeric types this is a single number. * For fixed-length arrays this is an array with componentCount number of elements. * The normalized property has no effect on these values: they always correspond to the integer values. */ min?: number | number[]; /** * A default value to use when the property value is not defined. * If used, optional must be set to true. * The type of the default value must match the property definition: For BOOLEAN use true or false. * For STRING use a JSON string. For a numeric type use a JSON number. * For ENUM use the enum name, not the integer value. * For ARRAY use a JSON array containing values matching the componentType. */ default?: boolean | number | string | number[]; /** If true, this property is optional. */ optional?: boolean; /** * An identifier that describes how this property should be interpreted. * The semantic cannot be used by other properties in the class. */ semantic?: string; extensions?: Record<string, unknown>; extras?: unknown; }; /** * An object defining the values of an enum. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#enum * JSON Schema - https://github.com/CesiumGS/glTF/blob/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata/schema/enum.schema.json */ export type GLTF_EXT_feature_metadata_Enum = { /** The name of the enum, e.g. for display purposes. */ name?: string; /** The description of the enum. */ description?: string; /** The type of the integer enum value. */ valueType?: 'INT8' | 'UINT8' | 'INT16' | 'UINT16' | 'INT32' | 'UINT32' | 'INT64' | 'UINT64'; /** An array of enum values. Duplicate names or duplicate integer values are not allowed. */ values: GLTF_EXT_feature_metadata_EnumValue[]; extensions?: Record<string, unknown>; extras?: unknown; [key: string]: unknown; }; /** * An enum value. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#enum-value * JSON Schema - https://github.com/CesiumGS/glTF/blob/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata/schema/enum.value.schema.json */ export type GLTF_EXT_feature_metadata_EnumValue = { /** The name of the enum value. */ name: string; /** The description of the enum value. */ description?: string; /** The integer enum value. */ value: number; extensions?: Record<string, unknown>; extras?: unknown; [key: string]: unknown; }; /** * A feature table defined by a class and property values stored in arrays. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#feature-table * JSON Schenma - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/featureTable.schema.json */ export type GLTF_EXT_feature_metadata_FeatureTable = { /** The class that property values conform to. The value must be a class ID declared in the classes dictionary. */ class?: string; /** The number of features, as well as the number of elements in each property array. */ count: number; /** * A dictionary, where each key corresponds to a property ID in the class properties dictionary * and each value is an object describing where property values are stored. * Optional properties may be excluded from this dictionary. */ properties?: { [key: string]: GLTF_EXT_feature_metadata_FeatureTableProperty; }; extensions?: Record<string, unknown>; extras?: unknown; }; /** * An array of binary property values. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#feature-table-property * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/featureTable.property.schema.json */ export type GLTF_EXT_feature_metadata_FeatureTableProperty = { /** * The index of the buffer view containing property values. * The data type of property values is determined by the property definition: * When type is BOOLEAN values are packed into a bitfield. * When type is STRING values are stored as byte sequences and decoded as UTF-8 strings. * When type is a numeric type values are stored as the provided type. * When type is ENUM values are stored as the enum's valueType. * Each enum value in the buffer must match one of the allowed values in the enum definition. * When type is ARRAY elements are packed tightly together and the data type is based on the componentType following the same rules as above. * arrayOffsetBufferView is required for variable-size arrays * and stringOffsetBufferView is required for strings (for variable-length arrays of strings, both are required) * The buffer view byteOffset must be aligned to a multiple of 8 bytes. * If the buffer view's buffer is the GLB-stored BIN chunk the byte offset is measured relative to the beginning of the GLB. * Otherwise it is measured relative to the beginning of the buffer. */ bufferView: number; /** The type of values in arrayOffsetBufferView and stringOffsetBufferView. */ offsetType?: 'UINT8' | 'UINT16' | 'UINT32' | 'UINT64' | string; /** * The index of the buffer view containing offsets for variable-length arrays. * The number of offsets is equal to the feature table count plus one. * The offsets represent the start positions of each array, with the last offset representing the position after the last array. * The array length is computed using the difference between the current offset and the subsequent offset. * If componentType is STRING the offsets index into the string offsets array (stored in stringOffsetBufferView), * otherwise they index into the property array (stored in bufferView). * The data type of these offsets is determined by offsetType. * The buffer view byteOffset must be aligned to a multiple of 8 bytes in the same manner as the main bufferView */ arrayOffsetBufferView?: number; /** * The index of the buffer view containing offsets for strings. * The number of offsets is equal to the number of string components plus one. * The offsets represent the byte offsets of each string in the main bufferView, * with the last offset representing the byte offset after the last string. * The string byte length is computed using the difference between the current offset and the subsequent offset. * The data type of these offsets is determined by offsetType. * The buffer view byteOffset must be aligned to a multiple of 8 bytes in the same manner as the main bufferView. */ stringOffsetBufferView?: number; extensions?: Record<string, unknown>; extras?: unknown; /** This is not part of the spec. GLTFLoader loads feature tables data into this property */ data: unknown; }; /** * Features whose property values are stored directly in texture channels. This is not to be confused with feature ID textures which store feature IDs for use with a feature table. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#feature-texture * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/featureTexture.schema.json */ export type GLTF_EXT_feature_metadata_FeatureTexture = { /** The class this feature texture conforms to. The value must be a class ID declared in the classes dictionary. */ class: string; /** * A dictionary, where each key corresponds to a property ID in the class properties dictionary * and each value describes the texture channels containing property values. */ properties: { [key: string]: GLTF_EXT_feature_metadata_TextureAccessor; }; extensions?: Record<string, unknown>; extras?: unknown; }; /** * A description of how to access property values from the color channels of a texture. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#texture-accessor * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/textureAccessor.schema.json */ export type GLTF_EXT_feature_metadata_TextureAccessor = { /** Texture channels containing property values. Channels are labeled by rgba and are swizzled with a string of 1-4 characters. */ channels: string; /** The glTF texture and texture coordinates to use. */ texture: GLTFTextureInfo; extensions?: Record<string, unknown>; extras?: unknown; /** This is not part of the spec. GLTFLoader loads feature tables data into this property */ data: unknown; }; /** * Statistics about features. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#statistics-1 * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/statistics.schema.json */ export type GLTF_EXT_feature_metadata_Statistics = { /** * A dictionary, where each key is a class ID declared in the classes dictionary * and each value is an object containing statistics about features that conform to the class. */ classes?: { [key: string]: GLTF_EXT_feature_metadata_StatisticsClass; }; extensions?: Record<string, unknown>; extras?: unknown; }; /** * Statistics about features that conform to the class. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#class-statistics * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/statistics.class.property.schema.json */ export type GLTF_EXT_feature_metadata_StatisticsClass = { /** The number of features that conform to the class. */ count?: number; /** * A dictionary, where each key is a class ID declared in the classes dictionary * and each value is an object containing statistics about property values. */ properties?: { [key: string]: GLTF_EXT_feature_metadata_StatisticsClassProperty; }; extensions?: Record<string, unknown>; extras?: unknown; }; /** * min, max, mean, median, standardDeviation, variance, sum are * only applicable for numeric types and fixed-length arrays of numeric types. * For numeric types this is a single number. * For fixed-length arrays this is an array with componentCount number of elements. * The normalized property has no effect on these values. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#property-statistics * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/statistics.class.property.schema.json */ export type GLTF_EXT_feature_metadata_StatisticsClassProperty = { /** The minimum property value. */ min?: number | number[]; /** The maximum property value. */ max?: number | number[]; /** The arithmetic mean of the property values. */ mean?: number | number[]; /** The median of the property values. */ median?: number | number[]; /** The standard deviation of the property values. */ standardDeviation?: number | number[]; /** The variance of the property values. */ variance?: number | number[]; /** The sum of the property values. */ sum?: number | number[]; /** * A dictionary, where each key corresponds to an enum name and each value is the number of occurrences of that enum. * Only applicable when type or componentType is ENUM. * For fixed-length arrays, this is an array with componentCount number of elements. */ occurrences: { [key: string]: number | number[]; }; extensions?: Record<string, unknown>; extras?: unknown; }; /** * EXT_feature_metadata extension types * This extension has glTF-level metadata and primitive-level (feature indexing and segmentation) metadata * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata * * primitive-level metadata * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#primitive-extension * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/mesh.primitive.EXT_feature_metadata.schema.json */ export type GLTF_EXT_feature_metadata_Primitive = { /** Feature ids definition in attributes */ featureIdAttributes?: GLTF_EXT_feature_metadata_FeatureIdAttribute[]; /** Feature ids definition in textures */ featureIdTextures?: GLTF_EXT_feature_metadata_FeatureIdTexture[]; /** An array of IDs of feature textures from the root EXT_feature_metadata object. */ featureTextures?: string[]; extensions?: Record<string, unknown>; extras?: unknown; }; /** * Attribute which described featureIds definition. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#feature-id-attribute * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/featureIdAttribute.schema.json */ export type GLTF_EXT_feature_metadata_FeatureIdAttribute = { /** Name of feature table */ featureTable: string; /** Described how feature ids are defined */ featureIds: GLTF_EXT_feature_metadata_FeatureIdAttributeFeatureIds; extensions?: Record<string, unknown>; extras?: unknown; }; /** * Defining featureIds by attributes or implicitly. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#primitive-extensionfeatureidattributes * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/featureIdAttribute.featureIds.schema.json */ export type GLTF_EXT_feature_metadata_FeatureIdAttributeFeatureIds = { /** Name of attribute where featureIds are defined */ attribute?: string; /** Sets a constant feature ID for each vertex. The default is 0. */ constant?: number; /** Sets the rate at which feature IDs increment. * If divisor is zero then constant is used. * If divisor is greater than zero the feature ID increments once per divisor sets of vertices, starting at constant. * The default is 0 */ divisor?: number; }; /** * An object describing a texture used for storing per-texel feature IDs. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#feature-id-texture * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/featureIdTexture.schema.json */ export type GLTF_EXT_feature_metadata_FeatureIdTexture = { /** The ID of the feature table in the model's root `EXT_feature_metadata.featureTables` dictionary. */ featureTable: string; /** A description of the texture and channel to use for feature IDs. The `channels` property must have a single channel. Furthermore, * feature IDs must be whole numbers in the range `[0, count - 1]` (inclusive), where `count` is the total number of features * in the feature table. Texel values must be read as integers. Texture filtering should be disabled when fetching feature IDs. */ featureIds: GLTF_EXT_feature_metadata_FeatureIdTextureAccessor; }; /** * A description of how to access property values from the color channels of a texture. * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#featureidtexturefeatureids * JSON Schema - https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_feature_metadata/schema/textureAccessor.schema.json */ export type GLTF_EXT_feature_metadata_FeatureIdTextureAccessor = { /** gLTF textureInfo object - https://github.com/CesiumGS/glTF/blob/3d-tiles-next/specification/2.0/schema/textureInfo.schema.json */ texture: GLTFTextureInfo; /** Must be a single channel ("r", "g", "b", or "a") */ channels: 'r' | 'g' | 'b' | 'a'; }; //# sourceMappingURL=gltf-ext-feature-metadata-schema.d.ts.map