管线(Pipeline)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| from tvtk.api import tvtk
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)
r = tvtk.Renderer(background=(0, 0, 0))
r.add_actor(a)
w = tvtk.RenderWindow(size=(300, 300))
w.add_renderer(r)
i = tvtk.RenderWindowInteractor(render_window=w)
i.initialize() i.start()
|
可视化管线
将原始数据加工成图形数据的过程
属性 |
说明 |
CubeSourece |
通过程序内部计算输出一组描述长方体的数据(PloyData) |
PolyDataMapper |
PolyData通过该映射器将数据映射为图形数据(mapper) |
图形管线
图形数据加工为我们所看到的图像的过程
属性 |
说明 |
Actor |
场景中的一个实体。它包括一个图形数据(mapper),具有描述该实体的位置,方向,大小的属性。 |
Renderer |
渲染的场景。它包括多个需要渲染的Actor |
RenderWindow |
渲染用的图形窗口,它包括一个或者多个Render |
RenderWindowInteractor |
给图形窗口提供一些用户交互功能,例如平移、旋转、放大缩小。这些交互式操作并不改变Actor或者图形数据的属性,只是调整场景中的照相机(Camera)的一些设置。 |
观察Tvtk的管线
使用ivtk显示立方体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 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)
gui = GUI() win = ivtk.IVTKWithCrustAndBrowser() win.open() win.scene.add_actor(a)
dialog = win.control.centralWidget().widget(0).widget(0) from pyface.qt import QtCore dialog.setWindowFlags(QtCore.Qt.WindowFlags(0x00000000)) dialog.show()
gui.start_event_loop()
|

照相机属性
属性 |
说明 |
clipping_plane |
它有两个元素,分别表示照相机到近、远两个裁剪 平面的距离。在这两个平面范围之外将不会显示 |
position |
照相机在三维空间中的坐标 |
focal_point |
照相机所聚焦的焦点坐标 |
view_up |
照相机的上方向矢量 |
数据集
- 点(Point)和数据(Data)
- 点之间:连接 VS 非连接
- 多个相关的点组成单元
- 点的连接:显示 VS 隐式
数据集的类型
数据集 |
点的连接 |
特点 |
ImageData |
隐式 |
二维或三维图像的数据结构 |
RectilinearGrid |
隐式 |
间距不均匀的网格,所有点都在正交的网格上 |
StructuredGild |
隐式 |
创建任意形状的网格,需要指定点的坐标 |
PolyData |
显式 |
由一系列的点、点之间的联系以及由点构成的多边形组成 |
Tvtk库的数据加载
TVTK模型读取
s = tvtk.STLReader(file_name = "stl文件名")
TVTK MultiBlock数据读取
- Plot3D
- 网格 (XYZ 文件)
- 空气动力学结果 (Q 文件)
- 通用结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 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)
|