颜色
前面的内容我们提到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。