# ModelFeature

#### new Cesium.ModelFeature(options)
engine/Source/Scene/Model/ModelFeature.js 33

A feature of a `Model`.

Provides access to a feature's properties stored in the model's feature table.

Modifications to a `ModelFeature` object have the lifetime of the model.

Do not construct this directly. Access it through picking using `Scene#pick`.

Name | Type | Description
--- | --- | ---
`options` | object | Object with the following properties:
Name | Type | Description
--- | --- | ---
`model` | Model | The model the feature belongs to.
`featureId` | number | The unique integral identifier for this feature.

##### Example:

    // On mouse over, display all the properties for a feature in the console log.
    handler.setInputAction(function(movement) {
        const feature = scene.pick(movement.endPosition);
        if (feature instanceof Cesium.ModelFeature) {
            console.log(feature);
        }
    }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

### Members

#### color : Color
engine/Source/Scene/Model/ModelFeature.js 75

Gets or sets the highlight color multiplied with the feature's color. When this is white, the feature's color is not changed. This is set for all features when a style's color is evaluated.

Default Value: ``Color.WHITE``

#### readonly featureId : number
engine/Source/Scene/Model/ModelFeature.js 131

Get the feature ID associated with this feature. For 3D Tiles 1.0, the batch ID is returned. For EXT_mesh_features, this is the feature ID from the selected feature ID set.

##### Experimental

This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.

#### show : boolean
engine/Source/Scene/Model/ModelFeature.js 55

Gets or sets if the feature will be shown. This is set for all features when a style's show is evaluated.

Default Value: `true`

### Methods

#### getProperty(name) → *
engine/Source/Scene/Model/ModelFeature.js 163

Returns a copy of the value of the feature's property with the given name.

Name | Type | Description
--- | --- | ---
`name` | string | The case-sensitive name of the property.

##### Returns:

The value of the property or `undefined` if the feature does not have this property.

##### Example:

    // Display all the properties for a feature in the console log.
    const propertyIds = feature.getPropertyIds();
    const length = propertyIds.length;
    for (let i = 0; i < length; ++i) {
        const propertyId = propertyIds[i];
        console.log(propertyId + ': ' + feature.getProperty(propertyId));
    }

#### getPropertyIds(results) → Array.<string>
engine/Source/Scene/Model/ModelFeature.js 200

Returns an array of property IDs for the feature.

Name | Type | Description
--- | --- | ---
`results` | Array.<string> | optional An array into which to store the results.

##### Returns:

The IDs of the feature's properties.

#### getPropertyInherited(name) → *
engine/Source/Scene/Model/ModelFeature.js 186

Returns a copy of the feature's property with the given name, examining all the metadata from the EXT_structural_metadata and legacy EXT_feature_metadata glTF extensions. Metadata is checked against name from most specific to most general and the first match is returned. Metadata is checked in this order:

1. structural metadata property by semantic
2. structural metadata property by property ID

See the EXT_structural_metadata Extension as well as the previous EXT_feature_metadata Extension for glTF.

Name | Type | Description
--- | --- | ---
`name` | string | The semantic or property ID of the feature. Semantics are checked before property IDs in each granularity of metadata.

##### Returns:

The value of the property or `undefined` if the feature does not have this property.

##### Experimental

This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.

#### hasProperty(name) → boolean
engine/Source/Scene/Model/ModelFeature.js 144

Returns whether the feature contains this property.

Name | Type | Description
--- | --- | ---
`name` | string | The case-sensitive name of the property.

##### Returns:

Whether the feature contains this property.

#### setProperty(name, value) → boolean
engine/Source/Scene/Model/ModelFeature.js 225

Sets the value of the feature's property with the given name.

Name | Type | Description
--- | --- | ---
`name` | string | The case-sensitive name of the property.
`value` | * | The value of the property that will be copied.

##### Returns:

`true` if the property was set, `false` otherwise.

##### Throws:

- DeveloperError : Inherited batch table hierarchy property is read only.

##### Examples:

    const height = feature.getProperty('Height'); // e.g., the height of a building

    const name = 'clicked';
    if (feature.getProperty(name)) {
        console.log('already clicked');
    } else {
        feature.setProperty(name, true);
        console.log('first click');
    }

Need help? The fastest way to get answers is from the community and team on the Cesium Forum.