VTK的Mapper

类vtkMapper及其派生类,把输入的数据转换成几何图元(例如转换成点,转换成线,转换成面等)进行渲染。该类存储需要进行渲染的数据,和一些渲染信息。

我们经常能在vtk程序中看到vtkImageActor(派生自vtkActor)使用vtkActor::SetMapper()函数。该函数设置生成几何图元的Mapper,也就是说把负责图像显示和渲染的渲染引擎vtkActor连接到生成用于渲染的几何图元的Mapper。

再举一个示例:

我们首先加载一个三维数据进来,然后通过MarchingCubes算法提取出等值面。

        vtkSmartPointer reader = 
		vtkSmartPointer::New();
	reader->SetFileName("image.mhd");

	vtkSmartPointer marchingCubes = 
		vtkSmartPointer::New();
	marchingCubes->SetInputConnection(reader->GetOutputPort());
	marchingCubes->SetValue(0,500);

然后我们使用Mapper类:

	vtkSmartPointer mapper = 
		vtkSmartPointer::New();
	mapper->SetInputConnection(marchingCubes->GetOutputPort());

在这里,我们把提取出来的数据在Mapper类里转化为多边形数据,生成多边形Mapper。

之后把数据送到渲染引擎

	vtkSmartPointer actor = vtkSmartPointer::New();
	actor->SetMapper(mapper);

这就是Mapper的主要作用和流程。接下来的内容都是与渲染引擎设置有关的部分了。

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

你可能感兴趣的:(VTK程序设计,VTK)