颜色

前面的内容我们提到Actor的属性,颜色是Actor比较重要的属性之一。VTK采用RGB和HSV两种颜色系统来描述颜色。

RGB颜色系统就是由三个颜色分量:红色(R)、绿色(G)和蓝色(B)的组合表示,在VTK里这三个分量的取值都是从0到1,(0, 0, 0)表示黑色,(1, 1, 1)表示白色。vtkProperty::SetColor(r,g, b)采用的就是RGB颜色系统设置颜色属性值。

HSV颜色系统同样也是由三个分量来决定颜色,分别是:色相(Hue),是颜色的基本属性,就是我们平常所说的颜色名称,如红色、黄色等;饱和度(Saturation),是指颜色的纯度,其值越高则越纯;值(Value,也就是强度Intensity或者亮度Bright),值为0通常表示的是黑色,值为1表示的是最亮的颜色。这三个分量的取值范围也是0到1。类vtkLookupTable提供了HSV颜色系统设置的方法。

表3.1列出了常用颜色RGB和HSV值的对照。

颜色

RGB

HSV

黑色Black

0, 0, 0

*, *, 0

白色White

1, 1, 1

*, 0, 1

红色Red

1, 0, 0

0, 1, 1

绿色Green

0, 1, 0

1/3, 1, 1

蓝色Blue

0, 0, 1

2/3, 1, 1

黄色Yellow

1, 1, 0

1/6, 1, 1

蓝绿色Cyan

0, 1, 1

1/2, 1, 1

品红色Magenta

1, 0, 1

5/6, 1, 1

天蓝色Sky blue

1/2, 1/2, 1

2/3, 1/2, 1

表3.1 常用颜色RGB和HSV值的对照

与颜色设置相关的VTK类除了vtkProperty,vtkLookupTable之外,还有vtkColorTransferFunction。vtkLookupTable和vtkColorTransferFunction都派生自vtkScalarsToColors。