56 if (argc != 2 && argc != 4)
58 cout <<
"Usage: VtkToPng vtk-file [lower upper]" << endl;
62 string vInput = argv[1];
63 string vOutput = vInput.substr(0, vInput.find_last_of(
'.')) +
".png";
66 vtkSmartPointer<vtkGraphicsFactory> graphics_factory =
67 vtkSmartPointer<vtkGraphicsFactory>::New();
68 graphics_factory->SetOffScreenOnlyMode( 1);
69 graphics_factory->SetUseMesaClasses( 1 );
72 vtkSmartPointer<vtkXMLUnstructuredGridReader> reader =
73 vtkSmartPointer<vtkXMLUnstructuredGridReader>::New();
74 reader->SetFileName(vInput.c_str());
77 vtkSmartPointer<vtkDataSet> data =
78 vtkSmartPointer<vtkDataSet>(reader->GetOutputAsDataSet());
79 data->GetPointData()->SetActiveScalars(
"u");
81 double scalar_range[2];
82 data->GetScalarRange(scalar_range);
85 scalar_range[0] = atof(argv[2]);
86 scalar_range[1] = atof(argv[3]);
90 vtkSmartPointer<vtkLookupTable> lookup = vtkSmartPointer<vtkLookupTable>::New();
91 lookup->SetHueRange(0.0,1.0);
92 lookup->SetSaturationRange(1,1);
93 lookup->SetTableRange(scalar_range);
94 lookup->SetValueRange(1,1);
98 vtkSmartPointer<vtkDataSetMapper> mapper =
99 vtkSmartPointer<vtkDataSetMapper>::New();
100 #if VTK_MAJOR_VERSION <= 5 101 mapper->SetInput(data);
103 mapper->SetInputData(data);
106 #if VTK_MAJOR_VERSION < 8 || (VTK_MAJOR_VERSION == 8 && VTK_MINOR_VERSION <= 1) 108 mapper->ImmediateModeRenderingOn();
111 mapper->ScalarVisibilityOn();
112 mapper->SetScalarModeToUsePointData();
113 mapper->UseLookupTableScalarRangeOn();
115 mapper->SetLookupTable(lookup);
118 vtkSmartPointer<vtkActor> actor =
119 vtkSmartPointer<vtkActor>::New();
120 actor->SetMapper(mapper);
123 vtkSmartPointer<vtkCamera> camera = vtkSmartPointer<vtkCamera>::New();
124 camera->SetPosition(0.0,-1.0,1.0);
125 camera->SetFocalPoint(0,0,0);
128 vtkSmartPointer<vtkRenderer> renderer =
129 vtkSmartPointer<vtkRenderer>::New();
130 vtkSmartPointer<vtkRenderWindow> renderWindow =
131 vtkSmartPointer<vtkRenderWindow>::New();
132 renderWindow->SetOffScreenRendering( 1 );
133 renderWindow->AddRenderer(renderer);
136 renderer->AddActor(actor);
137 renderer->SetBackground(0,0,0);
138 renderer->SetActiveCamera(camera);
139 renderer->ResetCamera();
141 renderWindow->Render();
144 vtkSmartPointer<vtkWindowToImageFilter> windowToImageFilter =
145 vtkSmartPointer<vtkWindowToImageFilter>::New();
146 windowToImageFilter->SetInput(renderWindow);
148 #if VTK_MAJOR_VERSION < 8 || (VTK_MAJOR_VERSION == 8 && VTK_MINOR_VERSION <= 1) 150 windowToImageFilter->SetMagnification(4);
152 windowToImageFilter->SetScale(4, 4);
154 windowToImageFilter->Update();
157 vtkSmartPointer<vtkPNGWriter> writer =
158 vtkSmartPointer<vtkPNGWriter>::New();
159 writer->SetFileName(vOutput.c_str());
160 writer->SetInputConnection(windowToImageFilter->GetOutputPort());