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 andheight
= 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 totrue
, in which case the symbol's size values are used for the axes in question.