概念
RGB颜色系统:通过红(R)、绿(G)、蓝(B)三个颜色分量的组合来定义颜色。每个分量的取值范围是0到1,其中(0, 0, 0)代表黑色,而(1, 1, 1)代表白色。可以使用vtkProperty::SetColor(r, g, b)方法为Actor设置颜色。
HSV颜色系统:基于色相(Hue)、饱和度(Saturation)和亮度(Value)三个属性来定义颜色。HSV颜色模型更接近人类对颜色的感知方式。色相表示颜色的类型(如红色、绿色等),饱和度表示颜色的纯度,亮度则控制颜色的明暗程度。这三个属性的取值同样在0到1之间。HSV颜色系统的设置可以通过vtkLookupTable类来实现。
RGB示例
# include <istream>
# include <vtkSmartPointer.h>
# include <vtkRenderer.h>
# include <vtkRenderWindow.h>
# include <vtkRenderWindowInteractor.h>
# include <vtkCamera.h>
# include <vtkInteractorStyleTrackballCamera.h>
# include <vtkCylinderSource.h>
# include <vtkPolyDataMapper.h>
# include <vtkActor.h>
# include <vtkProperty.h>
# include <vtkAutoInit.h>
# include <vtkSphereSource.h>
# include <vtkLineSource.h>
# include <vtkPlaneSource.h>
# include <vtkNamedColors.h>
VTK_MODULE_INIT ( vtkRenderingOpenGL2) ;
VTK_MODULE_INIT ( vtkInteractionStyle) ;
VTK_MODULE_INIT ( vtkRenderingFreeType) ;
using namespace std;
int main ( )
{
vtkNew< vtkNamedColors> colors;
vtkNew< vtkSphereSource> sphereSource;
sphereSource-> Update ( ) ;
vtkNew< vtkPolyDataMapper> mapper;
mapper-> SetInputConnection ( sphereSource-> GetOutputPort ( ) ) ;
vtkNew< vtkActor> actor;
actor-> SetMapper ( mapper) ;
actor-> GetProperty ( ) -> SetColor ( colors-> GetColor3d ( "Tomato" ) . GetData ( ) ) ;
vtkNew< vtkRenderer> renderer;
renderer-> AddActor ( actor) ;
renderer-> SetBackground ( colors-> GetColor3d ( "SlateGray" ) . GetData ( ) ) ;
vtkNew< vtkRenderWindow> renderWindow;
renderWindow-> AddRenderer ( renderer) ;
renderWindow-> SetSize ( 640 , 480 ) ;
vtkNew< vtkRenderWindowInteractor> renderWindowInteractor;
renderWindowInteractor-> SetRenderWindow ( renderWindow) ;
renderWindow-> Render ( ) ;
renderWindowInteractor-> Start ( ) ;
return 0 ;
}
HSV示例
# include <vtkLineSource.h>
# include <vtkPlaneSource.h>
# include <vtkNamedColors.h>
# include <vtkLookupTable.h>
VTK_MODULE_INIT ( vtkRenderingOpenGL2) ;
VTK_MODULE_INIT ( vtkInteractionStyle) ;
VTK_MODULE_INIT ( vtkRenderingFreeType) ;
using namespace std;
int main ( )
{
vtkNew< vtkNamedColors> colors;
vtkNew< vtkSphereSource> sphereSource;
sphereSource-> Update ( ) ;
vtkNew< vtkLookupTable> lookupTable;
lookupTable-> SetHueRange ( 0.667 , 0.0 ) ;
lookupTable-> Build ( ) ;
vtkNew< vtkPolyDataMapper> mapper;
mapper-> SetInputConnection ( sphereSource-> GetOutputPort ( ) ) ;
mapper-> SetLookupTable ( lookupTable) ;
mapper-> UseLookupTableScalarRangeOn ( ) ;
vtkNew< vtkActor> actor;
actor-> SetMapper ( mapper) ;
vtkNew< vtkRenderer> renderer;
renderer-> AddActor ( actor) ;
renderer-> SetBackground ( colors-> GetColor3d ( "SlateGray" ) . GetData ( ) ) ;
vtkNew< vtkRenderWindow> renderWindow;
renderWindow-> AddRenderer ( renderer) ;
renderWindow-> SetSize ( 640 , 480 ) ;
vtkNew< vtkRenderWindowInteractor> renderWindowInteractor;
renderWindowInteractor-> SetRenderWindow ( renderWindow) ;
renderWindow-> Render ( ) ;
renderWindowInteractor-> Start ( ) ;
return EXIT_SUCCESS;
}