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

news2024/10/6 10:29:33

一、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.coloradmin.cn/o/1412187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s的安全机制

k8s是分布式集群管理工具,k8s作用是容器编排 1、安全机制核心:API server。API server作为整个集群内部通信的中介,也是外部控制的入口,所有的安全机制都是围绕api sserver来进行设计的。请求api server资源要满足3个条件&#x…

数据结构篇-02:最小栈

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

如何配置点击抖音直播小风车跳转到微信公众号?

随着抖音直播间的普及,越来越多的品牌选择通过直播进行宣传推广。然而,直播间主播的氛围营造是一项极具挑战性的任务。如果观众的热情无法被调动起来,直播间很容易陷入沉寂,难以吸引流量。 为了最大化利用流量,许多品牌…

智能充电桩,机器人 wifi蓝牙 解决方案

新联鑫威低功耗高性价比sdio wifi/蓝牙combo的模块单频2.4g的CYWL6208,双频2.4g/5g CYWL6312可以应用到一些低延时 高性能 低功耗 联网需求的交流直流充电桩,扭力扳手,agv机器人,目前支持主流的stm32F4/GD32F4 瑞萨 psoc的主控&am…

道合顺:一站式电子元器件采购商城

欢迎来到道合顺,您专属的电子元器件采购商城。我们为您提供广泛的元器件选择,包括各类芯片、传感器、电容电阻、连接器等,以满足您项目的需求。 最新价格实时查询 通过道合顺电子网,您可以随时随地查询各类电子元器件的最新价格…

外汇天眼:QoinTech误信假老师话术投资外汇,惨遭黑平台滑点爆仓拒出金

去年11月与12月,外汇天眼先后发布了「钓鱼广告诱加投资群组,限制出金逼迫缴分成费」与「假投顾诱导投资黄金获利,黑平台操作爆仓狠诈700万」这2篇文章,曝光黑平台QoinTech的诈骗手法,呼吁投资人不要上当,没…

你对 TypeScript 中枚举类型的理解?应用场景?

文章目录 一、是什么二、使用数字枚举字符串枚举异构枚举本质 三、应用场景参考文献 一、是什么 枚举是一个被命名的整型常数的集合,用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型 通俗来说,枚举就是一个对象的所有可能…

LeetCode 热题 100 | 普通数组

目录 1 53. 最大子数组和 2 56. 合并区间 3 189. 轮转数组 4 238. 除自身以外数组的乘积 5 41. 缺失的第一个正数 菜鸟做题第二周,语言是 C 1 53. 最大子数组和 题眼:“子数组是数组中的一个连续部分。” 遍历数组,问每一个元素…

EIGRP实验

实验大纲 一、基本配置 1.构建网络拓扑结构图 2.路由器基本配置 3.配置PC 4.测试连通性 5.保存配置文件 二、配置EIGRP 1.查看路由表 2.配置EIGRP动态路由 3.查看路由器路由表 4.测试网络连通性 5.查看所有路由器的路由协议 6.保存配置文件 三、配置OSPF 1.配置…

【基于电商履约场景的 DDD 实战】DDD领域驱动设计的优势分析以及与MVC架构对比

🌈🌈🌈🌈🌈🌈🌈🌈 欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复…

LeetCode.2859. 计算 K 置位下标对应元素的和

题目 题目链接 分析 这道题的题意很明确。就是求每一个下标的二进制中1的个数为k的下标所对应的元素值之和。 Java 中有 库函数 Integer.bitCount(num),这个函数的返回值就是 num 中 1 的个数。 代码 class Solution {public int sumIndicesWithKSetBits(List…

如何训练和导出模型

介绍如何通过DI-engine使用DQN算法训练强化学习模型 一、什么是DQN算法 DQN算法,全称为Deep Q-Network算法,是一种结合了Q学习(一种价值基础的强化学习算法)和深度学习的算法。该算法是由DeepMind团队在2013年提出的,…

开发板连接错误: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

1.出现错误 scp rkmedia_vi_venc_rtsp_test_sp root192.168.10.198:/home/sunpeng出现错误 2.错误原因:警告:远程主机标识已更改! 1)重新烧录开发板系统,导致IP地址变化。 2)报警错误-中文(警…

每日一练 | 华为认证真题练习Day172

1、关于OSPF的ASBR-SUMMARY-LSA中LSA头部他、信息描述错误的是 A. LINK STATE ID表示ASBR的ROUTER ID B. ADVERTISING ROUTER表示该ABR的ROUTER ID C. ADVERTISING ROUTER字段永远不会改变 D. METRIC表示该ABR到达ASBR的OSPF开销 2、关于OSPF外部路由种类描述错误的是 A. …

力扣354. 俄罗斯套娃信封问题

动态规划 思路: 同时控制 w、h 两个维度比较复杂,可以先固定一个维度,来找出另外一个维度的严格单调序列: 对 w 排序,然后再来找 h 维度严格单调递增序列长度;在 w 排序时,会遇到 w(i) w(j) 的…

字节发布MagicVideo2文本生成视频模型,一句话便可生成动态视频

文生图大模型已经火了很长一段时间了,而随着技术与模型算法的不断提升,文生视频模型也越来越多。今天就介绍一下字节跳动发布的MagicVideo-V2文生视频大模型。 文生图的大火对文本生成高保真视频的需求也不断增长,正是这种需求的增加&#xf…

李国武老师解读QFD:从理论到实践的全面指南

QFD,即质量功能展开(Quality Function Deployment),是一种将客户需求转化为产品设计要求和生产要求的系统方法。在当今市场竞争激烈的环境下,如何将客户的声音转化为产品优势,是每一个制造企业都需要面对的…

域名的安全性如何提高?

域名(Domain Name)是互联网上的一种层次结构式的字符标识,对应于计算机的互联网协议(IP)地址。域名是由一串用点分隔的名字组成的,它可以方便地在数据传输时标识计算机的电子方位。域名的作用在于提供易于记…

超级万能DIY模块化电商小程序源码系统 带完整的搭建教程

随着电商市场的不断扩大,越来越多的商家涌入电商平台,竞争愈发激烈。为了在众多竞争对手中脱颖而出,商家需要打造一款个性化、功能强大的电商小程序,以吸引更多的用户。而超级万能DIY模块化电商小程序源码系统正是为了满足商家的这…

已经写好代码,领导让我重写测试代码,我要不要提桶跑路?

我有一个朋友,有一天问我这样的一个问题:“说现在他们公司有五个 python 测试工程师。但是有一天领导要求他把所有的自动化测试代码,全部都转化成 Java 语言。” 虽然说他们在行动上还是接受了领导的任务,但是他一直想不清楚&…