1.vtkVolume
vtkVolume类似于几何渲染中的vtkActor,用于表示渲染场景中的对象。除了存储基本变换信息(平移、旋转、缩放等),其内部还存储了两个重要对象。这两个对象分别是vtkAbstractVolumeMapper对象和vtkVolumeProperty对象。
1.1 void SetMapper(vtkAbstractVolumeMapper* mapper);
该函数用于连接vtkAbstractVolumeMapper对象,并根据不同的体绘制算法获取其内部生成的图元数据。具体的体绘制Mapper如下所示:
1.2 void SetProperty(vtkVolumeProperty* property)
该函数用于设置VTKVolumeProperty对象。其中vtkVolumeProperty用来设置体绘制的颜色、不透明度函数、阴影等信息。在体绘制中,颜色和不透明度设置至关重要,决定了最终的显示结果。
2.VTKVolumeProperty——不透明度传输函数
不透明度传输函数是一个分段线性标量映射函数,利用该函数可将光线投影过程中的采样点灰度值映射为不同的不透明度值,已决定最终颜色值。一个标准的不透明度设置代码如下:
VTKVolumeProperty类中通过如下函数设置和获取不透明度函数://添加灰度不透明度属性 vtkSmartPointer<vtkPiecewiseFunction> compositeOpacity = vtkSmartPointer<vtkPiecewiseFunction>::New(); compositeOpacity->AddPoint(70, 0.0); compositeOpacity->AddPoint(90, 0.4); compositeOpacity->AddPoint(180, 0.6); volumeProperty->SetScalarOpacity(compositeOpacity);
vtkPiecewiseFunction类定义标量线性分段函数,其支持两种设置方式,第一种方式是直接添加断点;第二种是直接添加一条线段,即添加两个断点。void SetScalarOpacity(vtkPiecewiseFuntion* function); vtkPiecewiseFunction* GetScalarOpacity(int Index);
2.1 直接添加断点
该函数驱动如下:
第一个参int AddPoint(double x,double y);