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

使用相同设置的VTK渲染体积:

Paraview中的设置:

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中获得相同的渲染效果?
发布于 2017-02-25 01:22:29
我相信你必须在Paraview中禁用不透明贴图。
希望它能帮上忙!
发布于 2018-11-08 00:25:18
尝试显式设置混合模式,例如: mapper->SetBlendModeToComposite();
根据您选择的模式,vtkSmartVolumeMapper使用不同的映射器。请参阅此处的文档:https://www.vtk.org/doc/nightly/html/classvtkSmartVolumeMapper.html
我使用的是vtkOpenGLGPUVolumeRayCastMapper而不是vtkSmartVolumeMapper,并且在我的应用程序中,音量透明效果显示正确。
https://stackoverflow.com/questions/41905072
复制相似问题