小结:

创建 数据对象

structuredGrid grid

使用contourfilter con

PolyDataMapper m

Actor a

使用

MaskPoint3D mask

glyph3D glyph

同上

生成数据

生成Actor

交给Renderer

放在Renderwindow中

显示

管线与数据加载#

pipline

分为两种一种

可视化管线 Visualization Pipeline

原始数据->图形数据

图形管线 Graphics Pipeline

图形数据->我们看到的图像

全流程

可视化管线tvtk对象

CubeSource PolyData对象

PolyDataMapper 对象 数据->图形数据

由 PolyData 的 output_port -> PolyDataMapper的input_connection

图形管线

可视化对象

Actor 包括一个场景实体,包括一个图形数据(mapper) ,具有实体的位置方向等信息

Renderer 渲染的场景 场景包含多个需要Actor

RenderWindow 渲染的窗口,包括多个Render

RenderWindowInteractor 提供一个用户交互功能

使用ivtk###

相机对象的属性

数据集###

分类

  • ImageData

    在数组中储存数据,在正交且等距的地方

    数据集构建的参数

  • RectilinearFrid

    表示间距不军训的网络,虽然正交但是不均匀

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)

for n in range(6):

print(r.get_point(n))

可以看到依次底层

  • StructuredGrid

    需要指定点的坐标

+Polydata 数据集

有一系列的点,点之间的练习

TVTK库的数据加##

从外部读入

vtk object 是 vtk 中大多数对象的基类

读取STL####

s=tvtk.STLReader(file_name="文件名")

plot3D的读取

+网格文件 XYZ文件

+动气动力学结果文件(Q文件)

+通用结果

Plot3d=tvtk.MUltiBlockPLOT3DReader(

xyz_file_name="combxyz.bin",网格文件

q_file_name="combp.pin",动气动力学结果文件

scalar_function_number=100, # 设置标量数据数量

vector_function_number=200, #设置矢量数据数量

)

Plot3d.update() 计算其输出数据

grid=Plot3d.output.get_block(0)

tvtk.ContourFilter()

tvtk符号化技术####



tvtk.Glyph3d()

由于矢量数据过于密集

使用类maskpoint

外轮轮廓可视化技术####

使用tvtk.StructuredGridOutlineFilter()

计算POlyData对象的外边框

一下是代码

readstll&bin&show them.ipny


from tvtk.api import tvtk
from ivtk_func import*
from tvtk.api import tvtk
from ivtk_func import*
In [4]: s=tvtk.STLReader(file_name="python.stl")# PolyData对象
In [5]: m=tvtk.PolyDataMapper(input_connection=s.output_port)
In [6]: from tvtk.api import tvtk
from ivtk_func import*
from tvtk.api import tvtk
from ivtk_func import*
a
from tvtk.api import tvtk
from ivtk_func import*
from tvtk.api import tvtk
from ivtk_func import*=tvtk.Actor(mapper=m)
In [7]: win=ivtk_scene(a)
win.scene.isometric_view()
win=ivtk_scene(a)
win.scene.isometric_view()
In [9]: event_loop()
In [2]: Plot3d=tvtk.MultiBlockPLOT3DReader(
xyz_file_name="combxyz.bin", #网格文件
q_file_name="combq.bin", #动气动力学结果文件
scalar_function_number=100, # 设置标量数据数量
vector_function_number=200, #设置矢量数据数量
)
Plot3d.update()
grid=Plot3d.output.get_block(0)
In [3]: print(type(Plot3d.output)) #MultiBlockDataSet
print(type(Plot3d.output.get_block(0)))#StructuredGrid
print(type(Plot3d.output.get_block(1)))#Nonetype
print(type(Plot3d)) #MultiPlot3dread_read
print(grid.dimensions) #网格文件的内容是List

print(type(grid.points))#Points 类型
print(grid.points.to_array())#Points array

print(type(grid))
print(grid.point_data.number_of_arrays) #网格中的点有四种数据
print(grid.point_data)


print(grid.point_data.scalars.name)
print(grid.point_data.vectors.name)

print("\n")
print(grid)


print("\n")
print(Plot3d)

print("\n")
print(grid.point_data)
<class 'tvtk.tvtk_classes.multi_block_data_set.MultiBlockDataSet'>
<class 'tvtk.tvtk_classes.structured_grid.StructuredGrid'>
<class 'NoneType'>
<class 'tvtk.tvtk_classes.multi_block_plot3d_reader.MultiBlockPLOT3DReader'>
[57 33 25]
<class 'tvtk.tvtk_classes.points.Points'>
[[ 2.66700006 -3.77476001 23.83292007]
[ 2.94346499 -3.74825287 23.66555977]
[ 3.21985817 -3.72175312 23.49823952]
...,
[ 15.84669018 5.66214085 35.7493782 ]
[ 16.17829895 5.66214085 35.7493782 ]
[ 16.51000023 5.66214085 35.7493782 ]]
<class 'tvtk.tvtk_classes.structured_grid.StructuredGrid'>
4
vtkPointData (0000012712511380)
Debug: Off
Modified Time: 413
Reference Count: 2
Registered Events:
Registered Observers:
vtkObserver (0000012714C3D3A0)
Event: 33
EventName: ModifiedEvent
Command: 00000127149B2B40
Priority: 0
Tag: 3
vtkObserver (0000012714C3CBC0)
Event: 33
EventName: ModifiedEvent
Command: 0000012714D622D0
Priority: 0
Tag: 1
Number Of Arrays: 4
Array 0 name = Density
Array 1 name = Momentum
Array 2 name = StagnationEnergy
Array 3 name = Velocity
Number Of Components: 8
Number Of Tuples: 47025
Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 )
Interpolate Flags: ( 1 1 1 1 1 0 0 1 )
Pass Through Flags: ( 1 1 1 1 1 1 1 1 )
Scalars:
Debug: Off
Modified Time: 392
Reference Count: 1
Registered Events: (none)
Name: Density
Data type: float
Size: 47025
MaxId: 47024
NumberOfComponents: 1
Information: 0000000000000000
Name: Density
Number Of Components: 1
Number Of Tuples: 47025
Size: 47025
MaxId: 47024
LookupTable: (none)
Vectors:
Debug: Off
Modified Time: 409
Reference Count: 1
Registered Events: (none)
Name: Velocity
Data type: float
Size: 141075
MaxId: 141074
NumberOfComponents: 3
Information: 0000000000000000
Name: Velocity
Number Of Components: 3
Number Of Tuples: 47025
Size: 141075
MaxId: 141074
LookupTable: (none)
Normals: (none)
TCoords: (none)
Tensors: (none)
GlobalIds: (none)
PedigreeIds: (none)
EdgeFlag: (none) Density
Velocity vtkStructuredGrid (0000012711A0B400)
Debug: Off
Modified Time: 413
Reference Count: 3
Registered Events:
Registered Observers:
vtkObserver (0000012714C3CD70)
Event: 33
EventName: ModifiedEvent
Command: 00000127149B2B00
Priority: 0
Tag: 1
Information: 0000012714D62280
Data Released: False
Global Release Data: Off
UpdateTime: 0
Field Data:
Debug: Off
Modified Time: 389
Reference Count: 1
Registered Events: (none)
Number Of Arrays: 1
Array 0 name = Properties
Number Of Components: 1
Number Of Tuples: 4
Number Of Points: 47025
Number Of Cells: 43008
Cell Data:
Debug: Off
Modified Time: 187
Reference Count: 1
Registered Events:
Registered Observers:
vtkObserver (0000012714C3CE60)
Event: 33
EventName: ModifiedEvent
Command: 0000012714D622D0
Priority: 0
Tag: 1
Number Of Arrays: 0
Number Of Components: 0
Number Of Tuples: 0
Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 )
Interpolate Flags: ( 1 1 1 1 1 0 0 1 )
Pass Through Flags: ( 1 1 1 1 1 1 1 1 )
Scalars: (none)
Vectors: (none)
Normals: (none)
TCoords: (none)
Tensors: (none)
GlobalIds: (none)
PedigreeIds: (none)
EdgeFlag: (none)
Point Data:
Debug: Off
Modified Time: 413
Reference Count: 1
Registered Events:
Registered Observers:
vtkObserver (0000012714C3CBC0)
Event: 33
EventName: ModifiedEvent
Command: 0000012714D622D0
Priority: 0
Tag: 1
Number Of Arrays: 4
Array 0 name = Density
Array 1 name = Momentum
Array 2 name = StagnationEnergy
Array 3 name = Velocity
Number Of Components: 8
Number Of Tuples: 47025
Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 )
Interpolate Flags: ( 1 1 1 1 1 0 0 1 )
Pass Through Flags: ( 1 1 1 1 1 1 1 1 )
Scalars:
Debug: Off
Modified Time: 392
Reference Count: 1
Registered Events:
Registered Observers:
(none)
Name: Density
Data type: float
Size: 47025
MaxId: 47024
NumberOfComponents: 1
Information: 0000000000000000
Name: Density
Number Of Components: 1
Number Of Tuples: 47025
Size: 47025
MaxId: 47024
LookupTable: (none)
Vectors:
Debug: Off
Modified Time: 409
Reference Count: 1
Registered Events:
Registered Observers:
(none)
Name: Velocity
Data type: float
Size: 141075
MaxId: 141074
NumberOfComponents: 3
Information: 0000000000000000
Name: Velocity
Number Of Components: 3
Number Of Tuples: 47025
Size: 141075
MaxId: 141074
LookupTable: (none)
Normals: (none)
TCoords: (none)
Tensors: (none)
GlobalIds: (none)
PedigreeIds: (none)
EdgeFlag: (none)
Bounds:
Xmin,Xmax: (0, 16.51)
Ymin,Ymax: (-5.66214, 5.66214)
Zmin,Zmax: (23.3312, 36.195)
Compute Time: 431
Number Of Points: 47025
Point Coordinates: 0000012714711730
Locator: 0000000000000000
Dimensions: (57, 33, 25)
Extent: 0, 56, 0, 32, 0, 24
) vtkMultiBlockPLOT3DReader (00000127148ABF80)
Debug: Off
Modified Time: 101
Reference Count: 2
Registered Events:
Registered Observers:
vtkObserver (0000012714C3C080)
Event: 33
EventName: ModifiedEvent
Command: 00000127149B27C0
Priority: 0
Tag: 1
Executive: 000001271488C710
ErrorCode: No error
Information: 0000012714D62500
AbortExecute: Off
Progress: 1
Progress Text: (None)
XYZ File Name: combxyz.bin
Q File Name: combq.bin
Function File Name: (none)
BinaryFile: 1
HasByteCount: 0
Gamma: 1.4
R: 1
ScalarFunctionNumber: 100
VectorFunctionNumber: 200
MultiGrid: 0
ForceRead: 0
IBlanking: 0
ByteOrder: 0
TwoDimensionalGeometry: off
Double Precision:0
Auto Detect Format: 0 vtkPointData (0000012712511380)
Debug: Off
Modified Time: 413
Reference Count: 2
Registered Events:
Registered Observers:
vtkObserver (0000012714C3CC20)
Event: 33
EventName: ModifiedEvent
Command: 00000127149B29C0
Priority: 0
Tag: 6
vtkObserver (0000012714C3CBC0)
Event: 33
EventName: ModifiedEvent
Command: 0000012714D622D0
Priority: 0
Tag: 1
Number Of Arrays: 4
Array 0 name = Density
Array 1 name = Momentum
Array 2 name = StagnationEnergy
Array 3 name = Velocity
Number Of Components: 8
Number Of Tuples: 47025
Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 )
Interpolate Flags: ( 1 1 1 1 1 0 0 1 )
Pass Through Flags: ( 1 1 1 1 1 1 1 1 )
Scalars:
Debug: Off
Modified Time: 392
Reference Count: 1
Registered Events:
Registered Observers:
(none)
Name: Density
Data type: float
Size: 47025
MaxId: 47024
NumberOfComponents: 1
Information: 0000000000000000
Name: Density
Number Of Components: 1
Number Of Tuples: 47025
Size: 47025
MaxId: 47024
LookupTable: (none)
Vectors:
Debug: Off
Modified Time: 409
Reference Count: 1
Registered Events:
Registered Observers:
(none)
Name: Velocity
Data type: float
Size: 141075
MaxId: 141074
NumberOfComponents: 3
Information: 0000000000000000
Name: Velocity
Number Of Components: 3
Number Of Tuples: 47025
Size: 141075
MaxId: 141074
LookupTable: (none)
Normals: (none)
TCoords: (none)
Tensors: (none)
GlobalIds: (none)
PedigreeIds: (none)
EdgeFlag: (none) In [7]: from tvtk.tools import tvtk_doc
In [9]: tvtk_doc.main()
In [16]: #标量数据可视化
con=tvtk.ContourFilter()
con.set_input_data(grid)
con.generate_values(20,grid.point_data.scalars.range)
con.set_value(0,0.3)#将第0个等值面设为0.3
In [86]: from ivtk_func import*
m=tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range,input_connection=con.output_port)
a=tvtk.Actor(mapper=m)
#a.property.opacity=0.5
win=ivtk_scene(a)
#win.scene.isometric_view()
event_loop()
In [41]: #矢量数据可视化
mask=tvtk.MaskPoints(random_mode=True,on_ratio=50)#表示每50个点选一个点
mask.set_input_data(grid)#采样后的数据集

glyph_source=tvtk.ConeSource()#表示箭头的PolyData 数据集
In [73]: glyph=tvtk.Glyph3D(input_connection=mask.output_port,scale_factor=2)
#Glyph3D对象 scale_factor 符号的共同放缩系数
glyph.set_source_connection(glyph_source.output_port)
#设置那个箭头&或者圆锥的方法
m=tvtk.PolyDataMapper(input_connection=glyph.output_port,scalar_range=grid.point_data.scalars.range)

a=tvtk.Actor(mapper=m)

mout=m.output_port
In [43]: print(type(glyph.output_port))
print(type(glyph_source))
<class 'tvtk.tvtk_classes.algorithm_output.AlgorithmOutput'>
<class 'tvtk.tvtk_classes.cone_source.ConeSource'>
In [46]: win.scene.isometric_view()
from ivtk_func import*
win=ivtk_scene(a)
win.scene.isometric_view()
event_loop()
In [47]: #计算轮廓图的方法如下
from tvtk.common import configure_input
#计算轮廓图的方法如下
from tvtk.common import configure_input
In [114]: outline=tvtk.StructuredGridOutlineFilter()
configure_input(outline,grid)#计算外边框的PolyData对象
m=tvtk.PolyDataMapper(input_connection=con.output_port,scalar_range=grid.point_data.scalars.range)
m.add_input_connection(glyph.output_port)
#m2=tvtk.PolyDataMapper(input_connection=outline.output_port,scalar_range=grid.point_data.scalars.range)
#m2.set_input_connection(glyph.output_port)
m.update_information()

a=tvtk.Actor(mapper=m2)
#a.add_mapper() ivtk_scene(a)
win.scene.isometric_view()
event_loop()
In [97]: from tvtk.tools import tvtk_doc
tvtk_doc.main()
from tvtk.tools import tvtk_doc
tvtk_doc.main()

python mooc 3维可视化<第一周第二&三单元>的更多相关文章

  1. python mooc 3维可视化<第一周第一单元>

    基本含义 数据->图像 分类 重点关注空间数据的可视化 方法 二维标量数据场 三维标量数据场 二位标量数据场 颜色映射法 等值线法 立体图法 层次分割法 三维标量数据场 面绘制法 体绘制法 展示 ...

  2. python自动化运维学习第一天--day1

    学习python自动化运维第一天自己总结的作业 所使用到知识:json模块,用于数据转化sys.exit 用于中断循环退出程序字符串格式化.format字典.文件打开读写with open(file, ...

  3. python作业三级菜单day1(第一周)

    一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二三级菜单文 ...

  4. Linux运维的第一周总结

    这个阶段主要学习 Linux 运维技术,包括 Linux 基本操作.Bash 编程.应用服务部署.数据库服务部署.日志管理.系统监控等. 第1周: Linux基础本周学习 Linux 基本操作.用户与 ...

  5. 第一周第二部分 coursera.org

    即使J(,)=,也不能是完美估计,因为其他数据可能存在误差 取任何颜色并沿着“圆”走,就可以得到相同的成本函数值,右图三个点的J(,)相同 越靠近圆心,J(,)越小 梯度下降算法可以将代价函数J()最 ...

  6. Python科学计算和可视化

    一.Numpy NumPy(Numeric Python)系统是 Python 的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比 Python 自身的嵌套列表(nested list s ...

  7. Python学习之旅--第一周--初识Python

    一:Python是一种什么样的语言? 1.语言的分类: a.编译型语言和解释性语言: 通常所说的计算机语言分为编译型和解释型语言.编译型语言典型的如C,C++,通常在程序执行之前必须经由编译器编译成机 ...

  8. 老男孩Python视频教程:第一周

    认识和尝试Python 备注:老男孩Python视频教程,视频来自网络,在此分享,侵删 对我来说,第一周视频主要解答了以下疑问: 1. Python的三大特点是什么? 答:解释型.动态类型(运行期间才 ...

  9. 第一周Python讲课内容--日记

    1.python的发展史,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年...... 2.第一个helloword程序的开始 3.变量的含义,赋值传参数的作 ...

随机推荐

  1. Windows API 第17篇 GetLogicalDriveStrings 获取本机所有逻辑驱动器,以根目录的形式表示

    函数原型:DWORD GetLogicalDriveStrings(  DWORD nBufferLength,  // size of buffer                          ...

  2. Python pylint的安装和使用

    Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准和有潜在问题的代码. Pylint 是一个 Python 工具,除了平常代码分析工具的作用之 ...

  3. ROS urdf和xacro文件详解

    视觉标签:visual <visual> <origin xyz="0.0 0.0 0.0" /> <geometry> <box siz ...

  4. app-safeguard-record:record

    ylbtech-work-app-safeguard-record:record 1.返回顶部 1. 示数 示数一般是指机械.仪器.仪表.或者需要对数字进行公开的显示的对外数字的宣示.比如电度表(千瓦 ...

  5. C# 利用Newtonsoft.Json 序列化生成Json数据

    现在需要将一些数据转化成json格式返回给调用者, 使用Newtonsoft.Json.DLL库来帮助我们序列化 举例: {"300033":{"MC":&qu ...

  6. Mycat+MySQL 主从复制

    一.主从复制搭建(新环境5.6.33)1.设置复制Master配置信息 [mysqld] #repl master库 server \logbin\mysql-bin max_binlog_size= ...

  7. 在线模拟http-post请求

    今天,要测试一个post请求的API,找了下,下面的网站可以直接利用起来,mark下 http://www.atool.org/httptest.php

  8. linux中tab键不能补全,却能切换窗口

    linux中所有程序-设置-窗口管理器-键盘-切换同一应用程序的窗口-清除

  9. Spring Bean 作用域

    Bean 的作用域 当在 Spring 中定义一个 bean 时,你必须声明该 bean 的作用域的选项.例如,为了强制 Spring 在每次需要时都产生一个新的 bean 实例,你应该声明 bean ...

  10. 基于HHT和RBF神经网络的故障检测——第二篇论文读后感

    故障诊断主要包括三部分: 1.故障信号检测方法(定子电流信号检测 [ 定子电流幅值和电流频谱 ] ,振动信号检测,温度信号检测,磁通检测法,绝缘检测法,噪声检测法) 2.故障信号的处理方法,即故障特征 ...