python mooc 3维可视化<第一周第二&三单元>
小结:
创建 数据对象
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维可视化<第一周第二&三单元>的更多相关文章
- python mooc 3维可视化<第一周第一单元>
基本含义 数据->图像 分类 重点关注空间数据的可视化 方法 二维标量数据场 三维标量数据场 二位标量数据场 颜色映射法 等值线法 立体图法 层次分割法 三维标量数据场 面绘制法 体绘制法 展示 ...
- python自动化运维学习第一天--day1
学习python自动化运维第一天自己总结的作业 所使用到知识:json模块,用于数据转化sys.exit 用于中断循环退出程序字符串格式化.format字典.文件打开读写with open(file, ...
- python作业三级菜单day1(第一周)
一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二三级菜单文 ...
- Linux运维的第一周总结
这个阶段主要学习 Linux 运维技术,包括 Linux 基本操作.Bash 编程.应用服务部署.数据库服务部署.日志管理.系统监控等. 第1周: Linux基础本周学习 Linux 基本操作.用户与 ...
- 第一周第二部分 coursera.org
即使J(,)=,也不能是完美估计,因为其他数据可能存在误差 取任何颜色并沿着“圆”走,就可以得到相同的成本函数值,右图三个点的J(,)相同 越靠近圆心,J(,)越小 梯度下降算法可以将代价函数J()最 ...
- Python科学计算和可视化
一.Numpy NumPy(Numeric Python)系统是 Python 的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比 Python 自身的嵌套列表(nested list s ...
- Python学习之旅--第一周--初识Python
一:Python是一种什么样的语言? 1.语言的分类: a.编译型语言和解释性语言: 通常所说的计算机语言分为编译型和解释型语言.编译型语言典型的如C,C++,通常在程序执行之前必须经由编译器编译成机 ...
- 老男孩Python视频教程:第一周
认识和尝试Python 备注:老男孩Python视频教程,视频来自网络,在此分享,侵删 对我来说,第一周视频主要解答了以下疑问: 1. Python的三大特点是什么? 答:解释型.动态类型(运行期间才 ...
- 第一周Python讲课内容--日记
1.python的发展史,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年...... 2.第一个helloword程序的开始 3.变量的含义,赋值传参数的作 ...
随机推荐
- Spring MVC 返回 xml json pdf 数据的配置方法
<!-- Spring MVC 返回 xml 数据的配置方法 --> <bean class="org.springframework.web.servlet.vi ...
- ubuntu 安装samba共享文件夹
安装samba sudo apt-get install samba smbclient 配置samba sudo cp /etc/samba/smb.conf /etc/samba/smb.conf ...
- 利用animate.css和es6制作文字向上滚动的效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel= ...
- 利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
这篇文章主要介绍了利用PHP获取访客IP.地区位置.浏览器及来源页面等信息的相关资料,文中给出了详细的示例代码供大家参考学习,对大家具有一定的参考借鉴价值,需要的朋友们下面来一起看看吧. 前言 本文中 ...
- Spring注解驱动开发(三)-----自动装配
自动装配 概念 Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值. @Autowired-----自动注入 1.默认优先按照类型去容器中找对应的组件 application ...
- Session - 什么叫一次会话
转载自:https://blog.csdn.net/qin_xiaofang/article/details/77725946 网上收集的:Session代表服务器与浏览器的一次会话过程,这个过程是连 ...
- PAT甲级——A1063 Set Similarity
Given two sets of integers, the similarity of the sets is defined to be /, where Nc is the number ...
- Python爬虫笔记【一】模拟用户访问之设置处理cookie(2)
学习的课本为<python网络数据采集>,大部分代码来此此书. 做完请求头的处理,cookie的值也是区分用户和机器的一个方式.所以也要处理一下cookie,需要用requests模块,废 ...
- Cocos2dx 3.0 过渡篇(二十八)C++11强类型枚举
一朋友在微信朋友圈晒了张照片,随手点开大图,带着赞赏的眼光扫了下,恩,几个月不见.又美丽了...咦?等等,她戴的这是什么?酷炫的造型! 金属边框! 微型摄像头! 这不是传说中的谷歌眼镜么?土豪啊,还好 ...
- 关于hive表同步类型问题
今天华为做实施的时候发现kylin做刷cube的时候发现源表数据类型不适合刷到kylin提供查询接口.问了下同事发现一个比较简单的解决办法. 源表是String类型,做hive视图可以做个hive表提 ...