# Object Symbol Layer Size

Object symbol layers have three size properties: `width`

, `height`

, and `depth`

. All properties are optional, so any combination of these properties is valid. The high-level design idea is that if size definitions are missing, the aspect ratio of the 3D model is respected as far as possible. In practice, there are 4 different cases:

**None of the size properties are defined:**the symbol resource is left at its original scale.- For
`href`

resources, interpret the vertex coordinates of the model (WOSR) in meters. Web styles are modeled such that real-world assets (e.g. cars) appear at a realistic size. - For
`primitive`

resources, the default size is 10m for all dimensions.

- For
**One size property is defined:**the two undefined axes are scaled s.t. the resource maintains its original aspect ratio.- Example: if the resource is a tree of originally 10m height and 3m width and depth, and only
`height`

is defined to be 5m, the resulting symbol has a width and depth of 1.5m.

- Example: if the resource is a tree of originally 10m height and 3m width and depth, and only
**Two size properties are defined:**the first property that is defined in the list [width, depth, height] defines the scale value for the undefined axis.- Example: for the same tree resource (10m height and 3m width & depth), when
`width`

= 2m and`height`

= 5m, the resulting depth is 2m.

- Example: for the same tree resource (10m height and 3m width & depth), when
**All size properties are defined:**no explanation needed.

Note that cases 2-4 can be implemented simultaneously by going over the properties in the order [width, depth, height], picking the first one that is defined, compute the scale factor for this axis (size property divided by resource size), and applying this scale factor to all undefined axes.

## Visual Variables

- Size visual variables also allow for any combinations of presence/absence of each axis.
- Same rules (as described above) apply for determining the size/scale factor for undefined axes.
- If one or more visual variables are present, the symbol's size properties are ignored.
- I.e. even if the symbol itself has width + height + depth defined, as soon as there is a size visual variable, the symbol will be scaled proportionally based on the size visual variables only (according to the above rules).

- The exception to this rule is if the visual variable has
`useSymbolValue`

set to`true`

, in which case the symbol's size values are used for the axes in question.

Feedback on this topic?