体绘制_VolumeProperty_不透明度传递函数+梯度不透明度传递函数+颜色传递函数+阴影+vtklodpro3D

1.不透明度传递函数:vtkPiecewiseFunction

设置方式:SetScalarOpacity(vtkPiecewiseFuntion* function)

​​​​​​VTK修炼之道67:体绘制讨论_不透明度传输函数_setscalaropacity-CSDN博客

2.梯度不透明度传递函数:vtkPiecewiseFunction

设置方式:SetGradientOpacity(vtkPiecewiseFunction* function)

梯度不透明度函数是将梯度模值映射为一个不透明度乘子,从而增强过渡区域的显示效果。

VTK修炼之道68:体绘制讨论_梯度不透明度传输函数_vtkpiecewisefunction-CSDN博客

3.颜色传递函数:VTKColorTransferFunction

VTK修炼之道69:体绘制讨论_颜色传输函数_vtkcolortransferfunction-CSDN博客

4.阴影

volumeProperty->ShadeOn();  #开启阴影
volumeProperty->SetAmbient(0.4);  #设置环境光系数
volumeProperty->SetDiffuse(0.6);  #设置散射光系数
volumeProperty->SetSpecular(0.2); #设置反射光系数

一般情况下,Ambient、Diffuse、Specular三个系数的和应该为1。
但是有时候,在体绘制过程中为了提高亮度,三值之和会大于1。
vtkVolumeProperty中默认是是关闭阴影效果的,因此需要显式调用ShadeOn()函数来打开阴影效果。

需要注意的是,开启阴影效果对vtkUnstructuredGrid数据类型是无效的;此外,对vtkImageData的最大密度投影也是无效的。而且对于多元数据,虽然可以为每一个组分开启阴影以及设置相应的系数,但是,现有VTK的vtkVolumeMapper类并不支持该类型数据体数据中的渲染效果。
 

VTK修炼之道70:体绘制讨论_光照&阴影、VTKLODProp3D_体绘制可以加光源吗-CSDN博客

5.体绘制加速:vtkLODProp3D

对于一个大数据来讲,体绘制是一个计算量非常庞大、非常耗时的操作。尤其是在用户交互过程,需要不断对数据进行渲染,这样就造成了交互不流畅,用户体验差。
可以使用VTKLODProp3D来解决这个问题,提高绘制速度。vtkLODProp3D类的用法与vtkVolume类似,两者都继承自vtkProp3D。不同的是,vtkLODProp3D类能够支持多个Mapper、Property和Texture对象,并由他选择Mapper对象实现绘制。
例如,当绘制一个数据量非常大的不规则网格数据时,可以添加一个vtkPolyDataMapper渲染一个表面模型,作为最低级别分辨率的渲染;然后将数据采样为VTKImageDataMapper数据,并添加一个vtkVolumeTextureMapper3D进行体绘制,作为一个中间级别渲染;左后可以通过ZSweep技术(vtkUnstructuredGridVolumeZSweepMapper)渲染原始数据,作为最高级别的渲染。
vtkLODProp3D在渲染过程中,会为每个Mapper估计一个渲染时间,并选择一个最优的实现渲染。

具体:

VTK修炼之道70:体绘制讨论_光照&阴影、VTKLODProp3D_体绘制可以加光源吗-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值