pub struct BlockModel {
pub orient: Orient3,
pub grid: Grid3,
pub subblocks: Option<Subblocks>,
}
Expand description
Block model geometry with optional sub-blocks.
First, the orient
field defines the position and orientation of a (U, V, W) space relative
to the project, which could be just an offset or a full rotation as well. Then the grid
field defines the size and number of parent blocks aligned with that space and starting at
(0, 0, 0). Sub-blocks can then optionally be added inside those parent
blocks using a variety of layouts.
While sub-blocks are supported on tensor grids it isn’t a common arrangement and many applications won’t load them.
§Attribute Locations
-
Vertices
puts attribute values on the corners of the parent blocks. If the block count is $(N_0, N_1, N_2)$ then there must be $(N_0 + 1) · (N_1 + 1) · (N_2 + 1)$ values. Ordering increases U first, then V, then W. -
Blocks
puts attribute values on the centroids of the parent block. If the block count is $(N_0, N_1, N_2)$ then there must be $N_0 · N_1 · N_2$ values. Ordering increases U first, then V, then W. -
Subblocks
puts attribute values on sub-block centroids. The number and values and their ordering matches theparents
andcorners
arrays.To have attribute values on undivided parent blocks in this mode there must be a sub-block that covers the whole parent block.
Fields§
§orient: Orient3
Orientation of the block model.
grid: Grid3
Block sizes.
subblocks: Option<Subblocks>
Optional sub-blocks, which can be regular or free-form divisions of the parent blocks.
Implementations§
Source§impl BlockModel
impl BlockModel
pub fn new(orient: Orient3, grid: Grid3) -> Self
pub fn with_subblocks( orient: Orient3, grid: Grid3, subblocks: Subblocks, ) -> Self
pub fn with_regular_subblocks( orient: Orient3, grid: Grid3, subblock_count: [u32; 3], subblocks: Array<RegularSubblock>, mode: Option<SubblockMode>, ) -> Self
pub fn with_freeform_subblocks( orient: Orient3, grid: Grid3, subblocks: Array<FreeformSubblock>, ) -> Self
Sourcepub fn has_subblocks(&self) -> bool
pub fn has_subblocks(&self) -> bool
Returns true if the model has sub-blocks.
pub fn location_len(&self, location: Location) -> Option<u64>
Trait Implementations§
Source§impl Clone for BlockModel
impl Clone for BlockModel
Source§fn clone(&self) -> BlockModel
fn clone(&self) -> BlockModel
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for BlockModel
impl Debug for BlockModel
Source§impl Default for BlockModel
impl Default for BlockModel
Source§fn default() -> BlockModel
fn default() -> BlockModel
Source§impl<'de> Deserialize<'de> for BlockModel
impl<'de> Deserialize<'de> for BlockModel
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl From<BlockModel> for Geometry
impl From<BlockModel> for Geometry
Source§fn from(value: BlockModel) -> Self
fn from(value: BlockModel) -> Self
Source§impl JsonSchema for BlockModel
impl JsonSchema for BlockModel
Source§fn schema_name() -> String
fn schema_name() -> String
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref
keyword. Read more