vtkLight可以分为位置光照(Positional Light,即聚光灯)和方向光照(Direction Light,即平行光)

位置光照是光源位置在渲染场景中的某个位置,可以指定光照的衰减值、锥角等;方向光照即光源位置在无穷远,光线可以认为是平行的,比如自然界中的太阳光。光源的位置和焦点的连线定义光线的方向,默认的vtkLight即为方向光照。

  • SetPosition():设置灯光位置。
  • SetFocalPoint():设置灯光焦点。
  • SetIntensity():设置灯光强度。
  • SetConeAngle();设置灯光锥角 (只有聚光灯时有效)
  • PositionalOff/On 选择设置平行光或者聚光

   

1)平行光

平行光属性设置

  • SetPosition():设置灯光位置。

       SetFocalPoint():设置灯光焦点

只跟焦点和位置、灯光强度有关

 

物体的光照属性主要包括环境光系数、漫反射光系数、镜反射光系数和镜面指数四个,分别用方法SetAmbient()SetDiffuse()SetSpecular()SetSpecularPower()进行设置。 

  • SetAmbient()设置环境光系数 (放多个物体)
  • SetDiffuse()设置散射光系数
  • SetSpecular()设置反射光系数

- 环境光系数表示各种光线照射到物体材质上,经过很多次发射后最终在环境中的光线强度。 

 

实例演示

1每个球体上方添加它的环境光系数,如下图所示。我们可以看出:随着环境光系数属性值的增加,球体越来越亮,但是看上去不像球体,而像个 2D的圆盘。这是因为其他光反射系数都为零了,因而没有很好地反映出现实中物体的实际光照属性。参数设置 SetDiffuse(0.0) SetSpecular(0.0)SetAmbient(x); x = 0.1250.250.3750.50.6250.750.8751.0

vtk灯光效果 vtklight

(2)在截图上,每个球体上方固定环境光系数,如下图所示。我们可以看出:随着漫反射光系数属性值的增加,球体越来越亮,因而没有很好地反映出现实中物体的实际光照属性。

SetSpecular(0.0)SetAmbient(0.5); SetDiffuse(x)x = 0.1250.250.3750.50.6250.750.8751.0

vtk灯光效果 vtklight

 

 

 

 

 

 

3)在截图上,每个球体上方固定环境光系数,如下图所示。我们可以看出:随着镜面反射光系数属性值的增加,球体越来越亮,因而没有很好地反映出现实中物体的实际光照属性。SetDiffuse(0.0)SetAmbient(0.5); SetSpecular (x)x = 0.1250.250.3750.50.6250.750.8751.0

vtk灯光效果 vtklight

 

在这三个系数中,当环境光系数占主导时,阴影效果不明显。当散射光系数占主导时,显示效果会比较粗燥;但反射光系数占主导时,显示效果会比较光滑。

 

(4)镜面指数的取值范围是0~128。该值越小,表示材质越粗糙,点光源发射的光线照射到上面,也可以产生较大的亮点;该值越大,表示材质越类似于镜面,光源照射到上面后,产生较小的亮点。SetSpecular(0.0)SetAmbient(0.5); SetDiffuse(1)

SetSpecularPowerx),x = 0,20,40,60,80,100,120,128.

vtk灯光效果 vtklight

问题:

(1.环境光系数理解 2.怎么调节系数搭配 )

 

 

 

 

2)聚光灯

  • SetColor():设置灯光的颜色,以RGB的形式指定颜色
  • SetPosition():设置灯光位置。
  • SetFocalPoint():设置灯光焦点。
  • SetIntensity():设置灯光强度。
  • SetConeAngle();设置灯光锥角 (只有聚光灯时有效)

 

SetPosition(0,0,3)

SetFocalPoint(0,0,0)

SetConeAngle(0)

Setcolor100);

vtk灯光效果 vtklight 有环境光

vtk灯光效果 vtklight 无环境光

 

 

SetConeAngle(10)

vtk灯光效果 vtklight

vtk灯光效果 vtklight

 

 

SetConeAngle(80)

vtk灯光效果 vtklight

vtk灯光效果 vtklight

SetConeAngle(90)

vtk灯光效果 vtklight

vtk灯光效果 vtklight

 

SetConeAngle(100)

vtk灯光效果 vtklight

vtk灯光效果 vtklight

 

 

 

SetConeAngle(180)弹出跟平行光一样的错误 不是点光源 效果跟平行光一样

vtk灯光效果 vtklightvtk灯光效果 vtklight

问题:

研究这个有什么用 对于我们有什么提升 理解更深刻

 

 

 

3)灯光类型

1. light->SetLightTypeToSceneLight();

设置灯光类型为场景灯光 (默认添加时为场景灯光)

灯光为固定位置

 

2. light-> SetLightTypeToCameraLight ();

设置灯光类型为相机灯光

灯光会自动随相机移动

摄像机坐标被定义在坐标空间中,其中灯光机位于(0, 0, 1),朝向(0, 0, 0)在1的距离处,向上(0, 1, 0)

vtk灯光效果 vtklight

 

方向一致

3. light-> SetLightTypeToHeadlight ();

前照灯总是位于摄像机上,并指向摄像机的焦点。渲染器可以随时修改相机的位置和焦点

 

vtk灯光效果 vtklight

位置固定

 

问题:

(render自带光是什么属性 是属于哪种类型 怎么验证)

相关文章: