Paraview是一个基于VTK库的可视化应用程序。我有一个体积(vti格式),我可以在Paraview中将其可视化并设置颜色和不透明度传递函数。我也可以将它作为vtkImageData加载到VTK中并使用与Paraview相同的颜色和传递函数设置渲染它,但是,我无法得到相同的结果。 卷的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中使用相同的渲染,我该怎么办?
答案 0 :(得分:0)
我相信你必须在Paraview中禁用不透明度映射。
希望它有所帮助!
答案 1 :(得分:0)
尝试显式设置混合模式,例如: mapper-> SetBlendModeToComposite();
vtkSmartVolumeMapper使用不同的映射器,具体取决于您选择的模式。请参阅此处的文档: https://www.vtk.org/doc/nightly/html/classvtkSmartVolumeMapper.html
我使用的是vtkOpenGLGPUVolumeRayCastMapper而不是vtkSmartVolumeMapper,并且在我的应用程序中透明显示了透明胶片。