zoukankan      html  css  js  c++  java
  • VTK 使用笔记

    构成VTK系统有两种对象模型:可视化模型和图形模型

    1. 可视化模型

    数据对象由几何和拓扑结构组成(点集和单元集)    
    vtkDataObject(点集和单元集) vtkImageData Image Data
      vtkRectilinearGrid Rectilinear Grid
      vtkStructuredGrid Structured Grid
      vtkPolyData Unstructured Points/Polygonal Data
      vtkUnstructredGrid Unstructured Grid
      属性数据(用于描述数据对象中的点集和单元集的属性)
      Scalar single data value
      Vector 3D direction and magnitude
      Normal 3D direction
      Texture coordinate n-dimensional index into teture map
      Tensor n*n  matrix
    vtkProcessObject (过程对象也称为过滤器,按照某种运算法则对数据对象进行处理,表现系统中的几何形状。) source 通过读数据文件或数学表达式计算结果产生数据

    在可视化流水线中,主要包括源对象、过滤器对象、映射器对象三种对象。

    filter 接收一个或多个数据对象作为输入,对数据对象处理之后生成一个或多个数
    据对象作为输出。 
      mapper 可视化流水线的终点,是图形模型和可视化模型之间
    的接口,其主要作用是将数据对象转换成图形对象,
    然后由图形引擎绘制出来,复写器是映射器的一种类型,作用是将数据写入文件或流。

    2. 图形模型

    vtkActor、vtkActor2D、vtkVolume   :都是 vtkProp和/或vtkProp3D的子类。 Props 表示在场景中能“看到”的东西(如场景中的地形、山脉、人物、花草等),如果Props (如 vtkActor ) 是 vtkProp3D 类型,它能操作 3D,如果 Props 是 vtkProp2D 类型,它能表现 2D 数据。Props但不能直接表现几何数据,需用Mapper来表现。
    vtkLight   :用于表现和处理光线的,Lights 只用于三维,在二维中我们不使用光线。
    vtkCamera  :在绘制过程中,用相机类控制被绘制到场景中的物体的数量,相机类提供了一些方法控制相机的位置,同时相机类也控制透视投影和立体观察。
    vtkProperty,vtkProperty2D  :Property 对象能够控制 Pros 的外观 (如颜色、灯光、显示模式等),供Property对象引用。
    vtkTransform :变换对象
    vtkMaper,vtkMapper2D  :vtkAbstractMapper 的子类,映射器类,用于表现几何数据。经常和查找表类(vtkLookupTable)一起对几何体进行变换和绘

    制,该类也是图形模型和可视化流水线之间的接口。

    vtkLookupTable,vtkColorTransferFunction :vtkScalarsToColors 的子类,主要为映射的数据赋予不同的颜色。
    vtkRender,vtkRenderWindow :管理图形引擎和计算机窗口系统之间的接口,绘制窗口是绘制图形的显示区域,多个绘制图形也许显示在一个绘制窗口

    中,但是,用户可以同时创建多个绘制窗口,绘制数据在绘制窗口显示的区域被称为视口,一个绘制窗口可以同时有多个视口。

    vtkRenderWindowInteractor  :一个操作相机对象和拾取工具的类,调用用户定义方法,进入/退出立体视角,并且修改Actor 的一些属性。提供与图形对象的交互。

    上述的许多对象均有子类,例如,vtkAssembly、vtkFollower 和 vtkLODActor 都是vtkActor 的子类,vtkAssembly 类用于将多个角色对象相互组合,构成一个复杂的对象实体,vtkFollower 是一个用于总是面对一个特定 camera(对布告板和文字非常有用) 的演示者,vtkLODActor 类用于在不同的层次表现物体细节的程度。

          图中说明了 Render()方法发起对数据的请求后,数据通过流水线向左传递,一直传递到源对象(流水线的起点),然后从源对象开始直到映射器对象,流水线中的每个对象依次检查需要处理的那部分数据是否已经过期,如果过期调用 Update()方法更新数据,这样保证流水线末端的数据总是最新的数据,接着 Actor 对象(角色)将绘制这些数据。

  • 相关阅读:
    CodeForces
    EOJ 3506. 斐波那契数列
    牛客练习赛13 D幸运数字Ⅳ . 康托逆展开
    UVA
    Piggy-Bank HDU
    Dollar Dayz POJ
    UVA 674 Coin Change (完全背包)
    python OOP (1)
    python lambda简易使用
    python whl模块安装方法
  • 原文地址:https://www.cnblogs.com/wenshanzh/p/2724567.html
Copyright © 2011-2022 走看看