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

2024-01-26 08:28

本文主要是介绍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博客 

这篇关于pcl+vtk(十四)vtkCamera相机简单介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/646187

相关文章

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

JSR-107缓存规范介绍

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧... 目录1.什么是jsR-1072.应用调用缓存图示3.JSR-107规范使用4.Spring 缓存机制缓存是每一