科学计算三维可视化---TVTK入门(创建和显示三维对象)

一:创建一个基本的三维对象

(一)长方体操作

traits:就是TVTK对象的属性

 

(1)对象属性操作

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

 

>>> s = tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0)
>>> print(s)
vtkCubeSource (00000000004D4FC0)
  Debug: Off
  Modified Time: 1903583
  Reference Count: 2
  Registered Events:
    Registered Observers:
      vtkObserver (000000000D7E0EE0)
        Event: 33
        EventName: ModifiedEvent
        Command: 00000000121045F0
        Priority: 0
        Tag: 1
  Executive: 000000000D5E32D0
  ErrorCode: No error
  Information: 0000000000481710
  AbortExecute: Off
  Progress: 0
  Progress Text: (None)
  X Length: 1
  Y Length: 2
  Z Length: 3
  Center: (0, 0, 0)
  Output Points Precision: 0
输出数据
>>> s.center    #所在坐标系的原点
array([0., 0., 0.])
>>> s.x_length   #x轴长度
1.0
>>> s.y_length   #y轴长度
2.0
>>> s.z_length   #z轴长度
3.0
>>> s.output_points_precision  #对象的精度
0

 (2)对象方法操作

(二)其他基本三维对象了解

>>> from tvtk.api import tvtk
>>> s = tvtk.ConeSource(height=3.0,radius=1.0,resolution=36)  #高度3.0,底面圆半径1.0,底面圆分辨率36(使用36边形近似一个圆形)

 

>>> s.height
3.0
>>> s.radius
1.0
>>> s.resolution
36
>>> s.center
array([0., 0., 0.])
>>> print(s)
vtkConeSource (0000000002F71530)
  Debug: Off
  Modified Time: 1903620
  Reference Count: 2
  Registered Events:
    Registered Observers:
      vtkObserver (000000000D7E0430)
        Event: 33
        EventName: ModifiedEvent
        Command: 000000000D4C0CD0
        Priority: 0
        Tag: 1
  Executive: 000000000D2998D0
  ErrorCode: No error
  Information: 000000000D3820C0
  AbortExecute: Off
  Progress: 0
  Progress Text: (None)
  Resolution: 36
  Height: 3
  Radius: 1
  Capping: On
  Center: (0, 0, 0)
  Direction: (1, 0, 0)
  Output Points Precision: 0

 

二:显示一个三维对象

在二维屏幕中显示一个三维对象,需要一个十分复杂的映射过程,特别是与用户交互的时候

 

(一)显示一个长方体

from tvtk.api import tvtk

#创建一个长方体数据源,设置其长宽高
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)  #将Actor添加进去
#创建一个RenderWindow(窗口),将Renderer添加进去
w = tvtk.RenderWindow(size=(300,300))   #创建一个显示窗口
w.add_renderer(r)   #将建立的渲染器加入窗口
#创建一个RenderWindowInteractor(窗口的交互工具)
i = tvtk.RenderWindowInteractor(render_window=w)    #创建一个交互工具,将窗口加入交互
#开启交互
i.initialize()
i.start()

posted @ 2018-07-12 12:28  山上有风景  阅读(833)  评论(0编辑  收藏  举报