欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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是作为可视化管线的终点。首先说一下可视化管线,这里跟国外渲染领域所说的可视化管线不太一样,这里只包括获得(以及创建)要显示的数据,然后对数据进行初步的处理,然后把数据传递给渲染引擎。渲染引擎不属于可视化管线的一部分。

相关标签: VTK