1. 이미지 데이터 객체 생성
vtkSmartPointer<vtkImageData> imageData = vtkSmartPointer<vtkImageData>::New();
2. 필터 생성
- 이미지 데이터를 변경할 필요가 없으면 굳이 생성하지 않아도 됨
3. 매퍼 생성 후 이미지 설정
vtkSmartPointer<vtkSmartVolumeMapper> volumeMapper = vtkSmartPointer<vtkSmartVolumeMapper>::New();
volumeMapper->SetBlendModeToComposite();
volumeMapper->SetInputData(imageData);
4. 속성 설정
vtkSmartPointer<vtkVolumeProperty> volumeProperty = vtkSmartPointer<vtkVolumeProperty>::New();
volumeProperty->ShadeOff();
volumeProperty->SetInterpolationType(VTK_LINEAR_INTERPOLATION);
4 - 1. 색상 설정
vtkColorTransferFunction colorTransfer = vtkSmartPointer<vtkColorTransferFunction>::New();
colorTransfer->AddRGBPoint(0.0, 0.0, 0.0, 1.0);
colorTransfer->AddRGBPoint(40.0, 1.0, 0.0, 0.0);
colorTransfer->AddRGBPoint(255.0, 1.0, 1.0, 1.0);
volumeProperty->SetColor(colorTransfer);
4 - 2. 투명도 설정
vtkPiecewiseFunction opacity = vtkSmartPointer<vtkPiecewiseFunction>::New();
opacity->AddPoint(0.0, 0.0);
opacity->AddPoint(80.0, 1.0);
opacity->AddPoint(80.1, 0.0);
opacity->AddPoint(255.0, 0.0);
volumeProperty->SetScalarOpacity(compositeOpacity);
5. Volume 생성 후 매퍼와 속성 설정
vtkSmartPointer<vtkVolume> volume = vtkSmartPointer<vtkVolume>::New();
volume->SetMapper(volumeMapper);
volume->SetProperty(volumeProperty);
6. 렌더러 생성 후 Volume 추가
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->SetBackground(0.8, 0.9, 0.5);
renderer->AddViewProp(volume);
renderer->ResetCamera();
7. 렌더 윈도우 생성 후 렌더러 추가
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->SetSize(500, 500);
renderWindow->AddRenderer(renderer);
renderWindow->Render();
8. 인터랙터 생성후 렌더윈도우 등록
vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkRenderWindowInteractor::New();
interactor->SetRenderWindow(renderWindow);
9. RayCast로 렌더링
volumeMapper->SetRequestedRenderModeToRayCast();
renderWindow->Render();
10. 인터랙터 시작
interactor->Start();
댓글