VTK的Mapper
程序员文章站
2022-04-01 08:47:35
...
类vtkMapper及其派生类,把输入的数据转换成几何图元(例如转换成点,转换成线,转换成面等)进行渲染。该类存储需要进行渲染的数据,和一些渲染信息。
我们经常能在vtk程序中看到vtkImageActor(派生自vtkActor)使用vtkActor::SetMapper()函数。该函数设置生成几何图元的Mapper,也就是说把负责图像显示和渲染的渲染引擎vtkActor连接到生成用于渲染的几何图元的Mapper。
再举一个示例:
我们首先加载一个三维数据进来,然后通过MarchingCubes算法提取出等值面。
vtkSmartPointer<vtkStructuredPointsReader> reader =
vtkSmartPointer<vtkStructuredPointsReader>::New();
reader->SetFileName("image.mhd");
vtkSmartPointer<vtkMarchingCubes> marchingCubes =
vtkSmartPointer<vtkMarchingCubes>::New();
marchingCubes->SetInputConnection(reader->GetOutputPort());
marchingCubes->SetValue(0,500);
然后我们使用Mapper类:
vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(marchingCubes->GetOutputPort());
在这里,我们把提取出来的数据在Mapper类里转化为多边形数据,生成多边形Mapper。
之后把数据送到渲染引擎
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
这就是Mapper的主要作用和流程。接下来的内容都是与渲染引擎设置有关的部分了。
人们常说在一个可视化管线中,Mapper是作为可视化管线的终点。首先说一下可视化管线,这里跟国外渲染领域所说的可视化管线不太一样,这里只包括获得(以及创建)要显示的数据,然后对数据进行初步的处理,然后把数据传递给渲染引擎。渲染引擎不属于可视化管线的一部分。
上一篇: 一个汇总所有知识点的C语言程序
下一篇: VTK交互系统 1 交互模式入门