TVTK

T V T K TVTK TVTK


TVTK是在VTK基础上用traits进行了封装


TVTK库官方文档

http://www.vtk.org/doc/nightly/html/annotated.html


安装

pip install vtk  -i http://pypi.douban.com/simple/  --trusted-host pypi.douban.com --user
pip install mayavi -i http://pypi.douban.com/simple/  --trusted-host pypi.douban.com --user
pip install pyqt5 -i http://pypi.douban.com/simple/  --trusted-host pypi.douban.com --user

安装成功测试

from tvtk.tools import tvtk_doc
tvtk_doc.main()
from tvtk.api import tvtk
s = tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0)
print(s)

在这里插入图片描述

CubeSource对象的属性

在这里插入图片描述

CubeSource对象的方法

在这里插入图片描述

Tvtk库的基本三维对象

在这里插入图片描述

可视化一个长方体

# 显示长方体的实例
# 1.导入库
from tvtk.api import tvtk
# 2.创建一个长方体数据源,并且同时设置长宽高
s = tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0)
# 3.使用PolyDataMapper将数据转换为图形数据
m = tvtk.PolyDataMapper(input_connection = s.output_port)
# 4.创建一个Actor
a = tvtk.Actor(mapper=m)
# 5.创建一个Renderer,将Actor添加进去
r = tvtk.Renderer(background=(0,0,0))
r.add_actor(a)
# 6.创建一个RenderWindow(窗口),将Renderer添加进去
w = tvtk.RenderWindow(size=(300,300))
w.add_renderer(r)
# 7.创建一个RenderWindowInteractor(窗口的交互工具)
i = tvtk.RenderWindowInteractor(render_window = w)
# 8.开启交互
i.initialize()
i.start()


在这里插入图片描述

显示一个长方体

原始数据转换为屏幕上图像,需要以下的TVTK对象共同协调完成:

  1. tvtk.CubeSource
  2. tvtk.PolyDataMapper
  3. tvtk.Actor
  4. tvtk.Renderer
  5. tvtk.RenderWindow
  6. tvtk.RenderWindowInteractor

ok,ok,ok,重点来了

在TVTK中,这种对象之间协调完成工作的过程被称作管线(Pipeline)


管线技术(Pipeline,流水线)

  1. 可视化管线(Visualization Pipeline):将原始数据加工成图形数据的过程。
  2. 图形管线(Graphics Pipeline) :图形数据加工为我们所看到的图像的过程。(将三维图形数据在二维平面进行展示

在这里插入图片描述
在这里插入图片描述

# 创建一个长方体数据源,并且同时设置长宽高
s = tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0)
# 使用PolyDataMapper将数据转换为图形数据
m = tvtk.PolyDataMapper(input_connection = s.output_port)

在这里插入图片描述
在这里插入图片描述

# 创建一个Actor
a = tvtk.Actor(mapper=m)
# 创建一个Renderer,将Actor添加进去
r = tvtk.Renderer(background=(0,0,0))
r.add_actor(a)
# 创建一个RenderWindow(窗口),将Renderer添加进去
w = tvtk.RenderWindow(size=(300,300))
w.add_renderer(r)
# 创建一个RenderWindowInteractor(窗口的交互工具)
i = tvtk.RenderWindowInteractor(render_window = w)

使用ivtk显示立方体的程序

# 使用ivtk显示立方体的程序
from tvtk.api import tvtk
from tvtk.tools import ivtk
from pyface.api import GUI

s = tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0)
m = tvtk.PolyDataMapper(input_connection = s.output_port)
a = tvtk.Actor(mapper = m)

# 创建一个带Crust的窗口
gui = GUI()
win = ivtk.IVTKWithCrustAndBrowser()
win.open()
win.scene.add_actor(a)

# 开始界面消息循环
gui.start_event_loop()

在这里插入图片描述

def event_loop():
	from pyface.api import GUI
	gui = GUI()
	gui.start_event_loop()

照相机

在这里插入图片描述

照相机属性

在这里插入图片描述

实体

在这里插入图片描述

场景编辑器

在这里插入图片描述

TVTK的数据集

  • 点(Point)和数据(Data)
  • 点之间:连接vs非连接
  • 多个相关的点组成单元(Cell)
  • 点的连接:显式vs隐式
  • 数据:标量(Scalar) vs矢量(Vector)
    在这里插入图片描述
    在这里插入图片描述

1.数据集-Imagedata

ImageData表示二维或三维图像的数据结构。
在这里插入图片描述

参数

在这里插入图片描述

from tvtk.api import tvtk
img = tvtk.ImageData(spacing=(1,1,1),origin=(1,2,3),dimensions=(3,4,5))
print(img.get_point(0))
for n in range(6):
    print( "%.1f,%.1f,%.1f"% img.get_point(n))

在这里插入图片描述

数据集-RectilinearGrid

RectilinearGrid:间距不均匀的网格,所有点都在正交的网格上。
在这里插入图片描述

from tvtk.api import tvtk
import numpy as np

x = np.array([0,3,9,15])
y = np.array([0,1,5])
z = np.array([0,2,3])
r = tvtk.RectilinearGrid()
r.x_coordinates = x
r.y_coordinates = y
r.z_coordinates = z
r.dimensions = len(x),len(y),len(z)

数据集-StructuredGrid

StructuredGrid:创建任意形状的网格,需要指定点的坐标。
在这里插入图片描述

数据集-Polydata

PolyData:由一系列的点、点之间的联系以及由点构成的多边形组成。
在这里插入图片描述

TVTK模型读取

在这里插入图片描述

from tvtk.api import tvtk
from tvtkfunc import ivtk_scene,event_loop

s = tvtk.STLReader(file_name = "python.stl")
m = tvtk.PolyDataMapper(input_connection = s.output_port)
a = tvtk.Actor(mapper = m)

win = ivtk_scene(a)
win.scene.isometric_view()
event_loop()

TVTK MultiBlock数据读取Plot3D

  • 网格(XYZ文件)
  • 空气动力学结果(Q文件)
  • 通用结果

在这里插入图片描述
在这里插入图片描述

from tvtk.api import tvtk

def read_data():# 读入数据
    plot3d = tvtk.MultiBlockPLOT3DReader(
            xyz_file_name="combxyz.bin",#网格文件
            q_file_name="combq.bin",#空气动力学结果文件
            scalar_function_number=100,#设置标量数据数量
            vector_function_number=200#设置矢量数据数量
            )
    plot3d.update()
    return plot3d

plot3d = read_data()
grid = plot3d.output.get_block(0)
### TVTK 安装问题解决方案 对于TVTK安装过程中遇到的问题,可以采取以下措施来确保顺利安装并解决问题。 #### 1. 环境准备 为了确保TVTK及其依赖项能够正常工作,建议创建一个新的虚拟环境,并激活该环境。这有助于避免与其他已安装包之间的冲突[^1]。 ```bash conda create --name myenv python=3.8 conda activate myenv ``` #### 2. VTK 版本兼容性 需要注意的是,在某些情况下,特定版本的VTK可能与TVTK存在不兼容的情况。根据描述中的情况,应该选择合适的VTK版本进行安装。如果使用Python 3.8,则应下载对应于此Python版本的VTK whl文件[VTK‑8.2.0‑cp38‑cp38‑win_amd64.whl]。然而,考虑到pip3仅支持VTK 9.0以上版本的说法可能存在误导,因此推荐尝试更高版本的VTK以获得更好的稳定性和功能特性。 #### 3. 安装过程 按照给定的方法手动下载适合操作系统的whl文件后,可以通过`pip3 install`命令完成VTK的安装。接着继续安装Mayavi和其他必要的库如PyQt5。具体命令如下所示: ```bash pip3 install path\to\VTK‑8.2.0‑cp38‑cp38‑win_amd64.whl pip3 install mayavi==4.7.3 pip3 install PyQt5 ``` 注意替换实际路径到所下载的`.whl`文件位置。 #### 4. 验证安装成功与否 一旦上述步骤执行完毕,可通过简单的测试脚本来验证TVTK是否已经正确加载。下面是一个基本的例子用于确认API接口能否正常使用[^2]: ```python from tvtk.api import tvtk print(tvtk.__version__) ``` #### 5. 处理潜在错误 如果有任何构建类别的异常发生,比如提到过的`build_tvtk_classes_zip`函数调用失败等问题,可能是由于缺少编译工具链或者源码配置不当引起的。此时应当检查官方文档获取最新的指导说明,并考虑更新至最新版软件包以及其依赖关系[^3]。 另外,当遇到类似于`not_implemented_message.format(ETSConfig.toolkit)`这样的提示时,通常意味着当前环境中缺失了图形界面的支持组件或是选择了不受支持的操作平台/架构组合。这时需参照相关框架的要求调整设置或更换其他替代方案[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值