VTK修炼之道67:体绘制讨论_不透明度传输函数

本文介绍了VTK中的vtkVolume组件,用于体绘制的vtkAbstractVolumeMapper和vtkVolumeProperty对象。重点讲解了不透明度传输函数,包括如何添加、删除断点,以及Clamping标志的作用。通过实例展示了不同不透明度设置对体绘制效果的影响。
摘要由CSDN通过智能技术生成

1.vtkVolume

vtkVolume类似于几何渲染中的vtkActor,用于表示渲染场景中的对象。除了存储基本变换信息(平移、旋转、缩放等),其内部还存储了两个重要对象。这两个对象分别是vtkAbstractVolumeMapper对象和vtkVolumeProperty对象。

1.1 void SetMapper(vtkAbstractVolumeMapper* mapper);

该函数用于连接vtkAbstractVolumeMapper对象,并根据不同的体绘制算法获取其内部生成的图元数据。具体的体绘制Mapper如下所示:


1.2 void SetProperty(vtkVolumeProperty* property)

该函数用于设置VTKVolumeProperty对象。其中vtkVolumeProperty用来设置体绘制的颜色、不透明度函数、阴影等信息。在体绘制中,颜色和不透明度设置至关重要,决定了最终的显示结果。

2.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);
VTKVolumeProperty类中通过如下函数设置和获取不透明度函数:

void SetScalarOpacity(vtkPiecewiseFuntion* function);
vtkPiecewiseFunction*  GetScalarOpacity(int Index);
vtkPiecewiseFunction类定义标量线性分段函数,其支持两种设置方式,第一种方式是直接添加断点;第二种是直接添加一条线段,即添加两个断点。

2.1 直接添加断点

该函数驱动如下:

int AddPoint(double x,double y);
第一个参
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值