Class ModelSymbolLayer
A symbol layer uses a volumetric 3D shape (such as a sphere, cube, or cylinder) to define the appearance of a symbol.
Namespace: Esri.ArcGISRuntime.Symbology
Assembly: Esri.ArcGISRuntime.dll
Syntax
public sealed class ModelSymbolLayer : SymbolLayer, INotifyPropertyChanged, ILoadable
Remarks
A ModelSymbolLayer is typically used with a MultilayerPointSymbol to visualize point geometries at a specific location relative to the geometry in a scene view.
The ModelSymbolLayer can be created from a built-in primitive shape or from a URI pointing to a 3D graphical model stored on the web or locally on the device. Supported formats for 3D models include COLLADA (.dae), 3ds Max (.3ds), Filmbox (.fbx), Wavefront (.obj), GL Transmission Format (.glTF), or Binary GL Transmission Format (.glb).
You can customize the appearance of the model symbol layer, such as its color and size. The size of a symbol can be controlled through the properties Height, Width, and Depth. By default, these values are specified in device-independent pixels (DIPs). To define the size in meters instead, set SceneSizeUnit to Meters. This changes the interpretation of the size properties from screen-based units to real-world units, giving the symbol a fixed measurable size in world space. As a result, the symbol appears smaller when viewed from a distance and larger up close, consistent with a real-world perspective.
When a model symbol layer is added to a MultilayerPointSymbol, the Height property serves as the primary sizing axis. Adjusting Size modifies the height of the model symbol layer, while the width and depth are proportionally adjusted based on the original 3D model's bounding box ratio (or 1:1:1 for basic shapes). Setting Size to 0 prevents the symbol from rendering and sets all dimensions (height, width, depth) of the model symbol layer to 0. When Size is set to a positive value, the behavior is determined by the original dimension ratio:
- If the height of the original bounding box is 0, the Height, Width, and Depth remain unchanged, and rendering is not affected.
- If the height of the original bounding box is non-zero, Height updates, while Width and Depth scale proportionally.
- If the width or depth of the original bounding box is 0, those dimensions remain unchanged.
The Height property defines the size of the symbol layer for Size. If the height is set to 0 or a negative value, Size will report 0. If any of the dimensions — Height, Width, or Depth — are explicitly set to 0 or a negative value, the corresponding dimension of the model symbol layer will collapse, resulting in the symbol being flattened along that axis.
Additionally, you can modify the relative position of the model symbol layer by tweaking the Anchor. The orientation of the model symbol layer can be changed using the Heading, Pitch, and Roll properties.
Constructors
| Name | Description |
|---|---|
| ModelSymbolLayer(ModelShape) | Initializes a new instance of the ModelSymbolLayer class from a well-known 3D primitive shape. |
| ModelSymbolLayer(Uri) | Initializes a new instance of the ModelSymbolLayer class from a URI that references a 3D model. |
Properties
| Name | Description |
|---|---|
| Anchor | Gets or sets the anchor of the model symbol layer. |
| Color | Gets or sets the color of the 3D model. |
| Depth | Gets or sets the depth of the model symbol layer. |
| Heading | Gets or sets the rotation angle around Z-axis in degrees. |
| Height | Gets or sets the height of the model symbol layer. |
| LoadError | Gets the Exception associated with the last load error. |
| LoadStatus | Gets the load status. |
| Pitch | Gets or sets the rotation angle around X-axis in degrees. |
| Roll | Gets or sets the rotation angle around Y-axis in degrees. |
| Uri | Gets the URI of the 3D model to be loaded in a model symbol layer. |
| Width | Gets or sets the width of the model symbol layer. |
Methods
| Name | Description |
|---|---|
| CancelLoad() | Cancel loading metadata for the object. |
| LoadAsync() | Load the metadata for the object asynchronously. |
| RetryLoadAsync() | Loads or retries loading metadata for the object asynchronously. |
Events
| Name | Description |
|---|---|
| LoadStatusChanged | Event that is raised when the LoadStatus property changes. |
| Loaded | Event that is raised when the object is done loading. |
Applies to
| Target | Versions |
|---|---|
| .NET | 300 |
| .NET Windows | 300 |
| .NET Android | 300 |
| .NET iOS | 300 |