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_count
is (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
mode
is octree then these must also be powers of two but they don't have to be equal. mode
:SubblockMode
or null- If present this further restricts the sub-block layout.
subblocks
:Array
- Array with
RegularSubblock
type 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
FreeformSubblock
type 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"
]
}
}
}
]
}