Subblocks
Stores sub-blocks of a block model.
Regular
Divide each parent block into a regular grid of count cells. Sub-blocks each covers a non-overlapping cuboid subset of that grid.
Sub-blocks are described by the parents and corners arrays. Those arrays must be the same length and matching rows in each describe the same sub-block. Each row in parents is an IJK index on the block model grid. Each row of corners is , all integers, that refer to the vertices of the sub-block grid within the parent block. For example:
- 
A block with minimum size in the corner of the parent block would be (0, 0, 0, 1, 1, 1). 
- 
If the subblock_countis (5, 5, 3) then a sub-block covering the whole parent would be (0, 0, 0, 5, 5, 3).
Sub-blocks must stay within their parent, must have a non-zero size in all directions, and should not overlap. Further restrictions can be applied by the mode field, see SubblockMode for details.
Fields
- type
- "Regular"
- count: array of integer, 3 items
- 
The sub-block grid size. Must be greater than zero in all directions. If modeis octree then these must also be powers of two but they don't have to be equal.
- mode:- SubblockModeor null
- If present this further restricts the sub-block layout.
- subblocks:- Array
- Array with RegularSubblocktype storing the sub-block parent indices and corners relative to the sub-block grid within the parent.
Freeform
Divide each parent block into any number and arrangement of non-overlapping cuboid regions.
Sub-blocks are described by the parents and corners arrays. Each row in parents is an IJK index on the block model grid. Each row of corners is  in floating-point and relative to the parent block, running from 0.0 to 1.0 across the parent. For example:
- 
A sub-block covering the whole parent will be (0.0, 0.0, 0.0, 1.0, 1.0, 1.0) no matter the size of the parent. 
- 
A sub-block covering the bottom third of the parent block would be (0.0, 0.0, 0.0, 1.0, 1.0, 0.3333) and one covering the top two-thirds would be (0.0, 0.0, 0.3333, 1.0, 1.0, 1.0), again no matter the size of the parent. 
Sub-blocks must stay within their parent, must have a non-zero size in all directions, and shouldn't overlap.
Fields
- type
- "Freeform"
- subblocks:- Array
- Array with FreeformSubblocktype storing the sub-block parent indices and corners relative to the parent.
Schema
{
  "oneOf": [
    {
      "type": "object",
      "required": [
        "count",
        "subblocks",
        "type"
      ],
      "properties": {
        "count": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint32",
            "minimum": 0.0
          },
          "maxItems": 3,
          "minItems": 3
        },
        "mode": {
          "anyOf": [
            {
              "$ref": "#/definitions/SubblockMode"
            },
            {
              "type": "null"
            }
          ]
        },
        "subblocks": {
          "$ref": "#/definitions/Array"
        },
        "type": {
          "type": "string",
          "enum": [
            "Regular"
          ]
        }
      }
    },
    {
      "type": "object",
      "required": [
        "subblocks",
        "type"
      ],
      "properties": {
        "subblocks": {
          "$ref": "#/definitions/Array"
        },
        "type": {
          "type": "string",
          "enum": [
            "Freeform"
          ]
        }
      }
    }
  ]
}