vtk光照、颜色、相机、坐标系统及空间变换
来源:互联网 发布:软件集成规范 编辑:程序博客网 时间:2024/05/22 01:47
1、vtkLight常的方法有:
SetColor() — 设置光照的颜色,以RGB的形式指定颜色。
SetPosition() — 设置光照位置。
SetFocalPoint() — 设置光照焦点。
SetIntensity() — 设置光照的强度。
SetSwitch() / SwitchOn()/ SwitchOff()— 打开或关闭对应的光照。
在基础概念代码中加入:
vtkSmartPointer<vtkLight> myLight = vtkSmartPointer<vtkLight>::New();myLight->SetColor(0, 1, 0);myLight->SetPosition(0, 0, 1);myLight->SetFocalPoint(renderer->GetActiveCamera()->GetFocalPoint());renderer->AddLight(myLight); //将光线照加入到渲染场景中vtkSmartPointer<vtkLight> myLight2 = vtkSmartPointer<vtkLight>::New();myLight2->SetColor(0, 0, 1); //设置光照颜色myLight2->SetPosition(0, 0, -1); //设置光照位置myLight2->SetFocalPoint(renderer->GetActiveCamera()->GetFocalPoint());renderer->AddLight(myLight2);
为什么这个运行出来的结果是放大状态,通过缩小才能看见这个圆柱体!
2、确定相机实际方向(相机的视图)的有三个因素:相机位置、相机焦点和朝上方向。
vtkCamera定义了两种投影方法,一种是正交投影(OrthographicProjection),也叫平行投影(Parallel Projection),即进入相机的光线与投影方向是平行的。另一种是透视投影(PerspectiveProjection),即所有的光线相交于一点。
l 视角:透视投影时需要指定相机的视角(View Angle),默认的视角大小为30º,可以用方法vtkCamera::SetViewAngle()设置。
控制相机运动的方法:vtkCamera::Dolly(),vtkCamera::Roll(),vtkCamera::Azimuth(),vtkCamera::Yaw(),
vtkCamera::Elevation(),vtkCamera::Pitch(),vtkCamera::Zoom()。
3、颜色
VTK采用RGB和HSV两种颜色系统来描述颜色。vtkProperty::SetColor(r,g, b)采用的就是RGB颜色系统设置颜色属性值。
HSV颜色系统同样也是由三个分量来决定颜色,分别是:色相(Hue),是颜色的基本属性,就是我们平常所说的颜色名称,如红色、黄色等;饱和度(Saturation),是指颜色的纯度,其值越高则越纯;值(Value,也就是强度Intensity或者亮度Bright),值为0通常表示的是黑色,值为1表示的是最亮的颜色。这三个分量的取值范围也是0到1。类vtkLookupTable提供了HSV颜色系统设置的方法。
与颜色设置相关的VTK类除了vtkProperty,vtkLookupTable之外,还有vtkColorTransferFunction。vtkLookupTable和vtkColorTransferFunction都派生自vtkScalarsToColors。
4、坐标系统及空间变换
计算机图形学里常用的坐标系统主要有四种,分别是:Model坐标系统、World坐标系统、View坐标系统和Display坐标系统,它们之间的关系如图3.9所示。
在VTK里,Model坐标系统用得比较少,其他三种坐标系统经常使用。它们之间的变换则是由类vtkCoordinate进行管理的。
l DISPLAY — X、Y轴的坐标取值为渲染窗口的像素值。坐标原点位于渲染窗口的左下角,这个对于VTK里所有的二维坐标系统都是一样的,且VTK里的坐标系统都是采用右手坐标系。
l NORMALIZEDDISPLAY — X、Y轴坐标取值范围为[0, 1],跟DISPLAY一样,也是定义在渲染窗口里的。
l VIEWPORT— X、Y的坐标值定义在视口或者渲染器(Renderer)里。
l NORMALIZEDVIEWPORT — X、Y坐标值定义在视口或渲染器里,取值范围为[0, 1]。
l VIEW— X、Y、Z坐标值定义在相机所在的坐标系统里,取值范围为[-1, 1],Z值表示深度信息。
l WORLD — X、Y、Z坐标值定义在世界坐标系统,参考图3.9。
l USERDEFINED— 用户自定义坐标系统。
vtkCoordinate类提供的设置以上坐标系统的方法是:
SetCoordinateSystemToDisplay ()
SetCoordinateSystemToNormalizedDisplay ()
SetCoordinateSystemToViewport ()
SetCoordinateSystemToNormalizedViewport ()
SetCoordinateSystemToView ()
SetCoordinateSystemToWorld ()
三维到二维投影的方法包括:透视投影和正交投影两种方法。
注:本文是学习笔记,资源来源于http://blog.csdn.net/www_doling_net/article/details/8540007
- vtk光照、颜色、相机、坐标系统及空间变换
- VTK修炼之道9:坐标系统及空间变换(窗口-视图分割)
- VTK学习(七)坐标系统和空间变换
- 相对空间变换及颜色
- VTK学习-坐标系统
- SVG坐标系统及图形变换
- 软件光栅器四之从相机空间到视平面的坐标变换
- VTK基本概念之坐标系统
- 颜色空间变换大全
- 坐标变换 及矩阵变换
- 坐标系统及其变换
- 坐标系统变换
- 坐标系统变换
- [OpenGL ES 05]相对空间变换及颜色
- [OpenGL ES 05]相对空间变换及颜色
- [OpenGL ES 05]相对空间变换及颜色
- [OpenGL ES 05]相对空间变换及颜色
- [OpenGL ES 05]相对空间变换及颜色
- 排序算法
- Network学习18_Java网络编程
- Servlet的编写方法
- 京东掌舵人——刘强东
- Again Twenty Five!
- vtk光照、颜色、相机、坐标系统及空间变换
- "ase_exploration"----一种开源的主动SLAM系统介绍
- 2017
- Spring-AOP讲解-附带实例
- Spark
- java多态
- java基础之递归调用
- Django 安装mysqlclient 或者其他模块。
- 又是一年1024程序员节