-
Notifications
You must be signed in to change notification settings - Fork 2
Creating a Geologic Model Using Gempy
bsomps edited this page Dec 12, 2024
·
34 revisions
This operator uses the GemPy V3 module to compute geological surfaces from orientation and formation data. The workflow integrates with Blender's georeferenced 3D environment, allowing users to create geologically and spatially accurate models.
The GemPy Modeller feature enables users to:
- Set model extents using a cube object in the Blender scene.
- Define formations and orientations based on objects in specified collections.
- Organize formations into stratigraphic or fault series with customizable relations.
- Generate surfaces for each stratigraphic or fault series using the GemPy engine.
-
Georeferenced Extents: Define model boundaries using a cube object to set
xmin
,xmax
,ymin
,ymax
,zmin
, andzmax
. - Formation and Orientation Data: Extract custom properties (e.g., azimuth, dip) from objects to create input CSV files for GemPy.
-
Series Management: Organize formations into stratigraphic or fault series, with user-defined order and relations (e.g.,
Erode
,Onlap
,Basement
). - Surface Generation: Compute and visualize geologic surfaces directly in Blender.
- Input data can be either curve object collections (drill hole interval data) or mesh objects collections (point data).
- If point or interval data is brought in with fields
Azimuth
,Dip
, andPolarity
then your custom properties in Blender will reflect these values, if not, thenAzimuth
,Dip
, andPolarity
fields will auto-populate with azimuth=0, dip=0, and polarity=1. Thename
field can be generated using the manager operator. For example, if you stylize your objects based on the a categorical property calledrock type
then thisrock type
name will become the name in the outliner.
- Create a cube object in the scene and position it to enclose the area of interest. TIP -- Set the cube object to appear as wireframe so you can see what it encompasses.
- Select the cube in the "GemPy Modeller" panel as the Extents Object.
- The cube's bounding box will define the model extents (xmin, xmax, ymin, ymax, zmin, zmax).
- In the "GemPy Modeller" panel, choose collections containing formation points and orientation objects:
-
Formations Collection: Mesh or curve objects representing the positions of geological formations. Note that the code generate a CSV compatible with GemPy based on the selected collection. This means each object will become a row in the CSV file and derive the
name
from the name presented in the outliner, thex
,y
, andz
location from the transform table in blender. -
Orientations Collection: Objects with custom properties (
azimuth
,dip
,polarity
) representing structural orientations. Note that the code generate a CSV compatible with GemPy based on the selected collection. This means each object will become a row in the CSV file and derive thename
from the name presented in the outliner, thex
,y
, andz
location from the transform table in blender, and theazimuth
,dip
andpolarity
from the custom properties.
-
Formations Collection: Mesh or curve objects representing the positions of geological formations. Note that the code generate a CSV compatible with GemPy based on the selected collection. This means each object will become a row in the CSV file and derive the
NOTE you'll notice in your outliner that if you have, say 10 objects named 'Sandstone' that they will appear Sandtone.001, Sandstone.002, Sandstone.003 ect.. this is OK, when the code generates the CSV for GemPy, it removes all concatenated numbers so they will appear as just 'Sandstone'
- Add Stratigraphic Series or Fault Series:
- Stratigraphic series can be set to
Erode
,Onlap
, orBasement
. - Fault series are automatically categorized as
Fault
.
- Stratigraphic series can be set to
- Specify the order of each series to represent geologic time (0 = youngest).
- Use the panel to assign formations to each series.
- Click the Compute Model button to generate geological surfaces.
- GemPy will calculate surfaces based on the input extents, formations, orientations, and series relations.
- The computed surfaces are added as mesh objects to a new collection in Blender.
- Each surface mesh is assigned a unique material with colors derived from the GemPy series.
- Refinement Levels: Adjust refinement (default = 6) for smoother or coarser surfaces.
- Lith Blocks: The current implementation does not support lith block generation directly. Lith blocks can be imported as point clouds and processed manually.
- Fault Relations: Fault relations are dynamically created based on series order.
-
Console Feedback: Check the Blender Console (
Window → Toggle System Console
) for progress and details during model computation.
- Ensure all objects in the selected collections have the necessary custom properties (
azimuth
,dip
,polarity
). - Use collections with clear and consistent naming to simplify organization.
- Work with small-to-moderate-sized datasets for optimal performance.
For more details about GemPy, visit the GemPy documentation.