当前位置: 首页 > news >正文

pcl+vtk(十四)vtkCamera相机简单介绍

一、vtkCamera相机

       人眼相当于三维场景下的相机, VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如屏幕、图像等。

相机位置:即相机所在的位置,用方法vtkCamera::SetPosition()设置。

相机焦点:用方法vtkCamera::SetFocusPoint()设置,默认的焦点位置在世界坐标系的原点。

朝上方向:即哪个方向为相机朝上的方向。就好比我们直立看东西,方向为头朝上,看到的东西也是直立的,如果我们倒立看某个东西,这时方向为头朝下,看到的东西当然就是倒立的。相机位置、相机焦点和朝上方向三个因素确定了相机的实际方向,即确定相机的视图。

投影方向:相机位置到相机焦点的向量方向即为投影方向。

投影方法:确定Actor是如何映射到像平面的。vtkCamera定义了两种投影方法,一种是正交投影(OrthographicProjection),也叫平行投影(Parallel Projection),即进入相机的光线与投影方向是平行的。另一种是透视投影(PerspectiveProjection),即所有的光线相交于一点。

视角:透视投影时需要指定相机的视角(View Angle),默认的视角大小为30º,可以用方法vtkCamera::SetViewAngle()设置。

前后裁剪平面:裁剪平面与投影方向相交,一般与投影方向也是垂直的。裁剪平面主要用于评估Actor与相机距离的远近,只有在前后裁剪平面之间的Actor才是可见的。裁剪平面的位置可以用方法vtkCamera::SetClippingRange()设置。 

二、vtkCamera相机参数

void vtkCamera::SetViewUp(double vx, double vy, double vz);设置相机的朝上方向,默认为(0, 1, 0)

void vtkCamera::SetPosition(double x, double y, double z); 设置相机位置,默认为(0, 0, 1)

void vtkCamera::SetFocalPoint(double x, double y, double z);设置焦点,默认为(0, 0, 0)

void vtkCamera::SetClippingRange(double dNear, double dFar);设置前后裁剪平面位置,默认为(0.1, 1000)

void vtkCamera::SetViewAngle(double angle); 设置相机视角,默认为30度,如果为平行投影则该角度无效

void vtkCamera::ComputeViewPlaneNormal();根据设置的相机位置、焦点等信息,重新计算视平面(View Plane)的法向量。一般该法向量与视平面是垂直的,如果不是垂直的话,Actor等看起来会有一些特殊的效果,如错切。 

用方法vtkRenderer::GetActiveCamera()获取vtkRenderer渲染器里默认的相机。

用方法vtkRenderer::SetActiveCamera()把相机设置到渲染场景中。

三、vtkCamera控制相机运动

 

vtkCamera::Dolly(double value);

将相机与焦点的距离除以给定的推拉值。使用大于1的值向焦点推拉,使用小于1的值远离焦点推拉。

vtkCamera::Roll(double angle);

围绕投影方向旋转相机。这将使摄影机绕其轴旋转。

vtkCamera::Azimuth(double angle);

围绕以焦点为中心的视图向上矢量旋转相机。请注意,视图向上矢量是通过SetViewUp设置的,不一定垂直于投影方向。结果是相机的水平旋转(纬度)。

vtkCamera::Yaw(double angle);

使用相机的位置作为旋转中心,围绕视图向上矢量旋转焦点。请注意,视图向上矢量是通过SetViewUp设置的,不一定垂直于投影方向。结果是场景的水平旋转(纬度)。

vtkCamera::Elevation(double angle);

使用焦点作为旋转中心,围绕投影方向的负值与视图向上向量的叉积旋转相机。结果是场景的垂直旋转(经度)。

vtkCamera::Pitch(double angle);

使用相机的位置作为旋转中心,围绕视图向上矢量和投影方向的叉积旋转焦点。结果是摄影机垂直旋转(经度)。

vtkCamera::Zoom(double factor);

在透视模式下,将视角减小指定的因子。在平行模式下,将平行比例减小指定的因子。值大于1表示放大,值小于1表示缩小@注意:当UseExplicitProjectionTransformMatrix为true时,将忽略此设置。

void ResetCamera();

重置相机参数。

参考文献:

VTK笔记-相机vtkCamera_vtk重置相机-CSDN博客

VTK相机参数_vtk camera默认参数-CSDN博客

VtkCamera总结_vtk体绘制相机-CSDN博客 

http://www.lryc.cn/news/288137.html

相关文章:

  • TS基础知识点快速回顾(上)
  • hook(post-receive)无法使用
  • qt学习:tcp区分保存多个客户端
  • ORM-08-EclipseLink 入门介绍
  • 数据结构之树和二叉树定义
  • 大模型学习与实践笔记(十三)
  • 计算机网络——网络层(1)
  • 解释LoRA参数
  • 直播核心岗位基础内容
  • 安全防御第三次作业
  • WordPress反垃圾评论插件Akismet有什么用?如何使用Akismet插件?
  • 力扣80、删除有序数组中的重复项Ⅱ(中等)
  • 探索HTMLx:强大的HTML工具
  • NC65中间件能启动,前端客户端启动失败,加载异常,卡住(org.owasp.esapi)
  • 【大数据】YARN调度器及调度策略
  • 如何快速入门Python指南
  • vue3 页面长时间不使用,再次点击页面切换路由 操作无效报错
  • 【算法练习】leetcode算法题合集之动态规划篇
  • 青少年人工智能实验基地解决方案
  • 10个让你的明星网红推广事半功倍的技巧-华媒舍
  • k8s集群异常恢复
  • NOC总线(2)
  • 2401llvm,clang的libtooling
  • 数据结构—基础知识(13):树的存储结构
  • 【Python爬虫入门到精通】小白也能看懂的知识要点与学习路线
  • 服务器数据恢复—EVA存储raid5硬盘离线的数据恢复案例
  • MAMBA论文疑被拒收,计算机科学顶会评审遭质疑
  • EHS管理系统为何需要物联网的加持?
  • 记事本(父页面与iframe子页面的联通,vue3+ts展示fbx模型,与tga贴图)
  • 【好书推荐-第五期】《互联网大厂推荐算法实战》(异步图书出品)