Python的3D可视化库 - vedo (1)简介和模块功能概览

news2024/11/22 1:46:28

文章目录

  • 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管理所有对象的公共可见项的类
Actor2DvtkActor2D的封装
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绘制对象。输入的对象除了MeshVolume外,还可以是dolfin.Meshdolfin.MeshFunctiondolfin.Expressiondolfin.Function

2.2 图形数据管理

mesh 多边形网格

类或方法说明
Mesh创建一个由vedo.PointCloud派生的Mesh的实例

pointcloud 点云

类或方法说明
Points点云
Point创建一个简单的点
CellCenters在任意类型对象的单元格的中心生成Points
merge输入对象组合,创建新的MeshPoints。类似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沿着点集定义的线段,创建一个管
TubesLines对象的周围创建管
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 使用体素

类或方法说明
Volume使用体素数据集

grids 四面体网格

类或方法说明
UnstructuredGrid对vtk的UnstructuredGrid对象的支持
TetMesh描述四面体网格的类
RectilinearGrid创建直线网格的数据集,其中的边都平行于坐标轴
StructuredGrid创建结构化网格的数据集,其中的边不需要和坐标轴平行

image 普通2D图片

类或方法说明
Image用于在3D场景展示2D图片的类

assembly 图形对象组合

类或方法说明
Group创建包含通用对象组
Assembly组合多个对象,将其视为单个的新对象
procrustes_alignment使用procrustes算法对齐若干网格对象,放在Assembly中返回

pyplot 高级绘制功能

类或方法说明
Figure图形的格式化类
Histogram1D1D直方图
Histogram2D2D直方图
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 添加附带的轴、图例、光源等

类或方法说明
ScalarBar2D标度条
ScalarBar3D3D标度条
Slider2D2D滑块
Slider3D3D滑块
Icon添加图标网格
LegendBox2D图例框
Light光源
Axes自定义轴
RendererFrame渲染框线
Ruler2D2D标尺
Ruler3D3D标尺
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_interpolaterangeX范围内的变量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_dictvtkCamera转为字典
oriented_camera生成指向特定方向的vtkCamera对象,有确定的顶部方向,设置回退。
vedo2trimeshvedo.mesh.Mesh对象转为Trimesh.Mesh对象
trimesh2vedoTrimesh.Mesh对象转为vedo.mesh.Meshvedo.Assembly对象
vedo2meshlabvedo.mesh.Mesh对象转为Meshlab对象
meshlab2vedo把Meshlab对象转为vedo.mesh.Mesh对象
vedo2open3dvedo.mesh.Mesh对象转为open3d.geometry.TriangleMesh格式
open3d2vedoopen3d.geometry.TriangleMesh转为vedo.mesh.Mesh对象
vtk2numpyvtkDataArrayvtkIdListvtTransform转为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

volume
visual
core
Volume
VolumeVisual
PointsVisual
ImageVisual
CommonVisual
MeshVisual
Actor2D
PointAlgorithms
VolumeAlgorithms
CommonAlgorithms

3.2 grids

grids
TetMesh
UnstructuredGrid
RectilinearGrid
StructuredGrid
core.PointAlgorithms

visual.MeshVisual

3.3 pointcloud

pointcloud
CellCenters
Points
visual.PointsVisual

core.PointAlgorithms

3.4 mesh

mesh
Mesh
visual.MeshVisual

pointcloud.Points

3.5 shapes

shapes
Arc
Arrow
Arrow2D
Brace
ConvexHull
Cross3D
Cylinder
DashedLine
Disc
Earth
Ellipsoid
Grid
Hyperboloid
IcoSphere
Lines
NormalLines
Paraboloid
ParametricShape
Plane
Rectangle
RoundedLine
Sphere
Spheres
Spring
Star
Star3D
Tensors
TessellatedBox
Torus
Triangle
Tube
Tubes
Cube
Box
Pyramid
Cone
Arrows
Arrows2D
Glyph
Bezier
CSpline
KSpline
Spline
Line
Circle
GeoCircle
Polygon
FlatArrow
Ribbon
CornerAnnotation
Text3D
TextBase
Text2D
mesh.Mesh
visual.Actor2D

3.6 assembly

assembly
Assembly
Group
visual.CommonVisual

3.7 addons

addons
SplineTool
Button
LegendBox
Slider2D
Slider3D
BoxCutter
DrawingWidget
Icon
PlaneCutter
SphereCutter
DistanceTool
RendererFrame
Ruler2D
ProgressBarWidget
Flagpost
ButtonWidget
assembly.Group
shapes.Text2D
shapes.TextBase

3.8 applications

applications
plotter
Browser
IsosurfaceBrowser
FreeHandCutPlotter
RayCastPlotter
Slicer2DPlotter
Slicer3DPlotter
Slicer3DTwinPlotter
MorphPlotter
SplinePlotter
AnimationPlayer
Plotter

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2245021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

input file结合vue3和vant实现上传图片效果,并显示上传进度百分比%

这里写自定义目录标题 采用的dom结构是input file,label事件绑定,一下为代码传入参数为uploadNum实现效果如图上传中,图片1上传成功,图片2 采用的dom结构是input file,label事件绑定,一下为代码 传入参数为…

CSS优化file控件样式

<div class"file-box"><input type"button" class"btn" value"选择文件" /><inputtype"file"class"file"id"upimg"change"previewFiles"multiple/></div><!-- Vu…

AJAX笔记 (速通精华版)

AJAX&#xff08;Asynchronous Javascript And Xml&#xff09; 此笔记来自于动力节点最美老杜 传统请求及缺点 传统的请求都有哪些&#xff1f; 直接在浏览器地址栏上输入URL。点击超链接提交 form 表单使用 JS 代码发送请求 window.open(url)document.location.href urlwi…

某校园网登录界面前端加密绕过

前言 尝试对学校校园网登录框进行爆破&#xff0c;发现密码在前端被加密了 Burp抓包 抓包信息 DDDDD2022***&upass3d5c84b6fb1dc75987884f39c05b0e6a123456782&R10&R21&para00&0MKKey123456&v6ip From表单提交上来的文本这些参数&#xff0c;DDDD是…

《生成式 AI》课程 第3講 CODE TASK执行文章摘要的机器人

课程 《生成式 AI》课程 第3講&#xff1a;訓練不了人工智慧嗎&#xff1f;你可以訓練你自己-CSDN博客 任务1:总结 1.我们希望你创建一个可以执行文章摘要的机器人。 2.设计一个提示符&#xff0c;使语言模型能够对文章进行总结。 model: gpt-4o-mini,#gpt-3.5-turbo, import…

Github客户端工具github-desktop使用教程

文章目录 1.客户端工具的介绍2.客户端工具使用感受3.仓库的创建4.初步尝试5.本地文件和仓库路径5.1原理说明5.2修改文件5.3版本号的说明5.4结合码云解释5.5版本号的查找 6.分支管理6.1分支的引入6.2分支合并6.3创建测试仓库6.4创建测试分支6.5合并分支6.6合并效果查看6.7分支冲…

python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具

python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具 文章目录 python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具项目背景技术栈用户界面核心功能实现结果展示完整代码总结 在现代软件开发中&#xff0c;测试接口的有效性与响应情况变得尤为重要。本文将指导…

JavaScript的类型转换

类型转换 &#xff1a; 隐式转换和显示转换 一般的&#xff0c;默认单选框和多选框传过来的值都是字符串 JavaScript是弱数据类型&#xff1a;JavaScript不知道变量属于哪种类型&#xff0c;需要赋值了才清楚。 缺点&#xff1a;使用表单、prompt获取过来的数据默认是字符串类…

Spring Boot中使用AOP和反射机制设计一个基于redis的幂等注解,简单易懂教程

由于对于一些非查询操作&#xff0c;有时候需要保证该操作是幂等的&#xff0c;该帖子设计幂等注解的原理是使用AOP和反射机制获取方法的类、方法和参数&#xff0c;然后拼接形成一个幂等键&#xff0c;当下一次有重复操作过来的时候&#xff0c;判断该幂等键是否存放&#xff…

一文详细深入总结服务器选型

1. 题记&#xff1a; 服务器选型工作是项目规划检讨的一项非常重要的工作&#xff0c;本文详细深入总结服务器选型。 2. 服务器基础知识概览 2.1 服务器的定义与功能 2.1 .1 定义 服务器是一种高性能计算机&#xff0c;其设计目的是在网络中提供服务。它可以处理来自多个客…

接口测试用例设计的关键步骤与技巧解析!

简介 接口测试在需求分析完成之后&#xff0c;即可设计对应的接口测试用例&#xff0c;然后根据用例进行接口测试。接口测试用例的设计也需要用到黑盒测试用例设计方法&#xff0c;和测试流程与理论章节的功能测试用例设计的方法类似&#xff0c;设计过程中还需要增加与接口特…

WPF下 DataGrid加入序号列

先上代码&#xff1a; <DataGrid Name"DGV" AutoGenerateColumns"False" Grid.Row"0" Grid.Column"0" HorizontalGridLinesBrush"RoyalBlue" VerticalGridLinesBrush"Tomato" CanUserAddRows"False&qu…

WebSocket详解、WebSocket入门案例

目录 1.1 WebSocket介绍 http协议&#xff1a; webSocket协议&#xff1a; 1.2WebSocket协议&#xff1a; 1.3客户端&#xff08;浏览器&#xff09;实现 1.3.2 WebSocket对象的相关事宜&#xff1a; 1.3.3 WebSOcket方法 1.4 服务端实现 服务端如何接收客户端发送的请…

大模型本地部署实践:Ollama+Open-WebUI(MacOS)

目录 什么是Ollama Ollama安装 对话界面可视化&#xff1f;Open-WebUI&#xff01; 安装Open-WebUI 什么是Ollama Ollama是一个为简化大语言模型本地部署与交互的开源框架。它提供了用户友好的接口&#xff0c;帮助开发者和模型爱好者在没有依赖外部API的基础上高效地运行、…

12万字 | 企业智慧数字化运营平台重构建设项目实施技术方案

本项目旨在推动企业数字化运营平台的重构&#xff0c;以支持组织改革和数字化转型战略的实施&#xff0c;提升企业智慧化运营管理能力。项目将优化订单受理流程&#xff0c;增强业务受理能力&#xff0c;提高客户服务体验和内部管控能力&#xff0c;同时提升营销资源管理的制度…

基于Lora通讯加STM32空气质量检测WIFI通讯-分享

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着环境污染问题的日益严重&#xff0c;空气质量的监测与管理已经…

cesium for unity的使用

先聊聊导入 看到这里的因该能够知道&#xff0c;官网以及网上绝大多数的方法都导入不进来&#xff0c;那么解决方法如下: 两个链接&#xff1a;按照顺序依次下载这两个tgz和zip&#xff0c;其中tgz为主要部分&#xff0c;zip为示例工程项目 如果您要查看示例工程项目的话&am…

数据结构_图的遍历

深度优先搜索遍历 遍历思想 邻接矩阵上的遍历算法 void Map::DFSTraverse() {int i, v;for (i 0; i < MaxLen; i){visited[i] false;}for (i 0; i < Vexnum; i){// 如果顶点未访问&#xff0c;则进行深度优先搜索if (visited[i] false){DFS(i);}}cout << endl…

MySQL时间字段TIMESTAMP和DATETIME

SELECT global.time_zone, session.time_zone;查询数据库的全局时区和当前会话的时区信息&#xff0c;一般如果使用navicat进行连接&#xff0c;没有显示指定时区信息&#xff0c;会默认使用system_time_zone。 可以使用 SET time_zone 08:00; SELECT global.time_zone, sess…

AQS 理解 及不可重入锁实现

由于目前水平有限&#xff0c;只是写出作者目前对 aqs的简单理解&#xff0c;有错误还请评论指证 AQS是什么 Aqs是java.util.concurrent 包下的一个抽象队列 同步器类&#xff0c;被简写为英文AQS&#xff0c; 我认为 可以把他理解 为一个 实现 自定义 锁的 一个具体的框架 …