文章目录
- 1. vedo和它支持的功能简介
- 1.1 安装vedo
- 1.2 命令行接口
- 1.3 导出3D文件
- 1.4 文件格式转换
- 2. vedo模块功能概览
- 2.1 绘制和渲染
- `visual` 管理可视化、对象及其属性的显示的基类
- `plotter` 3D渲染
- `colors` 定义和显示颜色
- `dolfin` FEniCS/Dolfin库的支持
- 2.2 图形数据管理
- `mesh` 多边形网格
- `pointcloud` 点云
- `shapes` 简单或复杂的几何图形
- `volume` 使用体素
- `grids` 四面体网格
- `image` 普通2D图片
- `assembly` 图形对象组合
- `pyplot` 高级绘制功能
- `core` 为不同的vedo对象提供功能的基类
- `transformations` 线性或非线性变换
- 2.3 附加功能和配置
- `addons` 添加附带的轴、图例、光源等
- `applications` 可交互的功能
- `file_io` 读入和导出
- `utils` 公用工具
- `interactor_modes` 自定义交互模式
- `setting` 改变全局行为和风格的设置
- 3. 模块类的继承关系
- 3.1 core、visual、volume
- 3.2 grids
- 3.3 pointcloud
- 3.4 mesh
- 3.5 shapes
- 3.6 assembly
- 3.7 addons
- 3.8 applications
1. vedo和它支持的功能简介
vedo是用于3D对象和点云的科学分析的python模块。基于VTK和numpy实现。
1.1 安装vedo
pip install vedo
测试
import vedo
vedo.Cone().show(axes=1).close()
1.2 命令行接口
vedo库包含了命令行接口,可以使用vedo --help
查看。
1.3 导出3D文件
在弹出的3D场景窗口,按E
键,可以把当前的3D场景保存为一个普通的numpy文件。
按F
可以导出为html网页。
1.4 文件格式转换
使用命令行转换文件格式
# 将obj格式转为ply格式
vedo --convert bunny.obj --to ply
2. vedo模块功能概览
2.1 绘制和渲染
visual
管理可视化、对象及其属性的显示的基类
类或方法 | 说明 |
---|
CommonVisual | 管理所有对象的公共可见项的类 |
PointsVisual | 管理点对象的可见项的类 |
VolumeVisual | 管理体积对象的可见项的类 |
MeshVisual | 管理体积对象的可见项的类 |
ImageVisual | 管理所有对象的公共可见项的类 |
Actor2D | 对vtkActor2D 的封装 |
LightKit | 光工具套件,包括3种光源,主光灯、补光灯、头灯 |
plotter
3D渲染
类或方法 | 说明 |
---|
Plotter | 管理对象的主类 |
show | 在空白页创建Plotter 实例,并展示给定的对象 |
close | 关闭最后创建的Plotter |
colors
定义和显示颜色
类或方法 | 说明 |
---|
printc | 使用各种颜色输出内容到终端 |
printd | 输出关于环境的调试信息。局部变量会输出它们的当前值。 |
get_color | 将其它格式的颜色转换为(r,g,b) 格式 |
get_color_name | 找最接近的颜色的名称 |
color_map | 将数值映射到色阶 |
build_palette | 通过在HSV或RGB空间线性插值生成N个颜色 |
build_lut | 在查找表中生成颜色 |
dolfin
FEniCS/Dolfin库的支持
类或方法 | 说明 |
---|
plot | 绘制对象。输入的对象除了Mesh 、Volume 外,还可以是dolfin.Mesh 、dolfin.MeshFunction 、dolfin.Expression 、dolfin.Function |
2.2 图形数据管理
mesh
多边形网格
类或方法 | 说明 |
---|
Mesh | 创建一个由vedo.PointCloud 派生的Mesh 的实例 |
pointcloud
点云
类或方法 | 说明 |
---|
Points | 点云 |
Point | 创建一个简单的点 |
CellCenters | 在任意类型对象的单元格的中心生成Points |
merge | 输入对象组合,创建新的Mesh 或Points 。类似Assembly ,但是merge会让输入的对象称为一个单独的实体 |
fit_line | 通过点拟合线 |
fit_circle | 通过3D点拟合圆 |
fit_plane | 一组点拟合一个平面 |
fit_sphere | 一组点拟合一个球体 |
pca_ellipse | 创建包含指定百分比的点的2D椭圆,PCA用来计算椭圆方向 |
pca_ellipsoid | 创建包含指定百分比的点的椭球体,PCA用来计算椭圆方向 |
shapes
简单或复杂的几何图形
类或方法 | 说明 |
---|
Maker | 生成标记。一般和Glyph 联用 |
Line | 构造两个点之间的线段 |
DashedLine | 构造两个点之间的虚线。建议使用Line.pattern() 。 |
RoundedLine | 生成指定宽度、穿过一系列点的2D线段,线段的边缘是圆的 |
Tube | 沿着点集定义的线段,创建一个管 |
Tubes | 在Lines 对象的周围创建管 |
ThickTube | 沿着线创建带厚度的管 |
Lines | 从两个列表的对应点之间创建线段 |
Spline | 找到穿过点集的B样条曲线。 |
KSpline | 返回准确穿过所有点的Kochanek样条曲线 |
CSpline | 返回准确穿过所有点的Cardinal样条曲线 |
Bezier | 生成贝塞尔曲线,连接第一个和最后一个点。 |
Brace | 创建花括号 |
NormalLines | 创建Glyph ,在单元格中心或网格顶点显示法线 |
Ribbon | 联结两条线段,生成它们之间的平面 |
Arrow | 指定起点、终点和尺寸,创建3D箭头。 |
Arrows | 从两个列表的对应点之间创建箭头 |
Arrow2D | 创建2D箭头 |
Arrows2D | 从两个列表的对应点之间创建2D箭头 |
FlatArrow | 通过联结两条线段,在3D空间创建2D箭头 |
Polygon | 在xy平面创建多边形 |
Triangle | 根据空间中的3个点创建三角形 |
Rectangle | 在xy平面创建矩形 |
Disc | 创建2D圆环 |
Circle | 创建圆 |
GeoCircle | 创建圆,其形状像是投影在地图上,越靠近两极就越扁 |
Arc | 在两点之间创建圆弧 |
Star | 创建2D五角星 |
Star3D | 创建3D五角星 |
Cross3D | 创建3D十字形 |
IcoSphere | 创建由一致的三角形网格组成的球体 |
Sphere | 创建球体 |
Spheres | 创建大量的球体 |
Earth | 创建表示地球的带纹理的网格 |
Ellipsoid | 创建3D椭圆体 |
Grid | 均匀或不均匀的2D格子 |
TessellatedBox | 创建多个四元组构成的立方体网格 |
Plane | 创建平面 |
Box | 创建指定大小的框 |
Cube | 创建立方体 |
Spring | 创建弹簧模型 |
Cylinder | 指定高度和半径,创建圆柱体 |
Cone | 指定高度和半径,创建圆锥体 |
Pyramid | 创建椎体 |
Torus | 创建圆环 |
Paraboloid | 创建抛物线体 |
Hyperboloid | 创建双曲线体 |
TextBase | 文本的基类,不可实例化 |
Text3D | 创建表示文本的3D多边形网格 |
Text2D | 创建2D文本 |
CornerAnnotation | 使用2D文本在窗口角落加注释 |
Latex | 渲染Latex文本和公式 |
Glyph | 网格之间的公共顶点定义为glyph ,可以控制其方向和颜色 |
Tensors | 张量,其几何学表示在一个区域或一组点上定义 |
ParametricShape | 用于演示的内置图形集 |
ConvexHull | 由点集创建2D或3D的凸面包 |
VedoLogo | 创建3D的vedo图标 |
volume
使用体素
grids
四面体网格
类或方法 | 说明 |
---|
UnstructuredGrid | 对vtk的UnstructuredGrid 对象的支持 |
TetMesh | 描述四面体网格的类 |
RectilinearGrid | 创建直线网格的数据集,其中的边都平行于坐标轴 |
StructuredGrid | 创建结构化网格的数据集,其中的边不需要和坐标轴平行 |
image
普通2D图片
类或方法 | 说明 |
---|
Image | 用于在3D场景展示2D图片的类 |
assembly
图形对象组合
类或方法 | 说明 |
---|
Group | 创建包含通用对象组 |
Assembly | 组合多个对象,将其视为单个的新对象 |
procrustes_alignment | 使用procrustes 算法对齐若干网格对象,放在Assembly 中返回 |
pyplot
高级绘制功能
类或方法 | 说明 |
---|
Figure | 图形的格式化类 |
Histogram1D | 1D直方图 |
Histogram2D | 2D直方图 |
PlotXY | 在x和y坐标系进行绘制的图形类 |
PlotBars | 绘制柱状图的图形类 |
plot | 绘制2D的线图或点图,变量x对应变量y |
histogram | 根据1D和2D数组生成直方图 |
fit | 带有参数误差和误差带的多项式拟合。支持x和y的误差带。 |
pie_chart | 圆环图或饼图 |
violin | 小提琴图 |
whisker | 从一维数据集创建箱形图中间的条带 |
streamplot | 生成矢量场域的流线图 |
matrix | 生成矩阵,或一个带标签的2D颜色编码图 |
DirectedGraph | 有向图。由节点和连接节点的边组成的图,节点不需要位置信息,其位置只由相互之间的联系决定。 |
core
为不同的vedo对象提供功能的基类
类或方法 | 说明 |
---|
DataArrayHelper | 仅内部使用。协助类管理与点、面相关的数据 |
CommonAlgorithms | 公共方法 |
PointAlgorithms | 点云的方法 |
VolumeAlgorithms | 立体对象的方法 |
transformations
线性或非线性变换
类或方法 | 说明 |
---|
LinearTransform | 线性变换 |
NonLinearTransform | 非线性变换 |
TransformInterpolator | 在线性变换之间插值 |
spher2cart | 球形坐标转换为笛卡尔坐标 |
cart2spher | 笛卡尔坐标转换为球形坐标 |
cart2cyl | 笛卡尔坐标转换为圆柱坐标 |
cyl2cart | 圆柱坐标转换为笛卡尔坐标 |
cyl2spher | 圆柱坐标转换为球形坐标 |
spher2cyl | 球形坐标转换为圆柱坐标 |
cart2pol | 笛卡尔坐标转换为极坐标 |
pol2cart | 极坐标转换为笛卡尔坐标 |
笛卡尔坐标系是直角坐标系和斜坐标系的统称。
2.3 附加功能和配置
addons
添加附带的轴、图例、光源等
类或方法 | 说明 |
---|
ScalarBar | 2D标度条 |
ScalarBar3D | 3D标度条 |
Slider2D | 2D滑块 |
Slider3D | 3D滑块 |
Icon | 添加图标网格 |
LegendBox | 2D图例框 |
Light | 光源 |
Axes | 自定义轴 |
RendererFrame | 渲染框线 |
Ruler2D | 2D标尺 |
Ruler3D | 3D标尺 |
RulerAxes | 标尺轴 |
DistanceTool | 测距工具 |
DrawingWidget
SplineTool | 曲线工具 |
Goniometer | 角度计 |
ButtonWidget Button | 按钮 |
Flagpost | 描述性标记 |
ProgressBarWidget | 进度条 |
BoxCutter | 立方体切割控件 |
PlaneCutter | 平面切割控件 |
SphereCutter | 球体切割控件 |
applications
可交互的功能
类或方法 | 说明 |
---|
Browser | 通过一个滑块查看一系列的vedo对象 |
IsosurfaceBrowser | 生成由滑块控制的体积等值面 |
FreeHandCutPlotter | 编辑网格的工具 |
RayCastPlotter | 使用光线投射做立体渲染 |
Slicer2DPlotter | 面向相机的一个切片,可以任意朝向 |
Slicer3DPlotter | 创建带有切面的渲染窗口 |
Slicer3DTwinPlotter | 创建两个并行的带有3D切片器的立体图形 |
MorphPlotter | 带有3个渲染窗口的绘制器,分别表示源、目标和扭曲的网格 |
SplinePlotter | 可以交互式的画曲线的绘制器 |
AnimationPlayer | 带有播放/暂停、快进/后退和滑块功能的绘制器 |
file_io
读入和导出
类或方法 | 说明 |
---|
load | 从文件或链接导入vedo对象 |
read | 从文件读取vedo对象 |
download | 从URL检索对象,存到本地,返回本地路径 |
gunzip | 解压.gz 文件到临时文件,返回临时文件的路径 |
loadStructuredPoints | 从文件导入vtkStructuredPoints 对象 |
loadStructuredGrid | 从文件导入vtkStructuredGrid 对象 |
write | 将对象存到文件。支持的文件格式:vtk、vti、ply、obj、stl、byu、vtp、vti、mhd、xyz、xml、tif、png、bmp |
save | 将对象存到文件 |
export_window | 把渲染场景导出到HTML、X3D或Numpy文件 |
import_window | 从Numpy的NPZ文件导入整个场景 |
load_obj | 从OBJ文件导入网格对象集 |
screenshot | 保存当前渲染窗口的截图 |
ask | 在命令行问问题,返回字符串格式的回答。 |
Video | 从某个渲染窗口生成视频 |
utils
公用工具
类或方法 | 说明 |
---|
OperationNode | 用于跟踪操作 |
ProgressBar | 在终端打印进度条的类 |
progressbar | 在终端打印进度条的方法 |
Minimizer | 使用Nelder-Mead算法的函数最小值查找器 |
geometry | 使用vtkGeometryFilter 。 用于从任意类型的数据集中提取几何图形 |
is_sequence | 检查输入对象是否可迭代 |
lin_interpolate | 把rangeX 范围内的变量x 线性插入rangeY 范围 |
vector | 返回表示向量的3D numpy数组 |
mag | 获取向量或向量组的长度 |
mag2 | 获取向量或向量组长度的平方 |
versor | 返回单位向量 |
precision | 返回以指定精度表示的值的字符串 |
round_to_digit | 把实数舍入到指定有效位数 |
point_in_triangle | 判断一个点是否在另外三个点组成的三角形内 |
point_line_distance | 计算一个点到另外两个点连线的距离 |
closest | 返回给定的点和点集中距离最近的点 |
grep | 过滤文件中以特定标志开头的行 |
make_bands | 把列表中的值分到等值的波段中。 |
pack_spheres | 把球体打包到边界框中 |
humansort | 以人更期望的方式对列表进行排序,就地修改原列表 |
print_histogram | 在终端打印直方图 |
print_inheritance_tree | 打印类的继承树 |
camera_from_quaternion | 定义带有特定方向的vtkCamera |
camera_from_neuroglancer | 从neuroglancer状态字典定义vtkCamera |
camera_from_dict | 从字典定义vtkCamera |
camera_to_dict | 把vtkCamera 转为字典 |
oriented_camera | 生成指向特定方向的vtkCamera 对象,有确定的顶部方向,设置回退。 |
vedo2trimesh | 把vedo.mesh.Mesh 对象转为Trimesh.Mesh 对象 |
trimesh2vedo | 把Trimesh.Mesh 对象转为vedo.mesh.Mesh 或vedo.Assembly 对象 |
vedo2meshlab | 把vedo.mesh.Mesh 对象转为Meshlab对象 |
meshlab2vedo | 把Meshlab对象转为vedo.mesh.Mesh 对象 |
vedo2open3d | 把vedo.mesh.Mesh 对象转为open3d.geometry.TriangleMesh 格式 |
open3d2vedo | 把open3d.geometry.TriangleMesh 转为vedo.mesh.Mesh 对象 |
vtk2numpy | 把vtkDataArray 、vtkIdList 或vtTransform 转为numpy数组 |
numpy2vtk | 把numpy数组转为vtkDataArray |
get_uv | 由平面上的点x和它对应的uv坐标,求平面上另一点p的UV纹理坐标 |
andrews_curves | 计算给定数据的Andrews曲线。 |
interactor_modes
自定义交互模式
类或方法 | 说明 |
---|
MousePan | 通过拖动鼠标,移动拍摄场景 |
FlyOverSurface | 浏览某个切面 |
BlenderStyle | 使用Blender默认的按键绑定创建交互模式 |
setting
改变全局行为和风格的设置
类或方法 | 说明 |
---|
Settings | 全局行为和风格的一般设置 |
3. 模块类的继承关系
3.1 core、visual、volume
3.2 grids
3.3 pointcloud
3.4 mesh
3.5 shapes
3.6 assembly
3.7 addons
3.8 applications