Octree Sub-Blocked Models
Octree block models are an established type of sub-blocked model in which blocks are subdivided into smaller sub-blocks where triggering surfaces intersect the blocks. When an octree block model is divided into sub-blocks, instead of dividing a block entirely into small sub-blocks when sub-blocking is triggered, the block is first divided in half in a particular direction, and then only the partitioned blocks that still trigger a further division are divided into smaller units. This creates a series of sub-blocks of different sizes, and because many are larger than the smallest sub-block and the smallest sub-blocks only exist where a contact requires it, processing can be more efficient.
Sub-blocked models can be rotated in two axes by adjusting the dip and azimuth.
This topic describes creating and exporting octree block models. It is divided into:
- Creating an Octree Sub-Blocked Model
- Octree Block Model Statistics
- Importing Octree Sub-Blocked Models
- Manually Setting the Grid Definition for an Imported Octree Block Model
- Exporting Octree Sub-Blocked Models
Creating an Octree Sub-Blocked Model
To create a new octree sub-blocked model, right-click on the Block Models folder and select New Octree Block Model. The New Octree Block Model window will appear, together with a set of controls that will help you set the size, location and orientation of the model in the scene:
The block model is defined from its Base point, and the reference centroid is the Base point plus one half the Block size. Block models extents always include complete blocks, even when sub-blocking, and when changes are made to the Block size parameter, the model’s extents will be enlarged to fit the Block size.
Model Extents and Rotation
It is a good idea to set the octree block model’s extents from another object in the project, selecting the required object from the Enclose Object list.
The Dip and Azimuth set the rotation of the model. If you know the values you wish to use, enter them in New Octree Block Model window. You can also:
- Use the controls in the scene to set the orientation. The yellow handle adjusts the Dip and the blue handle adjusts the Azimuth.
- Use either the slicer or the moving plane to set the orientation. To do this, add the slicer or the moving plane to the scene and adjust the orientation. Then select the object to use from the Set Angles From list.
If you have set the extents from another object and then rotated the model, you will need to reset the extents by selecting the object again from the Enclose Object list.
The Grid Pattern
The cross-hatched pattern shows how the parent blocks will be divided into sub-blocks. These properties can be changed by adjusting the Parent blocks and Sub-blocks settings. The Sub-block count is the maximum number of divisions a parent block can be divided into in a particular direction when it intersects a trigger. Note the block can only be divided into numbers of divisions that are a power of two to a maximum of 64, as the sub-blocking strategy is to repeatedly divide units in half. Variable height sub-blocks are not supported in octree block models.
Here the block size is 100 and the sub-block count is 4 x 4 x 32, so blocks will range in size from 100x100x100 down to 25x25x3.125. Note the variety of sub-block sizes as the sub-blocking is triggered on the geological model surfaces, two of which are shown (in red and blue):
Triggers and Evaluations
Click on the Triggers and Evaluations tab to select from the volumes available in the project.
Triggers can be:
- Geological model volumes
- Combined model volumes
Meshes and interpolants cannot be used to trigger octree block model sub-blocking.
Evaluations can be:
- Geological model volumes
- Combined model volumes
- Grouped meshes
- Interpolants
- Distance functions
All suitable objects in the project will be displayed in the Available evaluations list.
Move the models you wish to use into the Selected evaluations list, then select the Eval. Mode. You can select from Existing sub-block centroids or Parent block centroids. Models that can trigger sub-blocking will also have the option to Trigger new sub-blocks. These selected options are abbreviated in the edit window as Sub-block, Parent, and Trigger respectively.
Enter a Name for the octree block model and click OK. The model will appear under the Block Models folder. You can make changes to it by double-clicking on it.
Octree Block Model Statistics
You can view statistics for all evaluations and calculations made on an octree block model. To view statistics, right-click on an octree block model in the project tree and select Statistics, then choose from the options: Table of Statistics, Scatter Plot, Q-Q Plot and Box Plot.
See Viewing Block Model Statistics in the Block Models topic for more information.
Importing Octree Sub-Blocked Models
Right-click on the Block Models folder in the project tree and select Import Octree Block Model. An open file dialog will appear for you to find the *.csv file you want to open.
Choose which columns in the *.csv file you want to import in the Select Attributes window, then click Next.
If you are opening an octree block model *.csv file created by Leapfrog, the Grid Definition fields will be automatically populated.
A Metadata tab contains additional information extracted or processed from the file content, including the block sizes that result and the counts for each, and the coordinates for the minimum and maximum grid corners were the grid not rotated.
In cases where Leapfrog Geo cannot automatically parse the grid definition information from the file, it will be necessary to enter the block size, position and extent values for the block model you are importing. You may be able to find this information in the header at the top of the *.csv file, which is displayed on the right side of the screen. Copy the relevant information from the header into the Parent blocks, Sub-blocks and Position and Size fields.
Note that besides the Leapfrog and Surpac rotation type options, the Custom Rotation option for Rotation type allows the rotation values around X, Y and Z to be specified in any order, and, when needed, to indicate that the values in the file are in rotated model coordinates.
Validation messages at the bottom of the Grid Definition fields check to see if the values in the Grid Definition fields result in a match for the blocks in the source file. Once you have a valid set of definition fields, the validation message will read: All the blocks in the file match the grid you've defined.
To make this process easier, Leapfrog Geo makes it easy to move numbers from the file over into the Grid Definition fields. Select content from the right pane and drag it over to the Grid Definition fields. As you drag the value over fields on the left, boxes will be highlighted to show where the value(s) will be entered when you drop them. You may include the label and other content in the selection, and only the selected numbers will be pasted. When a line contains several numbers, all can be selected and dragged over, and depending on how many numbers you selected, two or three adjacent fields will be highlighted to show where the numbers will go.
Some *.csv octree block model files do not have the file grid definition data in a header at the top of the file, but instead have the information in a second 'sidecar' file that accompanies the block model file. If no grid definition header is apparent for the file you have selected, check the source folder to see if there is another file that contains the grid definition information. If the octree block model was exported from Leapfrog Geo, the file will be named the same but also have “.txt” at the end. If Leapfrog Geo can identify the sidecar file it will be displayed in a tab on the right side of the window.
Some *.csv octree block model files may only have the origin coordinates in the header, or no definition at all. If it is possible, ask the source of the file you are using for the grid definition information used on the original block model; reconstructing the information will result in a similar but not the same block model.
If you need to figure out the Grid Definition information manually, follow the process outlined in Manually Setting the Grid Definition for an Imported Octree Block Model.
Manually Setting the Grid Definition for an Imported Octree Block Model
If you do not know the grid definition parameters for the block model being imported, you can use the techniques described here to get a similar block model, but it will not be the same block model as the block model exported to file. If at all possible, obtain the actual grid definition parameters and enter these in the importer.
Clear the scene view, then open the *.csv file as you would for any other octree block model file. Right-click on the Block Models folder in the project tree and select Import Octree Block Model. Choose which columns in the *.csv file you want to import in the Select Attributes window, then click Next.
Move the Import Octree Block Model window so you can see the scene view window at the same time. Unless your imported points are near the origin, you probably cannot see both the grid definition preview box and the imported points in the same view. To position the grid definition preview box closer to the imported points, select the x, y and z coordinates from the first line of the *.csv file and drag them into the Minimum corner fields. Enter values in the Maximum corner fields that are larger than the Minimum corner values and likely to be close to enclosing the imported blocks. It isn't important to be exact right now as the purpose is to get the grid definition preview box adjacent to the imported points. Once you have entered approximate minimum and maximum corner values, click in the scene then hit the Home key to recentre the scene on the objects in the scene. You should see a cloud of imported points and the grid definition preview box, although they are unlikely to be properly aligned at the moment.
In the shape list, you can change the appearance of the imported block centroid points, such as making the points solid, changing their colour and changing their size. Selecting a point size radius to half the expected size of the parent blocks can be useful for visual alignment of the grid. The points should almost touch and generally not overlap, although this may be seen where there is sub-blocking evident.
Determine which corner is the minimum corner position, then select the most distant point on the opposite side of the imported points. The information window for the selected point will provide x, y and z coordinates for this point. Enter these values in the Maximum corner fields in the Grid Definition.
Do not hit the Enter key during this process because that will start the file Import process and the grid definition cannot be edited from that point, and it will be necessary to start the block model import over from the start
Use the ruler to draw along the edge of the points. Note the orientation in degrees to get helpful hints for the angles to enter for the grid definition rotation angles.
From the Rotation options list, select Leapfrog. Having already selected the Minimum corner and Maximum corner, the grid will reposition between these two points as the Dip, Plunge and Azimuth fields are changed. If you select Surpac, the Maximum corner will move as the Bearing, Dip and Plunge fields are changed, which will result in more adjustments as the manual alignment progresses.
Start with the Azimuth setting and change the angle until the grid definition preview box appears to align with the grid of points. Then adjust the Dip angle until the grid definition preview box aligns. Finally, adjust the Plunge angle to get the grid definition box fully aligned with the cloud of points.
Although the grid definition preview box should appear to be well aligned with the grid of points at this stage, the validation message is probably indicating that the blocks defined by the grid definition do not suit the points in the imported file. This will be because the grid corners were set up to align with the points which are block centroids and we need to offset the definition by half the parent block dimensions. Because of the rotation angles involved, this is often not as simple as reducing the Minimum corner values by half the block size, however. It can be useful to rotate the scene to look straight down a row of points and adjust the x, y and z coordinates to line up to the edge of the points, rotating the scene as necessary to observe the points from different angles. It may be necessary to adjust the Minimum corner coordinates by less than single unit steps to align the grid definition box well enough to match the grid with the block points in the imported file.
When you see that you have a good match with the blocks in the imported file, click the Import button. The octree block model will be imported and will be added to the Block Models folder in the project tree.
Note that the Grid Definition fields for an imported block model cannot be modified once the block model has been imported.
Exporting Octree Sub-Blocked Models
Octree block models created in Leapfrog Geo can be exported in the following formats:
- CSV Octree Block Model (*.csv) - this has an embedded header containing the octree block model definition
- CSV Octree Block Model + Text header (*.csv, *.csv.txt) - the octree block model definition is stored in a separate sidecar file with an additional .txt suffix appended
- CSV Points (*.csv) - the file contains only points and the block model definition and block size information is not retained
- Datamine (*.dm)
To export a sub-blocked model, right-click on the model in the project tree and select Export. Select whether you would like to save the file as a CSV Block Model File (*.csv) or a Datamine file (*.dm). Enter a name and location for the file and click Save.
If you wish to export the model in one of the CSV formats, select CSV Block Model Files (*.csv) in the Export Block Model window. You will be able to choose between the three CSV formats in the next step.
If you select CSV Block Model File you will be prompted to select a specific CSV file format: one with an embedded metadata header, one with a sidecar *.txt file containing the metadata information or a file containing only points data with no associated metadata.
The rest of this topic provides more information about exporting sub-blocked models in CSV and Datamine formats.
When you choose to export an octree block model in CSV format, you must first choose the type of CSV export. Options are:
- CSV Octree Block Model (*.csv) - this has an embedded header containing the octree block model definition
- CSV Octree Block Model + Text header (*.csv, *.csv.txt) - the octree block model definition is stored in a separate sidecar file with an additional .txt suffix appended
- CSV Points (*.csv) - the file contains only points and the block model definition and block size information is not retained
Click Next and work through the steps.
Choose which objects will be included in the exported file. The Available items list includes all evaluations made onto the model.
Click Next.
If you have the Leapfrog Edge extension, you can use a Query filter to filter rows out of the data exported.
This is different from exporting filters as columns, as selected in the previous step.
The second option in this window is useful when all block results are consistently the same non-Normal status. Select from Error, Without value, Blank or Outside; all rows that consistently show the selected statuses will not be included in the exported file.
Click Next.
There are three encoding options for Numeric Precision:
- The Double, floating point option provides precision of 15 to 17 significant decimal places.
- The Single, floating point option provides precision of 6 to 9 significant decimal places.
- The Custom option lets you set a specific number of decimal places.
To change either the Centroid and size precision and Value precision options, untick the box for Use default precision and select the required option.
Click Next.
When a block model is exported, non-Normal status codes can be represented in the exported file using custom text sequences.
The Status Code sequences are used for category status codes and filter status codes exported as columns. For filter status codes, Boolean value results will show FALSE and TRUE for Normal values or the defined Status Codes for non-Normal values.
Boolean values on block models are only available if you have the Leapfrog Edge extension.
Numeric Status Codes can be represented using custom text sequences. This is optional; if no separate codes are defined for numeric items, the defined Status Codes will be used.
Click Next.
The selection you make will depend on the target for your exported file. You can choose a character set and see what changes will be made.
Once you have worked through these steps, a summary of the selected options will be displayed. If you need to make any changes, you can work back through the steps. Once you’re satisfied with the settings chosen, click Export to save the file.
When exporting an octree block model in Datamine format, work through the following steps.
Choose which objects will be included in the exported file. The Available items list includes all evaluations made onto the model.
Click Next.
If you have the Leapfrog Edge extension, you can use a Query filter to filter rows out of the data exported.
This is different from exporting filters as columns, as selected in the previous step.
The second option in this window is useful when all block results are consistently the same non-Normal status. Select from Error, Without value, Blank or Outside; all rows that consistently show the selected statuses will not be included in the exported file.
Click Next.
When a sub-blocked model is exported, non-Normal status codes can be represented in the exported file using custom text sequences.
When exporting octree block models in Datamine format, non-Normal category numeric status codes can be represented in the exported file using custom text sequences. Numeric status codes must be a number or blank. Boolean values are exported using values 0 for false and 1 for true; specify if non-Normal values should be represented by 0 or by the numeric status codes.
Boolean Status Codes on sub-blocked models are only available if you have the Leapfrog Edge extension
Click Next.
The selection you make will depend on the target for your exported file. You can choose a character set and see what changes will be made.
Click Next.
When exporting an octree block model in Datamine format, column names for the evaluated objects have a maximum length of 8 characters. Leapfrog Geo will recommend truncated column names, but if you wish to use different abbreviations, click on the item’s New Name to edit it.
Once you have worked through these steps, a summary of the selected options will be displayed. If you need to make any changes, you can work back through the steps. Once you’re satisfied with the settings chosen, click Export to save the file.
The selections you make when you export a block model will be saved. This streamlines the process of subsequent exports of the model.
Got a question? Visit the Seequent forums or Seequent support
© 2022 Bentley Systems, Incorporated