[vtkusers] vtkXMLPolyDataReader/Writer problem
madz
madaramh at gmail.com
Thu Nov 7 23:27:17 EST 2013
Here is a simplified version of the program;
The construction of the grid and writing it,
std::string filename = "ouputTest.vtu";
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
points->InsertNextPoint(0, 0, 0);
points->InsertNextPoint(1, 0, 0);
points->InsertNextPoint(1, 1, 0);
points->InsertNextPoint(0, 1, 1);
vtkSmartPointer<vtkTetra> tetra = vtkSmartPointer<vtkTetra>::New();
tetra->GetPointIds()->SetId(0, 0);
tetra->GetPointIds()->SetId(1, 1);
tetra->GetPointIds()->SetId(2, 2);
tetra->GetPointIds()->SetId(3, 3);
vtkSmartPointer<vtkCellArray> cellArray =
vtkSmartPointer<vtkCellArray>::New();
cellArray->InsertNextCell(tetra);
vtkSmartPointer<vtkUnstructuredGrid> grid =
vtkSmartPointer<vtkUnstructuredGrid>::New();
grid->SetPoints(points);
grid->SetCells(VTK_TETRA, cellArray);
vtkSmartPointer<vtkGeometryFilter> geometryFilter =
vtkSmartPointer<vtkGeometryFilter>::New();
vtkSmartPointer<vtkPolyData> polydata;
geometryFilter->SetInput(grid);
geometryFilter->Update();
polydata = geometryFilter->GetOutput();
vtkSmartPointer<vtkDoubleArray> tempArray =
vtkSmartPointer<vtkDoubleArray>::New();
for(int i=0;i<4;i++)
{
tempArray->InsertNextValue(i/2.5);
}
polydata->GetPointData()->SetScalars(tempArray);
grid->GetPointData()->SetScalars(tempArray);
vtkSmartPointer<vtkLookupTable> colorLookupTable =
vtkSmartPointer<vtkLookupTable>::New();
colorLookupTable->SetTableRange(-100,500);
double vmin,vmax;
colorLookupTable->GetHueRange(vmin,vmax);
if(vmin!=vmax)
{
colorLookupTable->SetHueRange(0.6667,0.0);
}
colorLookupTable->Build();
vtkSmartPointer<vtkContourFilter> contourFilter =
vtkSmartPointer<vtkContourFilter>::New();
contourFilter->SetInputConnection(polydata->GetProducerPort());
contourFilter->ComputeScalarsOn();
contourFilter->GenerateValues(10,-100,500);
vtkSmartPointer<vtkPolyDataMapper> mapper1 =
vtkSmartPointer<vtkPolyDataMapper>::New();
mapper1->SetInputConnection(contourFilter->GetOutputPort());
mapper1->SetScalarRange(-100,500);
mapper1->SetLookupTable(colorLookupTable);
mapper1->ScalarVisibilityOn();
vtkSmartPointer<vtkActor> actor1 = vtkSmartPointer<vtkActor>::New();
actor1->SetMapper(mapper1);
vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInput(polydata);
mapper->ScalarVisibilityOn();
mapper->InterpolateScalarsBeforeMappingOn();
mapper->SetLookupTable(colorLookupTable);
mapper->SetScalarRange(-100,500);
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
// Visualize
vtkSmartPointer<vtkRenderer> renderer =vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderer->AddActor(actor1);
renderer->AddActor(actor);
renderer->SetBackground(.3, .6, .3); // Background color green
// Write file
vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer =
vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
writer->SetFileName(filename.c_str());
#if VTK_MAJOR_VERSION <= 5
writer->SetInput(grid);
#else
writer->SetInputData(grid);
#endif
writer->SetDataModeToAscii();
writer->Write();
renderWindow->Render();
renderWindowInteractor->Start();
Reading the file,
std::string filename = "ouputTest.vtu";
vtkSmartPointer<vtkXMLUnstructuredGridReader> reader =
vtkSmartPointer<vtkXMLUnstructuredGridReader>::New();
reader->SetFileName(filename.c_str());
reader->Update();
vtkSmartPointer<vtkDataSetMapper> mapper =
vtkSmartPointer<vtkDataSetMapper>::New();
mapper->SetInputConnection(reader->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
//vtkSmartPointer<vtkGeometryFilter> geometryFilter =
vtkSmartPointer<vtkGeometryFilter>::New();
//vtkSmartPointer<vtkPolyData> polydata;
//geometryFilter->SetInput(reader->GetOutput());
//geometryFilter->Update();
//polydata = geometryFilter->GetOutput();
//vtkSmartPointer<vtkContourFilter> contourFilter =
vtkSmartPointer<vtkContourFilter>::New();
//contourFilter->SetInputConnection(polydata->GetProducerPort());
//vtkSmartPointer<vtkDataSetMapper> mapper1 =
vtkSmartPointer<vtkDataSetMapper>::New();
//mapper1->SetInput(polydata);
//mapper1->ScalarVisibilityOn();
//vtkSmartPointer<vtkActor> actor1 = vtkSmartPointer<vtkActor>::New();
//actor1->SetMapper(mapper1);
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderer->AddActor(actor);
//renderer->AddActor(actor1);
renderer->SetBackground(1, 1, 1);
renderWindow->Render();
renderWindowInteractor->Start();
I think that the problem lies with the commented piece of code, they don't
seem to be working.
Any help would be appreciated.
Thanks.
--
View this message in context: http://vtk.1045678.n5.nabble.com/vtkXMLPolyDataReader-Writer-problem-tp5724345p5724354.html
Sent from the VTK - Users mailing list archive at Nabble.com.
More information about the vtkusers
mailing list