就是一个简单的体绘制代码,我把生成的体绘制对象放大后进行操作很容易就出现闪一白屏,谢谢。
vtkInteractorStyleTrackballCamera *style =vtkInteractorStyleTrackballCamera::New();
RenderWindow->AddRenderer(Renderer);
RenderWindowInteractor->SetRenderWindow(RenderWindow);
DICOMImageReader->SetDirectoryName(Address_Storage);
DICOMImageReader->Update();
DICOMImageReader->SetDataByteOrderToLittleEndian();
readerImageCast->SetInput((vtkDataObject *)DICOMImageReader->GetOutput());
readerImageCast->SetOutputScalarTypeToUnsignedShort();
//梯度传递函数。该函数确定不同梯度值的不透明度,从而突出不同组织之间的结构和相互之间的层次关系
//不透明度
opacityTransferFunction->AddPoint(-3024, 0, 0.5, 0.0);
opacityTransferFunction->AddPoint(-1820, 0, .5, .0);
opacityTransferFunction->AddPoint(100, 0, .5, 0);
opacityTransferFunction->AddPoint(625, .71, .5, 0.0);
opacityTransferFunction->AddPoint(3071, 0.0, 0.5, 0.0);
//梯度
gradientTransferFunction->AddPoint(0,2.0);
gradientTransferFunction->AddPoint(300, 2.0);
gradientTransferFunction->AddSegment(600, 0.63, 900, 0.9);
gradientTransferFunction->AddPoint(1300, 0.1);
//Mapper point to RGB color
colorTransferFunction->AddRGBPoint(-3024, 0, 0, 0, 0.5, 0.0);
colorTransferFunction->AddRGBPoint(-1240, 0.73, 0.25, 0.300,.5, 0.0);
colorTransferFunction->AddRGBPoint(641, .90, .82, .56, .5, 0.0);
colorTransferFunction->AddRGBPoint(3071, 1, 1, 1, .5, 0.0);
//在这里设置体属性
volumeProperty->SetColor(colorTransferFunction);//颜色
volumeProperty->SetScalarOpacity(opacityTransferFunction);//不透明度
volumeProperty->ShadeOn();
volumeProperty->SetAmbient(0.5);
volumeProperty->SetDiffuse(1.2);
volumeProperty->SetSpecular(0.6);
volumeProperty->SetSpecularPower(25);
volumeProperty->SetInterpolationTypeToLinear();
// vtkVolumeRayCastMIPFunction *compositeFunction = vtkVolumeRayCastMIPFunction::New();//体绘制方法:最大密度投影函数
//vtkVolumeRayCastCompositeFunction *compositeFunction = vtkVolumeRayCastCompositeFunction::New();//体绘制方法:
volumeMapper->SetRequestedRenderModeToRayCast();
volumeMapper->SetInterpolationModeToLinear();
volumeMapper->SetInputConnection(readerImageCast->GetOutputPort());
volume->SetMapper(volumeMapper);
volume->SetProperty(volumeProperty);
volume->RotateX(-10);
volume->RotateY(-15);
volume->RotateZ(50);
Renderer->AddVolume(volume);
aCamera->SetViewUp (0, 0, -1);
aCamera->SetPosition (0, 1, 0);
aCamera->SetFocalPoint (0, 0, 0);
aCamera->ComputeViewPlaneNormal();
Renderer->SetActiveCamera(aCamera);
Renderer->ResetCamera ();
Renderer->SetBackground(0.2,0.6,0.8);
RenderWindow->SetSize(431, 281);
ui.qvtkWidget->SetRenderWindow(RenderWindow); //********************
ui.qvtkWidget->update(); //********************
RenderWindowInteractor->SetInteractorStyle(style);
RenderWindowInteractor->Initialize();
RenderWindowInteractor->Start(); //********************
2016年09月19日 01点09分
4