<div>Hi,<br></div><div>i have problem when i try to probe vtkUnstructuredGrid
with vtkProbeFilter. in result i have only blank plane without any expected result. What i am doing wrong?</div><div>code example see below..</div><div><br></div><div>#define VTK_CREATE(type, name) \<br> vtkSmartPointer<type> name = vtkSmartPointer<type>::New()<br>
<br>#define SIZE_X 10<br>#define SIZE_Y 5<br>#define SIZE_Z 1<br><br>#define SHIFT_X 150<br>#define SHIFT_Y 150<br><br>#define CELL_SIZE 5<br><br>//create grid 10x10x1 <br>void createUnstrGrid(vtkUnstructuredGrid* grid)<br>
{<br> VTK_CREATE(vtkPoints, points);<br> VTK_CREATE(vtkIdList, idList);<br><br> points->Allocate(SIZE_X*SIZE_Y*8); // 8 coords for each cell<br><br> int pointIndx = 0;<br><br> for(int y = 0; y < SIZE_Y; y++)<br>
{<br> for(int x = 0; x < SIZE_X; x++)<br> {<br> // bottom side<br> points->InsertNextPoint(CELL_SIZE*x, CELL_SIZE*y, CELL_SIZE); // 0<br> points->InsertNextPoint(CELL_SIZE*x + CELL_SIZE, CELL_SIZE*y, CELL_SIZE); // 1<br>
points->InsertNextPoint(CELL_SIZE*x + CELL_SIZE, CELL_SIZE*y, CELL_SIZE*0); // 2<br> points->InsertNextPoint(CELL_SIZE*x, CELL_SIZE*y, CELL_SIZE*0); // 3<br> //top side<br>
points->InsertNextPoint(CELL_SIZE*x, CELL_SIZE*y + CELL_SIZE, CELL_SIZE); // 4<br> points->InsertNextPoint(CELL_SIZE*x + CELL_SIZE, CELL_SIZE*y + CELL_SIZE, CELL_SIZE); // 5<br> points->InsertNextPoint(CELL_SIZE*x + CELL_SIZE, CELL_SIZE*y + CELL_SIZE, CELL_SIZE*0); // 6<br>
points->InsertNextPoint(CELL_SIZE*x, CELL_SIZE*y + CELL_SIZE, CELL_SIZE*0); // 7<br><br> grid->SetPoints(points);<br><br> idList->Reset();<br><br> idList->InsertNextId(pointIndx++); // 0<br>
idList->InsertNextId(pointIndx++); // 1<br> idList->InsertNextId(pointIndx++); // 2<br> idList->InsertNextId(pointIndx++); // 3<br> idList->InsertNextId(pointIndx++); // 4<br> idList->InsertNextId(pointIndx++); // 5<br>
idList->InsertNextId(pointIndx++); // 6<br> idList->InsertNextId(pointIndx++); // 7<br><br> grid->InsertNextCell(VTK_HEXAHEDRON, idList);<br> }<br> }<br></div><div><br></div><div>
grid->Update();
</div><div><br> VTK_CREATE(vtkFloatArray, scalars);<br><br> float val_x = 0.1;<br> float val_y = 0.05;<br><br> for(int y = 0; y < SIZE_Y; y++)<br> {<br> for(int x = 0; x < SIZE_X; x++)<br> {<br> scalars->InsertNextValue(y*val_y +x*val_x);<br>
}<br> }<br><br>grid->GetCellData()->SetScalars(scalars);<br><br> grid->Update();<br><br> return;<br>}<br><br></div><div><br></div><div>int main(int argc, char* argv[])<br>{<br>vtkRenderer *renderer = vtkRenderer::New();<br>
vtkRenderWindow *renWin = vtkRenderWindow::New();<br><br> renWin->AddRenderer(renderer);<br> renderer->Delete();<br><br> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();<br> iren->SetRenderWindow(renWin);<br>
renWin->Delete();</div><div><br></div><div>VTK_CREATE(vtkUnstructuredGrid, grid);<br><br> createUnstrGrid(grid);</div><div><br>vtkIndent indent;<br> grid->PrintSelf(cout, indent);<br><br> // Create the probe plane<br>
vtkPlaneSource *plane = vtkPlaneSource::New();<br> plane->SetResolution(200, 200);<br><br> vtkTransform *transp = vtkTransform::New();<br><br> transp->Translate(10.0, 10.0 ,0);<br> transp->Scale(20, 20, 20);<br>
transp->RotateX(90);<br><br> vtkTransformPolyDataFilter *tpd = vtkTransformPolyDataFilter::New();<br> tpd->SetInputConnection(0, plane->GetOutputPort(0));<br><br> tpd->SetTransform(transp);<br> tpd->Update();<br>
<br> vtkProbeFilter *probe= vtkProbeFilter::New();<br> probe->SetInputConnection(0, tpd->GetOutputPort(0));<br><br> probe->SetSource(grid);<br><br> probe->Update();<br><br> assert(probe->GetOutput()!=0);<br>
<br> // This creates a blue to red lut.<br> vtkLookupTable *lut = vtkLookupTable::New(); <br> lut->SetHueRange (0.667, 0.0);<br> <br> vtkDataSetMapper *gridMapper = vtkDataSetMapper::New();<br> vtkDataSetMapper *planeMapper = vtkDataSetMapper::New();<br>
<br> planeMapper->SetLookupTable(lut);<br><br> gridMapper->SetInputConnection(grid->GetProducerPort());<br> planeMapper->SetInputConnection(probe->GetOutputPort());<br><br> if(probe->GetOutput()->GetPointData()!= 0)<br>
{<br> if(probe->GetOutput()->GetPointData()->GetScalars()!= 0) // it always == 0! why??<br> {<br> planeMapper->SetScalarRange( probe->GetOutput()->GetPointData()-><br> GetScalars()->GetRange());<br>
}<br> }<br><br> vtkActor *gridActor = vtkActor::New();<br><br> gridActor->SetMapper(gridMapper);<br> gridActor->GetProperty()->SetEdgeColor(0.0, 0.0, 0.0);<br> gridActor->GetProperty()->SetEdgeVisibility(1);<br>
<br> vtkActor *planeActor = vtkActor::New();<br> planeActor->SetMapper(planeMapper);<br><br> renderer->AddActor(planeActor);<br>// renderer->AddActor(gridActor);<br><br> // Standard testing code.<br> renderer->SetBackground(0.5,0.5,0.5);<br>
<br> renWin->SetSize(300,300);<br> renWin->Render();<br><br> iren->Start();<br><br> return 0;<br>}<br></div>