VTK和Paraview体积渲染

时间:2017-01-28 00:19:39

标签: 3d visualization vtk paraview

Paraview是一个基于VTK库的可视化应用程序。我有一个体积(vti格式),我可以在Paraview中将其可视化并设置颜色和不透明度传递函数。我也可以将它作为vtkImageData加载到VTK中并使用与Paraview相同的颜色和传递函数设置渲染它,但是,我无法得到相同的结果。 卷的Paraview渲染: Paraview visualisation

使用相同设置对卷进行VTK渲染: VTK visualisation

Paraview中的设置: enter image description here

VTK中的片段用于设置:

vtkSmartPointer<vtkPiecewiseFunction> compositeOpacity =
vtkSmartPointer<vtkPiecewiseFunction>::New();
compositeOpacity->AddPoint(0.0,0.0);
compositeOpacity->AddPoint(255,1.0);

vtkSmartPointer<vtkColorTransferFunction> color =
        vtkSmartPointer<vtkColorTransferFunction>::New();
color->AddRGBPoint(0.0  , 0.231373, 0.298039, 0.752941);
color->AddRGBPoint(18.62, 0.865, 0.865, 0.865);
color->AddRGBPoint(61.52, 0.9647, 0.639, 0.518);
color->AddRGBPoint(249, 0.705882, 0.01568, 0.14902);

vtkSmartPointer<vtkVolumeProperty> volumeProperty =
        vtkSmartPointer<vtkVolumeProperty>::New();
volumeProperty->SetScalarOpacity(compositeOpacity); // composite first.
volumeProperty->SetColor(color);

// Visualize
vtkSmartPointer<vtkSmartVolumeMapper> mapper =
        vtkSmartPointer<vtkSmartVolumeMapper>::New();
mapper->SetInputData(imageData);
mapper->SetRequestedRenderModeToDefault();

如果要在VTK中使用相同的渲染,我该怎么办?

2 个答案:

答案 0 :(得分:0)

我相信你必须在Paraview中禁用不透明度映射。

希望它有所帮助!

答案 1 :(得分:0)

尝试显式设置混合模式,例如: mapper-> SetBlendModeToComposite();

vtkSmartVolumeMapper使用不同的映射器,具体取决于您选择的模式。请参阅此处的文档: https://www.vtk.org/doc/nightly/html/classvtkSmartVolumeMapper.html

我使用的是vtkOpenGLGPUVolumeRayCastMapper而不是vtkSmartVolumeMapper,并且在我的应用程序中透明显示了透明胶片。