/*========================================================================= Program: Visualization Toolkit Module: TestGPURayCastVolumeScale.cxx Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ // This test covers additive method. // This test volume renders a synthetic dataset with unsigned char values, // with the additive method. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int TestGPURayCastVolumeScale(int argc, char* argv[]) { double scalarRange[2]; vtkNew outlineActor; vtkNew outlineMapper; vtkNew volumeMapper; vtkNew reader; const char* volumeFile = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/vase_1comp.vti"); reader->SetFileName(volumeFile); delete[] volumeFile; vtkSmartPointer changeInformation = vtkSmartPointer::New(); changeInformation->SetInputConnection(reader->GetOutputPort()); changeInformation->SetOutputSpacing(1, 2, 3); changeInformation->SetOutputOrigin(10, 20, 30); changeInformation->Update(); volumeMapper->SetInputConnection(changeInformation->GetOutputPort()); // Add outline filter vtkNew outlineFilter; outlineFilter->SetInputConnection(changeInformation->GetOutputPort()); outlineMapper->SetInputConnection(outlineFilter->GetOutputPort()); outlineActor->SetMapper(outlineMapper); volumeMapper->GetInput()->GetScalarRange(scalarRange); volumeMapper->SetBlendModeToComposite(); vtkNew renWin; vtkNew ren; renWin->AddRenderer(ren); renWin->SetSize(400, 400); ren->SetBackground(0.2, 0.2, 0.5); vtkNew iren; iren->SetRenderWindow(renWin); vtkNew scalarOpacity; scalarOpacity->AddPoint(scalarRange[0], 0.0); scalarOpacity->AddPoint(scalarRange[1], 1.0); vtkNew volumeProperty; volumeProperty->ShadeOff(); volumeProperty->SetInterpolationType(VTK_LINEAR_INTERPOLATION); volumeProperty->SetScalarOpacity(scalarOpacity); vtkSmartPointer colorTransferFunction = volumeProperty->GetRGBTransferFunction(0); colorTransferFunction->RemoveAllPoints(); colorTransferFunction->AddRGBPoint(scalarRange[0], 0.0, 0.0, 0.0); colorTransferFunction->AddRGBPoint(scalarRange[1], 1.0, 1.0, 1.0); vtkNew volume; volume->SetMapper(volumeMapper); volume->SetProperty(volumeProperty); ren->AddViewProp(volume); ren->AddActor(outlineActor); renWin->Render(); ren->ResetCamera(); iren->Initialize(); int retVal = vtkRegressionTestImage(renWin); if (retVal == vtkRegressionTester::DO_INTERACTOR) { iren->Start(); } return !retVal; }