小结:

创建 数据对象

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. Spring MVC 返回 xml json pdf 数据的配置方法

    <!-- Spring MVC 返回 xml 数据的配置方法 -->     <bean class="org.springframework.web.servlet.vi ...

  2. ubuntu 安装samba共享文件夹

    安装samba sudo apt-get install samba smbclient 配置samba sudo cp /etc/samba/smb.conf /etc/samba/smb.conf ...

  3. 利用animate.css和es6制作文字向上滚动的效果

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel= ...

  4. 利用PHP获取访客IP、地区位置、浏览器及来源页面等信息

    这篇文章主要介绍了利用PHP获取访客IP.地区位置.浏览器及来源页面等信息的相关资料,文中给出了详细的示例代码供大家参考学习,对大家具有一定的参考借鉴价值,需要的朋友们下面来一起看看吧. 前言 本文中 ...

  5. Spring注解驱动开发(三)-----自动装配

    自动装配 概念 Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值. @Autowired-----自动注入 1.默认优先按照类型去容器中找对应的组件 application ...

  6. Session - 什么叫一次会话

    转载自:https://blog.csdn.net/qin_xiaofang/article/details/77725946 网上收集的:Session代表服务器与浏览器的一次会话过程,这个过程是连 ...

  7. PAT甲级——A1063 Set Similarity

    Given two sets of integers, the similarity of the sets is defined to be /, where N​c​​ is the number ...

  8. Python爬虫笔记【一】模拟用户访问之设置处理cookie(2)

    学习的课本为<python网络数据采集>,大部分代码来此此书. 做完请求头的处理,cookie的值也是区分用户和机器的一个方式.所以也要处理一下cookie,需要用requests模块,废 ...

  9. Cocos2dx 3.0 过渡篇(二十八)C++11强类型枚举

    一朋友在微信朋友圈晒了张照片,随手点开大图,带着赞赏的眼光扫了下,恩,几个月不见.又美丽了...咦?等等,她戴的这是什么?酷炫的造型! 金属边框! 微型摄像头! 这不是传说中的谷歌眼镜么?土豪啊,还好 ...

  10. 关于hive表同步类型问题

    今天华为做实施的时候发现kylin做刷cube的时候发现源表数据类型不适合刷到kylin提供查询接口.问了下同事发现一个比较简单的解决办法. 源表是String类型,做hive视图可以做个hive表提 ...