文章目录
 
 - 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