3d VTK与Paraview体绘制

3d VTK与Paraview体绘制,3d,visualization,vtk,paraview,3d,Visualization,Vtk,Paraview,是一个基于VTK库的可视化应用程序。我有一个体积(vti格式),我可以在Paraview中可视化它,并设置颜色和不透明度传递函数。我还可以将它作为vtkImageData加载到VTK中,并使用与Paraview相同的颜色和传递函数设置进行渲染,但是,我无法获得相同的结果。 卷的旁视图渲染: 使用相同设置对卷进行VTK渲染: Paraview中的设置: VTK中用于设置的代码段: vtkSmartPointer<vtkPiecewiseFunction> compositeOpa

是一个基于VTK库的可视化应用程序。我有一个体积(vti格式),我可以在Paraview中可视化它,并设置颜色和不透明度传递函数。我还可以将它作为vtkImageData加载到VTK中,并使用与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();
vtkSmartPointer复合能力=
vtkSmartPointer::New();
复合能力->添加点(0.0,0.0);
CompositeCapacity->AddPoint(255,1.0);
VTKSmart指针颜色=
vtkSmartPointer::New();
颜色->添加RGB点(0.0,0.231373,0.298039,0.752941);
颜色->添加RGB点(18.62,0.865,0.865,0.865);
颜色->添加RGB点(61.52,0.9647,0.639,0.518);
颜色->添加RGB点(249,0.705882,0.01568,0.14902);
VTKSmart指针卷属性=
vtkSmartPointer::New();
volumeProperty->设置容量(CompositeCapacity);//先合成。
volumeProperty->SetColor(颜色);
//想象
VTKSmart指针映射器=
vtkSmartPointer::New();
映射器->设置输入数据(图像数据);
映射器->SetRequestedRenderModeFault();

为了在VTK中具有相同的渲染效果,我可以做些什么?

我认为您必须在Paraview中禁用不透明度贴图


希望有帮助

我认为您必须在Paraview中禁用不透明度贴图


希望有帮助

尝试明确设置混合模式,例如: 映射器->SetBlendModeToComposite()

vtkSmartVolumeMapper根据您选择的模式使用不同的映射器。请参阅此处的文档:


我使用的是vtkOpenGLGPUVolumeRayCastMapper,而不是vtkSmartVolumeMapper,在我的应用程序中,卷透明度正确显示

尝试明确设置混合模式,例如: 映射器->SetBlendModeToComposite()

vtkSmartVolumeMapper根据您选择的模式使用不同的映射器。请参阅此处的文档:


我使用的是vtkOpenGLGPUVolumeRayCastMapper,而不是vtkSmartVolumeMapper,在我的应用程序中,卷透明度正确显示

将上部不透明度从1.0更改为更小的值(例如,0.2)是否会使VTK的体绘制更接近ParaView的体绘制?您是如何解决的?将上部不透明度从1.0更改为更小的值(例如,0.2)是否会使VTK的体绘制更接近ParaView的体绘制?您是如何解决的?抱歉,我实际上需要VTK显示与Paraview相同的内容,而不是相反。谢谢。对不起,我实际上需要VTK显示与Paraview相同的内容,而不是相反。非常感谢。