ParviewWeb学习记录4——模型颜色问题1

问题一:pvw颜色与模型本身定义颜色无关?

pvw,模型的颜色显示与模型本身定义无关,是由pvw自己设置的颜色,why?不理解为什么这么设计。

测试过程:helper.py文件定义了颜色模式,在registerArray中,对RGBPoints的修改,影响模型的颜色,发现他会根据第1个参数与第5个参数的大小,来决定采用第一组或者第二组RGB值,但又不是简单的大小比较;

vtk颜色映射是一种标量算法,目的是突出显示数据集中重要的属性数据,使用灰度颜色,能提供更好的表现细节,使用彩色颜色能增强对比度。在pvw中,默认的颜色是采用数据的映射,标量计算方法。保存数据的点,再保存数据的面片;创建数据对象;设置每一个顶点的标量值(SetScalars(scalars));设定颜色映射表(在pvw中这个映射表是blue-red,使用HSV的颜色模式);然后进行渲染,会根据标量值从颜色映射表中去选取合适的颜色;


问题二:标量值怎么得到的?

是根据属性值来计算的,vtkMapper 的控制哪一种属性数据 (例如点属性数据、 单元属性数据、属性数据数组)被用于颜色映射。


问题三:

猜测:vtk可以根据模型读入的颜色去渲染,怎么去找这种模式?


问题四:vtk的Actor

用来在一场景中表现一个可视化实体,如一些简单的球形、锥体等,Actor 提供了一组相关的绘制属性,如物体的表面属性(反射光、漫反射光、颜色等) 、物体的显示方式(实体显示、线框显示) 、物体的纹理映射、物体的几何体定义等。

首先创建模型;然后vtkPolyDataMapper创建映射器;然后通过映射器将数据转入到图形系统;通过vtkProperty设置模型属性,例如Actor->GetProperty()->SetColor(1,1,1);然而当被绘制的图形带有属性数据的时候,前面所述的方法不能设置模型的颜色,vtk会使用默认的数据为模型添加颜色,因此需要使用ScalarVisibilityOff()方法来忽略属性值,就可以使用物体的材质、物体的环境光、漫反射光、镜面反射光为物体绘制颜色,这也就是为什么模型显示的颜色不是模型本身定义的颜色的原因!

vtkPolyDataMapper *pPolyMap= vtkPolyDataMapper::New();
pPoly->SetInput(pPlane->GetOutput());
//忽略属性数据
pPoly-> ScalarVisibilityOff();
vtkActor *myActor=vtkActor::New();//创建演员对象
myActor->SetMapper(pPoly);//将可视化流水线数据转入图形系统
myActor->GetProperty()->SetColor(1,1,1); //设置绘制物体的颜色


你可能感兴趣的:(Paraview)