04-VTK可视化管线(2)

4.2 可视化管线

我们回头再看看3.1的示例RenderCylinder。在这个例子及后续的扩展内容里,我们可以找到以下列出的类或其子类:

vtkProp; vtkAbstractMapper;vtkProperty; vtkCamera; vtkLight; vtkRenderer; vtkRenderWindow;vtkRenderWindowInteractor; vtkTransform; vtkLookupTable ……

我们发现,这些类都是与数据显示或者说渲染相关的。用一个专业的词汇来说,它们构成了VTK的渲染引擎(Rendering Engine)。渲染引擎主要负责数据的可视化表达,它是VTK里的两个重要模块之一,另外一个重要的模块就是可视化管线(Visualization Pipeline)。

可视化管线是指用于获取或创建数据,处理数据,以及把数据写入文件或者把数据传递给渲染引擎进行显示,这样的一种结构在VTK里就称之为可视化管线数据对象(Data Object)、处理对象(Process Object)和数据流方向(Direction of Data Flow)是可视化管线的三个基本要素。每个VTK程序都会有可视化管线存在,比如示例RenderCylinder,其可视化管线可以简单地表示成图4.8。

 

图4.8 示例RenderCylinder的可视化管线

示例RenderCylinder的可视化管线非常简单,首先是创建一个锥体数据,接着经Mapper后生成的多边形数据(vtkPolyData)直接送入渲染引擎渲染,创建的数据没有经过任何处理。

我们再看一个稍微复杂点的可视化管线(示例4.2.1_vtkPipelineDemo),在这个示例里,我们先读入后缀为vtk的文件(head.vtk),然后用移动立方体法(vtkMarchingCubes)提取等值面,最后把等值面数据经Mapper送往渲染引擎进行显示,示例完整代码如下,运行结果如图4.9左所示,右边是其可视化管线。

 

///vtkPipelineDemo.cpp

   1: #include "vtkSmartPointer.h"

   2: #include "vtkStructuredPointsReader.h"

   3: #include "vtkRenderer.h"

   4: #include "vtkRenderWindow.h"

   5: #include "vtkRenderWindowInteractor.h"

   6: #include "vtkMarchingCubes.h"

   7: #include "vtkPolyDataMapper.h"

   8: #include "vtkActor.h"

   9:  

  10: int main(int argc, char *argv[])

  11:  {

  12:   //读入Structured_Points类型的vtk文件。

  13:   vtkSmartPointer<vtkStructuredPointsReader> reader =

  14:       vtkSmartPointer<vtkStructuredPointsReader>::New();

  15:   reader->SetFileName("../head.vtk");

  16:  

  17:   //用移动立方体法提取等值面。

  18:   vtkSmartPointer<vtkMarchingCubes> marchingCubes =

  19:       vtkSmartPointer<vtkMarchingCubes>::New();

  20:    marchingCubes->SetInputConnection(reader->GetOutputPort());

  21:   marchingCubes->SetValue(0,500);

  22:  

  23:   //将生成的等值面数据进行Mapper

  24:   vtkSmartPointer<vtkPolyDat

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值