接前面PyVista使用小记(一),继续了解PyVista 的基本用法。
PyVista 支持的 Filter
不同的数据集支持不同的Filter,考虑如下数据集:
- Dataset:所有数据类型的基类
- PolyData:适合表示表面网格
- UnstructuredGrid:适合表示体网格
- ImageData:适合表示规则网格数据
- Composite:用于组织多个数据集
简单列一下
基础几何处理 Filters
Filter名称 | Dataset | PolyData | UnstructuredGrid | ImageData | Composite | 用途描述 |
---|---|---|---|---|---|---|
clip | ✓ | ✓ | ✓ | ✓ | ✓ | 使用平面或函数切割模型 |
slice | ✓ | ✓ | ✓ | ✓ | ✓ | 创建截面,可支持多平面切割 |
threshold | ✓ | ✓ | ✓ | ✓ | ✓ | 基于标量数值范围筛选数据 |
extract_edges | × | ✓ | × | × | × | 提取模型边缘线框 |
decimate | × | ✓ | × | × | × | 简化网格,减少面数 |
smooth | × | ✓ | × | × | × | 平滑网格表面 |
compute_normals | × | ✓ | ✓ | × | × | 计算表面法向量 |
模型生成 Filters
Filter名称 | Dataset | PolyData | UnstructuredGrid | ImageData | Composite | 用途描述 |
---|---|---|---|---|---|---|
extrude | × | ✓ | × | × | × | 将 2D 形状沿方向向量拉伸成 3D |
ribbon | × | ✓ | × | × | × | 将线段转换为带状几何体 |
tube | × | ✓ | × | × | × | 将线段转换为管状几何体 |
delaunay_2d | × | ✓ | × | × | × | 从点云生成 2D 三角网格 |
delaunay_3d | × | ✓ | ✓ | × | × | 从点云生成 3D 四面体网格 |
reconstruct_surface | × | ✓ | × | × | × | 从点云重建 3D 表面 |
布尔操作 Filters
Filter名称 | Dataset | PolyData | UnstructuredGrid | ImageData | Composite | 用途描述 |
---|---|---|---|---|---|---|
boolean_difference | × | ✓ | × | × | × | 计算两几何体的差集 |
boolean_intersection | × | ✓ | × | × | × | 计算两几何体的交集 |
boolean_union | × | ✓ | × | × | × | 计算两几何体的并集 |
merge | × | ✓ | ✓ | × | ✓ | 合并多个几何体,不移除重叠部分 |
数据处理 Filters
Filter名称 | Dataset | PolyData | UnstructuredGrid | ImageData | Composite | 用途描述 |
---|---|---|---|---|---|---|
cell_centers | ✓ | ✓ | ✓ | ✓ | × | 计算网格单元的中心点 |
compute_gradient | ✓ | ✓ | ✓ | ✓ | × | 计算标量场的梯度 |
contour | ✓ | ✓ | ✓ | ✓ | × | 生成等值线/等值面 |
sample | ✓ | ✓ | ✓ | ✓ | × | 在指定点位置采样数据 |
probe | ✓ | ✓ | ✓ | ✓ | × | 使用一个数据集探测另一个数据集 |
变换 Filters
Filter名称 | Dataset | PolyData | UnstructuredGrid | ImageData | Composite | 用途描述 |
---|---|---|---|---|---|---|
translate | ✓ | ✓ | ✓ | ✓ | ✓ | 对几何体进行平移变换 |
rotate | ✓ | ✓ | ✓ | ✓ | ✓ | 对几何体进行旋转变换 |
scale | ✓ | ✓ | ✓ | ✓ | ✓ | 对几何体进行缩放变换 |
transform | ✓ | ✓ | ✓ | ✓ | ✓ | 使用 4x4 矩阵进行线性变换 |
特殊用途 Filters
Filter名称 | Dataset | PolyData | UnstructuredGrid | ImageData | Composite | 用途描述 |
---|---|---|---|---|---|---|
warp_by_scalar | ✓ | ✓ | ✓ | ✓ | × | 根据标量场对几何体进行变形 |
warp_by_vector | ✓ | ✓ | ✓ | ✓ | × | 根据向量场对几何体进行变形 |
streamlines | ✓ | × | ✓ | ✓ | × | 生成流线用于可视化矢量场 |
extract_surface | × | ✓ | ✓ | ✓ | × | 提取体数据的表面 |
简单例子
几个简单例子
Extrude(挤压、拉伸)
1 |
|
其中:
- vector:Direction and length to extrude the mesh in.
- capping:Control if the sweep of a 2D object is capped. The default is False, which differs from VTK’s default.
例子:
- 曲线拉伸成曲面
- 面拉伸成体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
Extrude Rotate(拉伸旋转)
1 2 3 4 5 6 7 8 9 10 |
|
其中:
- resolution:Number of pieces to divide line into.
- translation:Total amount of translation along the axis.
- dradius:Change in radius during sweep process.
- angle:The angle of rotation in degrees.
- capping:Control if the sweep of a 2D object is capped. The default is False, which differs from VTK’s default.
例子:
- 直线旋转拉伸成圆/圆锥
- 折线旋转拉伸成体
- 面旋转拉伸(旋转对称,或者螺旋)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
|
Extrude Trim(拉伸裁剪)
1 2 3 4 5 6 7 8 |
|
其中:
- direction:Direction vector to extrude.
- trim_surface:Surface which trims the surface.
- extrusion:Control the strategy of extrusion. One of the following:
- "boundary_edges"
- "all_edges"
- capping:Control the strategy of capping. One of the following:
- "intersection"
- "minimum_distance"
- "maximum_distance"
- "average_distance"
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
|
交、差、并
分为布尔操作和普通的操作:
操作类型 | 描述 | 结果 | 示例 | 使用场景 |
---|---|---|---|---|
布尔差集(boolean_difference) | 从第一个几何体中去除与第二个几何体相交的部分 | 返回不相交的部分 | 由球体1减去与球体2的重叠部分 | 物体差集,去除交叠部分 |
布尔交集(boolean_intersection) | 返回两个几何体的交叠部分 | 返回相交的部分 | 仅返回两个球体的交集部分 | 提取交集区域 |
布尔并集(boolean_union) | 合并两个几何体,返回它们的并集 | 返回两个几何体合并后的部分 | 合并两个球体得到一个新的物体 | 合并物体,得到完整区域 |
普通合并(merge) | 将两个几何体合并成一个,保留其所有部分 | 返回包含两个几何体的集合体 | 直接合并两个球体,包含重叠部分 | 合并物体为一个大物体,不改变形状 |
交集(intersection) | 返回两个几何体的交叠部分(交集区域) | 返回交集区域,通常为PolyData对象 | 提取两个球体的交集部分 | 提取交集区域,适用于提取重叠区域 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
|
生成8瓣空心圆柱体(一)
有前面的准备,可以做些简单的事情
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
|
生成8瓣空心圆柱体(二)
换一种方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
|
参考
- https://docs.pyvista.org/api/core/filters
- https://docs.pyvista.org/examples/01-filter/