VTK-VtkCamera使用原理

1.vtkcamera原理

vtk原理的主要的因素有:
相机位置:相机所在的位置,用方法vtkCamera::SetPosition()设置。
相机焦点:用方法vtkCamera::SetFocusPoint()设置,默认的焦点位置在世界坐标系的原点。
朝上方向:即哪个方向朝上的方向。当直立看东西时,方向头朝上,看到的东西也是直立的,如果我们道理看某个东西,方向头朝下,看到的东西就是倒立的。相机位置、相机的焦点和朝上方向三个因素的实际方向,即确定相机的视图。
投影方向:相机位置到相机结点的向量方向。
投影方法:确定Actor是如何映射到像平面。vtkcamera定义了两种投影方法,一种是正投影(平行投影)进入相机的光线与投影方向是平行的。另一种是透视投影,即所有的管线相交于一点。
视角:透视投影时需要指定相机的视角,默认视角大小为30°,方法vtkCamera::SetViewAngle()设置。
前后裁剪平面:裁剪平面与投影方向相交,一般与投影方向是垂直的。裁剪平面主要用于评估Actor与相机距离的远近,只有在前后裁剪平面之间的Actor才是可见的。裁剪平面的位置可以用方法vtkCamera::SetClippingRange()设置。
如果你想获取vtkRender里默认的相机使用方法vtkRender::GetActiveCamera()。
原相机的使用方法:
vtkSmartPointer<vtkCamera>myCamera = vtkSmartPointer<vtkCamera>::New(); myCamera->SetClippingRange(0.0475, 2.3786); //这些值随便设置的,为了演示用法而已 myCamera->SetFocalPoint(0.0573, -0.2134, -0.0523); myCamera->SetPosition(0.3245, -0.1139, -0.2932); myCamera->ComputeViewPlaneNormal(); myCamera->SetViewUp(-0.2234, 0.9983, 0.0345);
ComputeViewPlaneNormal()方法时根据设置的相机的位置、焦点等信息,重新计算视平面(View Plane)的法向量。一般该方向量与视平面是垂直的,特殊情况如错切。SetViewUp()方向设置相机朝上方向。最后vtkRenderCamera()把相机设置到渲染场景中。
在这里插入图片描述

2.坐标系统及空间变换

计算机图形学里常用的坐标系统主要有四种,分别是:Model坐标系统、World坐标系统、View坐标系统和Display坐标系统。以及两种坐标点的方式:一屏幕像素值为单位和归一化坐标值(个坐标轴取值为(-1,1))
在这里插入图片描述

  • Model坐标系统是定义模型时所采用的坐标系统,通常是局部的笛卡尔坐标系。例如,我们要定义一个球体的表面Actor,一般的做法是将该球体定义在一个柱坐标系统里。
  • Wold坐标系统是放置Actor的三维空间坐标系,Actor其中的一个功能就是负责将模型从Model坐标系统。每一个模型可以定义有自己的Model坐标系统,但World坐标只有一个,每一个Actor必须通过缩放、旋转、平移等操作将Model坐标系统转换为Wold坐标系统。Wold坐标系统同时也是相机和关照所在的坐标系统。
  • View坐标系统表示的是相机所看见的坐标系统。X,Y,Z轴取值为[-1,1],X,Y,值表示平面上的位置,Z值表示到相机的距离。相机负责将Wold变换的 View坐标系统。
  • Display坐标系统根View坐标系统类似,但是各坐标的映射。可以把不同放入渲染场景放在同一个窗口进行显示,例如,在一个窗口里,分为左右两个渲染场景,这左右的渲染场景vtkRender就是不同的视口(Viewport)。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简 。单

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值