/********************************************************************** 文件名: 7.3_vtkLODProp3DApp.cpp Copyright (c) 张晓东, 罗火灵. All rights reserved. 更多信息请访问: http://www.vtkchina.org (VTK中国) http://blog.csdn.net/www_doling_net (东灵工作室) **********************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //测试:../data/mummy.128.vtk int main (int argc, char *argv[]) { if (argc < 2) { std::cout< reader = vtkSmartPointer::New(); reader->SetFileName(argv[1]); reader->Update(); vtkSmartPointer volumeProperty = vtkSmartPointer::New(); volumeProperty->SetInterpolationTypeToLinear(); volumeProperty->ShadeOn(); volumeProperty->SetAmbient(0.4); volumeProperty->SetDiffuse(0.6); volumeProperty->SetSpecular(0.2); vtkSmartPointer compositeOpacity = vtkSmartPointer::New(); compositeOpacity->AddPoint(70, 0.00); compositeOpacity->AddPoint(90, 0.40); compositeOpacity->AddPoint(180, 0.60); volumeProperty->SetScalarOpacity(compositeOpacity); vtkSmartPointer color = vtkSmartPointer::New(); color->AddRGBPoint(0.000, 0.00, 0.00, 0.00); color->AddRGBPoint(64.00, 1.00, 0.52, 0.30); color->AddRGBPoint(190.0, 1.00, 1.00, 1.00); color->AddRGBPoint(220.0, 0.20, 0.20, 0.20); volumeProperty->SetColor(color); vtkSmartPointer rayCastFun = vtkSmartPointer::New(); vtkSmartPointer hiresMapper = vtkSmartPointer::New(); hiresMapper->SetInput(reader->GetOutput()); hiresMapper->SetVolumeRayCastFunction(rayCastFun); hiresMapper->SetAutoAdjustSampleDistances(0); vtkSmartPointer lowresMapper = vtkSmartPointer::New(); lowresMapper->SetInput(reader->GetOutput()); lowresMapper->SetVolumeRayCastFunction(rayCastFun); lowresMapper->SetAutoAdjustSampleDistances(0); lowresMapper->SetSampleDistance(4*hiresMapper->GetSampleDistance()); lowresMapper->SetImageSampleDistance(4*hiresMapper->GetImageSampleDistance()); vtkSmartPointer prop = vtkSmartPointer::New(); prop->AddLOD(lowresMapper, volumeProperty, 0.0); prop->AddLOD(hiresMapper, volumeProperty, 0.0); vtkSmartPointer ren = vtkSmartPointer::New(); ren->SetBackground(1.0, 1.0, 1.0); ren->AddVolume( prop ); vtkSmartPointer renWin = vtkSmartPointer::New(); renWin->AddRenderer(ren); renWin->SetSize(640, 480); renWin->Render(); renWin->SetWindowName("7.3_vtkLODProp3DApp"); vtkSmartPointer iren = vtkSmartPointer::New(); iren->SetRenderWindow(renWin); ren->ResetCamera(); renWin->Render(); iren->Start(); return EXIT_SUCCESS; }