VTKFIG  0.20.20181114
Easy VTK based in situ visualization
template<class DATA , class FILTER >
void vtkfig::GridView::RTBuildVTKPipeline2D ( )
private

2D Filter

Definition at line 201 of file vtkfigGridView.cxx.

202  {
203  RTCalcTransform();
204  {
205  auto cr=vtkDoubleArray::SafeDownCast(DATA::SafeDownCast(data_producer->GetOutputDataObject(0))->GetCellData()->GetAbstractArray("cellregions"));
206 
207  auto scalar = vtkSmartPointer<vtkAssignAttribute>::New();
208  if (cr)
209  {
210  scalar->Assign("cellregions",vtkDataSetAttributes::SCALARS,vtkAssignAttribute::CELL_DATA);
211  scalar->SetInputConnection(data_producer->GetOutputPort());
212  }
213 
214  auto geometry=vtkSmartPointer<FILTER>::New();
215  if (cr)
216  geometry->SetInputConnection(scalar->GetOutputPort());
217  else
218  geometry->SetInputConnection(data_producer->GetOutputPort());
219 
220 
221 
222  auto transgeometry=vtkSmartPointer<vtkTransformPolyDataFilter>::New();
223  transgeometry->SetInputConnection(geometry->GetOutputPort());
224  transgeometry->SetTransform(transform);
225 
226  auto cells = vtkSmartPointer<vtkPolyDataMapper>::New();
227  cells->SetInputConnection(transgeometry->GetOutputPort());
228 
229  if (cr)
230  {
231  cells->UseLookupTableScalarRangeOn();
232  cells->SetLookupTable(cell_lut);
233  }
234  else
235  cells->ScalarVisibilityOff();
236 
237 #ifdef VTK_HAS_MAPPER_IMMEDIATE_RENDERING_ON
238  cells->ImmediateModeRenderingOn();
239 #endif
240  cellplot = vtkSmartPointer<vtkActor>::New();
241  cellplot->SetMapper(cells);
242  if (!cr)
243  cellplot->GetProperty()->SetColor(0.9,0.9,0.9);
245 
246 
247 
249  {
250  // Extract edges is slow for large datasets so it is better to
251  // plot cells twice: once with, once without wireframe.
252 
253  // auto edges= vtkSmartPointer<vtkExtractEdges>::New();
254  // edges->SetInputConnection(transgeometry->GetOutputPort());
255  // auto emapper = vtkSmartPointer<vtkPolyDataMapper>::New();
256  // emapper->SetInputConnection(edges->GetOutputPort());
257  // emapper->ScalarVisibilityOff();
258 
259  // edgeplot = vtkSmartPointer<vtkActor>::New();
260  // edgeplot->GetProperty()->SetColor(0,0,0);
261  // edgeplot->SetMapper(emapper);
262  // Figure::RTAddActor(edgeplot);
263 
264 
265  auto celledges = vtkSmartPointer<vtkPolyDataMapper>::New();
266  celledges->SetInputConnection(transgeometry->GetOutputPort());
267  celledges->ScalarVisibilityOff();
268 #ifdef VTK_HAS_MAPPER_IMMEDIATE_RENDERING_ON
269  celledges->ImmediateModeRenderingOn();
270 #endif
271  auto celledgeplot = vtkSmartPointer<vtkActor>::New();
272  celledgeplot->SetMapper(celledges);
273  celledgeplot->GetProperty()->SetColor(0,0,0);
274  celledgeplot->GetProperty()->SetRepresentationToWireframe();
275  Figure::RTAddActor(celledgeplot);
276  }
277 
278  if (cr && state.show_grid_colorbar)
279  {
280  cbar=BuildColorBar(cells);
281  cbar->SetTitle("C ");
282  cbar->SetLabelFormat(" %-2.0f ");
283  double range[2];
284  cell_lut->GetTableRange(range);
285  cbar->SetNumberOfLabels((int)(range[1]-range[0]+1));
287  }
288  }
289 
290 
291  auto boundary_data=vtkDataSet::SafeDownCast(boundary_data_producer->GetOutputDataObject(0));
292  if (boundary_data)
293  {
294 
295  auto bcr=vtkDoubleArray::SafeDownCast(boundary_data->GetCellData()->GetAbstractArray("boundarycellregions"));
296  if (bcr)
297  {
298  auto bscalar = vtkSmartPointer<vtkAssignAttribute>::New();
299  bscalar->Assign("boundarycellregions",vtkDataSetAttributes::SCALARS,vtkAssignAttribute::CELL_DATA);
300  bscalar->SetInputConnection(boundary_data_producer->GetOutputPort());
301 
302  auto bgeometry=vtkSmartPointer<FILTER>::New();
303  bgeometry->SetInputConnection(bscalar->GetOutputPort());
304 
305  auto transbgeometry=vtkSmartPointer<vtkTransformPolyDataFilter>::New();
306  transbgeometry->SetInputConnection(bgeometry->GetOutputPort());
307  transbgeometry->SetTransform(transform);
308 
309  auto bcells = vtkSmartPointer<vtkPolyDataMapper>::New();
310  bcells->SetInputConnection(transbgeometry->GetOutputPort());
311 
312  bcells->UseLookupTableScalarRangeOn();
313  bcells->SetLookupTable(bface_lut);
314  bcells->ScalarVisibilityOn();
315 #ifdef VTK_HAS_MAPPER_IMMEDIATE_RENDERING_ON
316  bcells->ImmediateModeRenderingOn();
317 #endif
318  bcellplot = vtkSmartPointer<vtkActor>::New();
319  bcellplot->SetMapper(bcells);
320  bcellplot->GetProperty()->SetLineWidth(5);
322 
323  if( state.show_grid_colorbar)
324  {
325  bcbar=BuildColorBar(bcells,1);
326  bcbar->SetTitle("B ");
327  bcbar->SetLabelFormat(" %-2.0f ");
328  double brange[2];
329  bface_lut->GetTableRange(brange);
330  bcbar->SetNumberOfLabels((int)(brange[1]-brange[0]+1));
332  }
333  }
334  }
335  }
void RTAddActor2D(vtkSmartPointer< vtkActor2D > prop)
Add vtk Actor to renderer showing figure.
vtkSmartPointer< vtkScalarBarActor > bcbar
Definition: vtkfigFigure.h:294
vtkSmartPointer< vtkActor > bcellplot
vtkSmartPointer< vtkLookupTable > bface_lut
Definition: vtkfigFigure.h:276
vtkSmartPointer< vtkTrivialProducer > data_producer
Data producer for grid dataset.
Definition: vtkfigFigure.h:247
vtkSmartPointer< vtkActor > cellplot
vtkSmartPointer< vtkTransform > transform
Definition: vtkfigFigure.h:200
void RTCalcTransform()
Calculate transformation to unit cube This shall be applied to all data.
struct vtkfig::Figure::@0 state
figure state
vtkSmartPointer< vtkTrivialProducer > boundary_data_producer
Data producer for boundary grid dataset.
Definition: vtkfigFigure.h:250
vtkSmartPointer< vtkLookupTable > cell_lut
Definition: vtkfigFigure.h:275
void RTAddActor(vtkSmartPointer< vtkActor > prop)
Add vtk Actor to renderer showing figure.
vtkSmartPointer< vtkScalarBarActor > cbar
Definition: vtkfigFigure.h:293
vtkSmartPointer< vtkScalarBarActor > BuildColorBar(vtkSmartPointer< vtkPolyDataMapper > mapper, int irank=0)
Definition: vtkfigTools.cxx:88

+ Here is the call graph for this function: