/*========================================================================= Program: Visualization Toolkit Module: TestGPURayCastAdditive.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 cropping on volume datasets. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int TestGPURayCastCropping1(int argc, char* argv[]) { double scalarRange[2]; vtkNew outlineActor; vtkNew volumeMapper; volumeMapper->AutoAdjustSampleDistancesOff(); volumeMapper->SetSampleDistance(0.05); vtkNew reader; const char* volumeFile = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/vase_1comp.vti"); reader->SetFileName(volumeFile); delete[] volumeFile; volumeMapper->SetInputConnection(reader->GetOutputPort()); volumeMapper->GetInput()->GetScalarRange(scalarRange); volumeMapper->SetBlendModeToComposite(); // Testing prefers image comparison with small images vtkNew renWin; renWin->SetSize(400, 400); renWin->SetMultiSamples(0); // Intentional odd and NPOT width/height vtkNew ren; renWin->AddRenderer(ren); vtkNew iren; iren->SetRenderWindow(renWin); // Make sure we have an OpenGL context. renWin->Render(); 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(0, 0.0, 0.0, 0.0); colorTransferFunction->AddRGBPoint(255, 0.0, 1.0, 0.0); // Test cropping now volumeMapper->SetCroppingRegionPlanes(10.0, 20.0, 10.0, 20.0, 10.0, 20.0); volumeMapper->SetCroppingRegionFlagsToFence(); volumeMapper->CroppingOn(); // Setup volume actor vtkNew volume; volume->SetMapper(volumeMapper); volume->SetProperty(volumeProperty); ren->AddViewProp(volume); ren->ResetCamera(); ren->GetActiveCamera()->Zoom(2); renWin->Render(); iren->Initialize(); int retVal = vtkRegressionTestImage(renWin); if (retVal == vtkRegressionTester::DO_INTERACTOR) { iren->Start(); } return !retVal; }