vtk 中vtkMapper的各函数解析

vtkMapper是一个抽象类,负责将数据映射到图形元素上。它使用lookup table映射数据并控制渲染过程。重要特性包括:ScalarVisibility控制标量数据是否影响颜色,ScalarMode设定标量数据类型,ImmediateModeRendering选择渲染方式,以及处理Z-buffer以优化多边形渲染。此外,Mapper还涉及颜色映射、静态数据支持、查找表管理和一致性拓扑处理等功能。
摘要由CSDN通过智能技术生成

它是一个抽象类,用来指定接口去映射数据到图形初级单元上。子类通过一个lookuptable来映射数据,并且控制渲染初级单元(图形库的接口)的建立。这种映射能够通过控制提供的lookup table和指定映射数据的scalar(标量)的范围来控制。这之中有一些重要的控制机制来影响这个类的一些常量。ScalarVisibility flag控制标量数据是否控制Mapper相关actors的颜色。ScalarMode ivar 用来控制是标量数据还是单元数据用来控制对象的颜色。通常情况下,点数据的标量只有在单元标量不存在时才会被用,或者你也可以控制是用点数据还是单元数据,最后,通过lookup table 来控制标量的映射是通过设置ColorMode flag来实现的。相关请看文档。

这个类的另外一个特征就是是否使用即时渲染(ImmediateModeRenderingOn)或者显示系列渲染(就是一次渲染多副)(ImmediateModeRenderingOff)如果采用display lists,一个数据结构就会被建立(大致在渲染库里),它能够快速遍历并且通过渲染库渲染。display lists的劣势在于它会需要更多的内存,因此会影响系统的运行质量。

还有一个重要的特征就是改变z-buffer去保存一致拓扑。例如,如果你要画一个有不同颜色边的网格,这个特征能够得到好的可视化线。

#ifndef __vtkMapper__h 这是 //if not defined的简写是宏定义的一种,它是可以根据是否已经定义了一个变量来进行分支选择

没定义就定义__vtkMapper__h

分别导入vtkRenderingCoreModule.h//用来导入宏。父类vtkAbstractMapper3D.h,vtkScalarsToColors.h用来VTK_COLOR_MODE_DEFAULT和_MAP_SCALARS的使用

public:

1.通过vtkTypeMacro宏定义vtkMapper的父类是vtkAbstractMapper3D。

2.定义PrintSelf函数

3.定义浅复制函数ShallowCopy(vtkAbstractMapper *m);

4.重载标准的时间修改方法。如果lookup table被修改,这个对象也要被修改。unsigned long GetMTime();//获得修改时间

5.方法初始化mapping进程。整体由actor传输并且每一个frame都被渲染。 virtual void Render(vtkRenderer *ren, vtkActor *a)=0;

6.释放任何由这个mapper产生的图形源。元素window可以用来决定释放哪个图形源 virtual void ReleaseGraphicsResources(vtkWindow *)

7.指定一个lookup table 给mapper使用。void SetLookupTable(vtkScalarsToColors *lut);vtkScalarsToColors *GetLookupTable();

8.创建默认的lookup table。普遍用来创建一个lookup table当scalar data没有可用的时候。

9.通过turn on/off标记控制mapper的数据是否是静态的。静态数据意味着mapper不传递更新到流水线中,极大减少它用来更新mapper的时间。这只用在数据永远不改变的情况下。vtkSetMacro(Static,int);vtkGetMacro(Static,int);vtkBooleanMacro(Static,int);

10.控制标量数据如何映射到颜色上。默认情况下(ColorModeToDefault),usigned char 标量数据被用来作为颜色,并且不通过lookup table来映射,但是其他所有东西都是通过lookup table的。设置ColorModeToMapScalars意味

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值