vtkMapper 以及其方法 SetInputData SetInputConnection SetSourceConnection
vtkMappe
及其派生类,负责把输入数据转换为图元(例如显示为点、显示为线、显示为面等)。该类存储需要渲染的数据,以及一些渲染配置。我们经常看到的vtkActor->SetMapper(mapper)
,含义就是把负责提供图元数据的mapper
连接到渲染引擎actor
。
vtkMapper的重要渲染配置
1.选择使用顶点进行渲染还是拓扑结构(cell data)进行渲染
即将需要渲染的数据解释为点数据还是cell数据,默认是解释为点数据:
//mapper->SetScalarModeToUseCellData();
mapper->SetScalarModeToUsePointData();
数据源vtkUnstructuredGrid
与mapper
也有跟这个类似的设置需要一起设置:
// Use following settings when data is mappped to vertex
grid->GetPointData()->SetActiveVectors("vector_field_name");
grid->GetPointData()->SetActiveScalars("scalar_field_name");
// Use following settings when data is mapped to cell
// grid->GetCellData()->SetActiveVectors("vector_field_name");
// grid->GetCellData()->SetActiveScalars("scalar_field_name");
2.标量可见性开关
控制是否使用标量渲染数据,以及使用标量数据映射颜色(LUT):
mapper->SetScalarVisibility(true);
mapper->SetColorModeToMapScalars();
mapper->UseLookupTableScalarRangeOn();
mapper->SelectColorArray("array_name");
mapper->SetLookupTable(lut);
mapper->Update();
3.z-buffer
mapper
的另一个重要设置是,它能够沿着z-buffer
深度方向,逐像素解析同一个拓扑结构。比如绘制一个网格,网格上有不同颜色的边线(edges),z-buffer
设置可以使得不同颜色之间有一个渐变的过程,就会得到非常好看的线段。
比如,如果想画一个网格,这个网格带有边界,并且边界线的艳色和网格的颜色不一样,这个时候打开深度偏移就可以得到很好的效果。
SetInputData, SetInputConnection, SetSourceConnection
*SetInputData
:即直接给mapper
填入数据。
*SetInputConnection
:即通过管线(pipeline
)将经过某个filter
处理之后的输出作为另一个filter
的输入,通俗来说就是数据点。
*SetSourceConnection
:通俗来说以怎么样的图形形式来展示数据点。
示例展示SetInputConnection
与SetSourceConnection
:
glyph3D->SetSourceConnection(arrowSource->GetOutputPort());
glyph3D->SetInputConnection(brownianPoints->GetOutputPort());