在Gempy的核心模块中,Solution类中的try_compute_marching_cubes_on_the_regular_grid方法是用于对正则网格上的数据进行Marching Cubes计算的。该方法通过将插值网格中的数据点映射到正方形区域内并调用Scipy库中的voxelize
函数来生成网格。生成的三角面片可以用于可视化模型。
resolution
:用于控制网格分辨率的参数。类型为int,选择值应当大于1。
property_name
:选取的属性名称。类型为str。
方法返回一个tuple类型的数据,包含两个元素。第一项是一个数组,包含了每个三角面片的三个坐标点。第二项是一个数组,包含每个三角面片的颜色。
“No blocks found”:如果数据体被完全包含在正方体区域外,则会引发此异常,因为算法无法处理此情况。
“No voxels found”:如果抽样数据点全部被标记为无效,则无法生成网格,将引发此异常。
import gempy as gp
import numpy as np
# 创建gempy模型并加载数据
geo_model = gp.create_model('MyModel')
gp.init_data(geo_model, [0, 10, 0, 10, 0, 10], [5, 5, 5])
gp.set_data(geo_model, 'data', np.array([[5,5,5,2],[5,5,5,1]]), ['x', 'y', 'z', 'val'])
# 解决模型
sol = gp.compute_model(geo_model)
# 生成三角形网格
triangles, colors = sol.try_compute_marching_cubes_on_the_regular_grid(resolution=10, property_name='data')