searches the current version of every section · esc to close

Viewing this section as of v0.1.37 (tagged 2026-04-04). Go to current →

26.05.02 Artifact Volume

Artifact volume models each artifact as a three-dimensional box. The box then participates in the reconstruction logic, instead of relying on the explicit content of the artifact. For layout modes that use artifact volume, the scale member of the Embedding object SHOULD be ignored and a new member is introduced to Artifact's properties:

interface ArtifactProperties {
	volume: Volume // RECOMMENDED
	// ...
}

where

  • volume is RECOMMENDED, and its value MUST be of type Volume. If it is not provided but is needed for the reconstruction logic, the default value MUST be used.

The Volume type object is used to represent the dimensions of the artifact for the reconstruction logic, such as the stacking logic. The Volume type is defined as

type Volume = {
    width: number   // REQUIRED
    length: number  // REQUIRED
    height: number  // REQUIRED
}

where each member is REQUIRED. If the artifact has not been rotated in the scene, then

  • width corresponds to the x-axis in the scene.
  • length corresponds to the y-axis in the scene.
  • height corresponds to the z-axis in the scene.

The default value for volume is 1 for each member of the Volume type.

Implementations SHOULD proportionally scale down oversized artifacts to fit within their volume box, or their volume box multiplied by a factor. The Layout Mode module introduces two new members in FormProperties:

interface FormProperties {
	volumeBoxLimit: [boolean, boolean, boolean] // OPTIONAL
	scaleVolumeMultiplier: [number, number, number] // OPTIONAL
	// ...
}

where

  • volumeBoxLimit is OPTIONAL and its value MUST be an array of 3 boolean values, corresponding to which directions the volume box limit is imposed on, where the three boolean values represent whether the limit is imposed on width, length, and height, in that order. If it is not provided, the default value [true, true, true] MAY be used, or implementations MAY use their own default value and SHOULD state the default value they use.1
  • scaleVolumeMultiplier is OPTIONAL and its value MUST be an array of 3 number values. It represents the tolerance for oversized artifacts and the target size of the scale-down on width, length, and height, in that order. On each direction, the artifact SHOULD be scaled down to its volume on that direction multiplied by the corresponding element in scaleVolumeMultiplier. If the corresponding value in volumeBoxLimit is false for that direction, then the corresponding value in scaleVolumeMultiplier MUST be ignored. If it is not provided, the default value [1, 1, 1] MAY be used, or implementations MAY use their own default value and SHOULD state the default value they use.2

Footnotes

  1. In the reference implementation Exterior Space, the default value [true, true, false] is used for volumeBoxLimit to allow oversizing in height.

  2. In the reference implementation Exterior Space, the default value [1.5, 1.5, 1.5] is used for scaleVolumeMultiplier to allow slightly oversized artifacts.