控制光源比控制相机容易得多。通用的方法是SetFoca
、 )SetPositi
和 )SetColor()
。光源的位置和焦点控制了光源的方向,光源的颜色则用一个RGB向量来表示。通过Switch
和 )SwitchOff()
方法可以打开或关闭光源,而光源的亮度可以用SetIntensity()
方法来设定。
默认情况下,vtkLight的实例是方向光源。这意味着位置和焦点定义了平行于光线传播的一个向量,而且光源被认为是在无穷远处。因此,即使位置和焦点发生变化,照在物体上的光线也不会改变。你可以通过以下链接获取更多关于光源选型的详细信息:光源选型介绍。
在这里,我们创建了一个红色前灯:它定位于相机(caml’s)并指向相机的焦点。这个技巧非常有用,交互的绘制器用它来定位相机移动时的光源(详细信息请参见48页的“使用VTK Interactors”)。位置光源可以通过使用Position
方法来创建。这个方法与 )SetConeAngle()
方法结合使用来控制点的传播。一个180度的锥角意味着没有哪个点光源效果会被应用(即,截短的光源锥);只有位置的效果。
关于如何选择合适的光源,你可以参考这篇机器视觉光源的介绍及选择方法,其中详述了不同光源的适用场景和选择标准。
控制3D道具时,VTK中的对象通常被称为“道具”(就像舞台上的道具)。有一些不同类型的道具,包括vtkProp3D
和vtkActor
。vtkProp3D
是存在于3D空间中的那些道具类型的一个抽象超类,它有一个4x4的变换矩阵,用于支持平移、旋转、缩放和几何投射。而vtkActor
是vtkProp3D
的一种类型,它的几何由多边形和线来定义。你可以在这里找到关于VTK库接口的详细介绍:主要介绍VTK库接口。
为了确定vtkProp3D
的位置,我们可以使用以下方法:
-
SetPosition(x,y,z)
——在世界坐标中确定位置。 -
AddPositi
——沿着每个x,y,z轴变换一定数量。 deltaX,deltaY,deltaZ) -
RotateX(theta)
、RotateY(theta)
、RotateZ(theta)
——分别围绕x,y,z轴旋转一定角度。 -
SetOrientation(x,y,z)
——通过围绕z轴、y轴、z轴的顺序旋转设定道具的方位。 -
AddOrientation(x,y,z)
——添加到道具的当前方位。 -
RotateWXYZ(theta,x,y,z)
——围绕定义的x-y-z向量旋转一定角度。 -
Scale(sx,sy,sz)
——在x,y,z轴方向上缩放。 -
SetOrigin(x,y,z)
——确定道具的原点,旋转和缩放围绕原点发生。
这些方法以复杂的方式组合起来控制变换矩阵。重要的是要记住,这些操作按照特定的顺序应用,而且应用的顺序会影响actor的位置。详细的使用指南请参考:VTK工具包介绍。
难道不想了解更多关于3D道具和光源控制的技巧吗?探寻这些资源,让你的项目更加出彩吧!
暂无评论