I have been trying to use vtkLabeledDataMapper to label scalars which have been defined as vtkCellData in the corresponding Polydata<br><br>I always get an error : Could not find label array (index0) in input<br><br>Not sure what I am doing wrong . Any help appreciated<br>
<br>Sample Code<br>vtkSmartPointer<vtkPlaneSource> plsrc = vtkSmartPointer<vtkPlaneSource>::New();<br> plsrc->SetNormal(1,0,0);<br> plsrc->SetCenter(1,1,1);<br> plsrc->SetXResolution(10);<br> plsrc->SetYResolution(10);<br>
plsrc->Update();<br><br> cout << "Number of Cells " << plsrc->GetOutput()->GetNumberOfCells() << endl;<br> vtkSmartPointer<vtkDoubleArray> dblarray = vtkSmartPointer<vtkDoubleArray>::New();<br>
<br> dblarray->SetNumberOfValues(plsrc->GetOutput()->GetNumberOfCells());<br> dblarray->SetName("Cel1");<br> for (int i = 0 ; i < plsrc->GetOutput()->GetNumberOfCells() ; i++)<br> {<br> dblarray->SetValue(i,vtkMath::Random(0,100));<br>
}<br><br> plsrc->GetOutput()->GetCellData()->SetScalars(dblarray);<br> <br> vtkSmartPointer<vtkLabeledDataMapper> ldm = vtkSmartPointer<vtkLabeledDataMapper>::New();<br> ldm->SetInput(plsrc->GetOutput());<br>
ldm->SetLabelFormat("%g");<br> //ldm->SetFieldDataName("Cel1");<br> ldm->SetLabelModeToLabelScalars();<br> //ldm->SetFontSize(45);<br><br> vtkSmartPointer<vtkActor2D> act2D = vtkSmartPointer<vtkActor2D>::New();<br>
act2D->SetMapper(ldm);<br><br><br> vtkSmartPointer<vtkPolyDataMapper> mapper = <br> vtkSmartPointer<vtkPolyDataMapper>::New();<br> mapper->SetInputConnection( plsrc->GetOutputPort() );<br> mapper->SetScalarModeToUseCellData();<br>
<br> vtkSmartPointer<vtkActor> act = vtkSmartPointer<vtkActor>::New();<br> act->SetMapper(mapper);<br><br> renderer->AddActor(act);<br> renderer->AddActor2D(act2D);<br><br>Regards<br>Darshan<br>