写在前面:
这篇博客主要也是书上内容的整理。很基础,但也不能说不重要。在此将书上内容做个整理,便于日后复习时能提纲挈领。
vtkLight基本概念:
就好像剧场里多样的灯光一样,演员身上打了不同角度、不同颜色的灯光,观众们看到的形象也是不一样的。那么类似的,在三维场景渲染中,灯光也会影响三维物体最终展现的效果。
灯光和相机是三维渲染场景的必备要素。
在没有明确指定灯光与相机的情况下,vtkRenderer会自动创建默认的灯光和相机。VTK里用类vtkLight来表示渲染场景中的灯光。
vtkLight分为Positional Light与Direction Light。前者,可翻译为位置灯光是将光源设置在渲染场景中的某个位置;后者,可翻译为方向灯光是将光源设置在无穷远处,这样光源发射的光线可以认为是平行的。
实际编程中,需要包含对应头文件。
#include <vtkLight.h>
vtkLight常用函数:
SetColor():设置灯光的颜色,以RGB的形式指定颜色。
- SetColor():设置灯光的颜色。即(R,G,B)。详细对照表可参考表1。
- SetPosition():设置灯光位置。传入三维点位置坐标(x,y,z)。
- SetFocalPoint():设置灯光焦点。传入三维点位置坐标(x,y,z)。
- SetIntensity():设置灯光的强度。传入double类型的值,从0~1,表示灯光强度。
- SetSwitch()/SwitchOn()/SwitchOff():打开或关闭对应的灯光。如果某个类有提供SetXXX()函数,那么一般也会有对应的GetXXX()函数来获取对应的属性值。此外SetXXX(1)与XXXOn()效果相同。SetXXX(0)与XXXOff()效果相同。
vtkLight更多详细函数使用可以参考VTK官方文档:vtkLight Class Reference 。
表1 常用颜色RGB和HSV值的对照
vtkLight使用样例:
#include <vtkRenderWindow