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博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/349774.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣hot100 腐烂的橘子 BFS 矢量数组 满注释版

Problem: 994. 腐烂的橘子 文章目录 思路复杂度💝 Code 思路 👨‍🏫 参考 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) 💝 Code class Solution {int[] dx new int[] { 0, 1, 0, -1 };// 行 矢…

如何快速搭建实用的爬虫管理平台

目录 一、前言 二、选择合适的爬虫框架 三、搭建数据库 步骤1 步骤2 步骤3 四、搭建Web服务器 步骤1 步骤2 步骤3 步骤4 五、管理爬虫 六、总结 一、前言 爬虫是互联网数据采集的关键工具,但是随着数据量的增加和需求的多样化,手动运行和管…

SpringMVC-HttpMessageConverter 报文信息转化器

文章目录 HttpMessageConverter一、概念二、RequestBody三、RequestEntity四、 ResponseBody1.返回JSON格式的字符串 五、RestController六、ResponseEntity HttpMessageConverter 一、概念 报文信息转化器,将请求报文转化为Java对象,或将Java对象转化…

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解 提示:最近开始在【医学图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解前言UNet模型运行环境搭…

解决 Required Integer parameter ‘uid‘ is not present

1.原因分析 后端没接收到uid可能是前端没传递uid也可能是前端传递了uid,但是传递方式与后端接收方式不匹配,导致没接收到更大的可能是因为后端请求方式错了。比如: 2.解决方案 先确定前端传参方式与后端请求方式是匹配的后端get请求的话…

动态库和静态库的理解 Linux

其实库文件里面的内容就是函数的实现方法,向我们包含的头文件其实就是函数的生命,而我们编译链接程序时会自动加载库文件,最终形成可执行程序。其实我们在编译链接时不仅仅会将文件的库文件加载进来,其实头文件也是需要加载进来的…

C++输入输出流

输入/输出流类:iostream---------i input(输入) o output(输出) stream:流 iostream: istream类:输入流类-------------cin:输入流类的对象 ostre…

企业级大数据安全架构(六)数据授权和审计管理

作者:楼高 本节详细介绍企业级大数据架构中的第六部分,数据授权和审计管理 1.Ranger简介 Apache Ranger是一款被设计成全面掌管Hadoop生态系统的数据安全管理框架,为Hadoop生态系统众多组件提供一个统一的数据授权和管理界面, 管…

品牌突围|内容营销「共创公式」全面讲解

为什么品牌要扎根小红书?除了种草投放,品牌还能做些什么? 在小红书,迎接消费者共创的时代,激活品牌营销的无限潜能。 拥抱多元 在新机遇中预见未来 2023年,各大社交媒体平台涌现出了许多热点&#xff0c…

软件测试工作中需要使用的工具

作为一个测试人员在日常工作中会使用到很多的工具,今天给大家分享一下这些工具。对软件测试、接口、自动化、性能测试和日常文档编写办公有帮助的网站。 接口测试大力推荐国产的接口测试工具:apipost,apipost还是一款很不错的接口文档生产工…

OpenCV图像的基本操作

图像的基本操作(Python) 素材图 P1:die.jpg P2:cool.jpg V:rabbit.mp4, 下载地址 读取展示-图像 import cv2img_1 cv2.imread(./die.jpg) # default cv2.IMREAD_COLOR print("die.jpg shape(imre…

Python 实现自动化测试 dubbo 协议接口

前言 在工作或学习过程中,可能会遇到后端服务里有使用 dubbo 协议实现的接口,dubbo 协议接口的测试方法不同于 http/https 类型的接口,不能简单使用request.post的方法来完成自动化测试。 如果需要对 dubbo 协议的接口进行自动化测试&#…

数据结构篇-02:最小栈

对于这道题,除了 getMin 外的功能,传统的 栈 结构中都有,所以重点在于如何实现 getMin 方法。 有两类方法:使用辅助栈/不使用辅助栈 使用辅助栈的解法一 定义一个 栈 来实现常规功能,另外定义一个栈(最小…

2016年认证杯SPSSPRO杯数学建模A题(第一阶段)洗衣机全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 A题 洗衣机 原题再现: 洗衣机是普及率极高的家用电器,它给人们的生活带来了很大的方便。家用洗衣机从工作方式来看,有波轮式、滚筒式、搅拌式等若干种类。在此基础上,各厂商也推出了多种具体方案…

Flink多流转换(2)—— 双流连结

双流连结(Join):根据某个字段的值将数据联结起来,“配对”去做处理 窗口联结(Window Join) 可以定义时间窗口,并将两条流中共享一个公共键(key)的数据放在窗口中进行配…

软考培训机构哪家比较好?各软考培训机构排名如何?

先放上机构测评图 一、机构情况 (1)主营业务 大多数软考培训机构主要致力于IT培训或者软件行业。这些机构的课程更加专业,因为他们起源于该行业。我相信报考软考的同学大部分也是从事这个行业的。个人认为选择这类机构进行培训会有更多好处…

图片保存后多了个水印?教你如何用华为手机保存无水印图片

对于各类生活App的深度用户来说,有时候碰到实用的生活技巧、攻略,甚至是一张好看的风景照,都会第一时间想要长按把图片保存到手机相册,有时候还会分享给朋友、朋友圈。 但是有些图片在App上显示的时候是干净的,保存下…

day30_回溯总结

文章目录 回溯的问题总结:1. 回溯三部曲:2. 回溯的模板3. 回溯题型4. 回溯的概念:5. 回溯的重点问题:组合和去重。[5.1 组合问题:](https://programmercarl.com/0077.%E7%BB%84%E5%90%88.html)剪枝优化[5.2 去重问题—…

接口自动化中如何完成接口加密与解密?

加密是一种限制对网络上传输数据的访问权的技术。将密文还原为原始明文的过程称为解密,它是加密的反向处理。在接口开发中使用加密、解密技术,可以防止机密数据被泄露或篡改。在接口自动化测试过程中,如果要验证加密接口响应值正确性的话&…

temu跨境电商怎么样?做temu蓝海项目有哪些优势?

在全球电商市场激烈的竞争中,Temu跨境电商平台以其独特的优势和策略,逐渐崭露头角。对于许多想要拓展海外市场的商家来说,Temu的蓝海项目提供了一个充满机遇的新平台。本文将深入探讨Temu跨境电商的优势以及在蓝海市场中的发展前景。 全球化市…