Reputation: 1279
I Have an unstructured grid that which I need to write into a file and open elsewhere. The original file looks like this;
When I write the file and read it again, it displays as following,
The code for writing the file is;
std::string filename = "ouputTest.vtu";
//pre-constructed grid
(vtkSmartPointer<vtkUnstructuredGrid>) grid;
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();
The code for reading the file is;
std::string filename = "ouputTest.vtu";
vtkSmartPointer reader = vtkSmartPointer::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<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->SetBackground(1, 1, 1);
renderWindow->Render();
renderWindowInteractor->Start();
What should I do to make it appear as the original. I don't know if the problem is with the file writing or reading. Any help would be appreciated. Thanks.
Upvotes: 0
Views: 890
Reputation: 3344
When you load, make sure of the following:
Upvotes: 1