VTK 相机类:vtkCamera

VTK笔记-相机vtkCamera vtk相机 VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如屏幕、图像等。 VTK中的相机的使用示意图如下: 与相机投影相关的因素主要有: 相机位置:即相机所在的位置,用方法vtkCamera::SetPosition()设置。 相机焦点:用方法vtkCamera::SetFocusPoint()设置,默认的焦点位置在世界坐标系的原点。 朝上方向:即哪个方向为相机朝上的方向。就好比我们直立看东西,方向为头朝上,看到的东西也是直立的,如果我们倒立 阅读详情

VTK 相机类:vtkCamera

vtkCamera 类简介

VTK使用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如屏幕、图像等。它提供了定位和定向视点到焦点的方法,还提供了围绕焦点移动的方便操作;更复杂的方法允许操纵计算机图形模型,包括视图上方向向量、剪裁平面和相机透视。

在这里插入图片描述

相机投影

下图为相机投影示意图:

在这里插入图片描述

与相机投影相关的要素主要有如下几个:

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

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

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

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

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

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

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

vtkCamera 类常用函数

设置相机的朝上方向,默认为(0, 1, 0):

void vtkCamera::SetViewUp(double vx, double vy, double vz);

设置相机位置,默认为(0, 0, 1):

void vtkCamera::SetPosition(double x, double y, double z);

设置焦点,默认为(0, 0, 0):

void vtkCamera::SetFocalPoint(double x, double y, double z);

设置前后裁剪平面位置,默认为(0.1, 1000):

void vtkCamera::SetClippingRange(double dNear, double dFar);

设置相机视角,默认为30度,如果为平行投影则该角度无效:

void vtkCamera::SetViewAngle(double angle);

根据设置的相机位置、焦点等信息,重新计算视平面(View Plane)的法向量:

void vtkCamera::ComputeViewPlaneNormal(); // 

一般该法向量与视平面是垂直的,如果不是垂直的话,Actor等看起来会有一些特殊的效果,如错切。

vtkRenderer类自带一个默认的相机类,可以获取该相机,也可以设置自己的相机:

vtkRenderer::GetActiveCamera() // 获取vtkRenderer渲染器里默认的相机
vtkRenderer::SetActiveCamera() // 把相机设置到渲染场景中
vtkRenderer::ResetCamera() // 重设相机参数

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时,将忽略此设置。

参考

  1. https://blog.youkuaiyun.com/liushao1031177/article/details/116903698
  2. https://blog.youkuaiyun.com/m0_67254672/article/details/135838842
  3. https://blog.youkuaiyun.com/shenziheng1/article/details/52769431
  4. https://blog.youkuaiyun.com/colddie/article/details/16948231
  5. https://blog.youkuaiyun.com/Goofy2014/article/details/40594983
  6. https://blog.youkuaiyun.com/weixin_38293453/article/details/103800090
  7. https://blog.youkuaiyun.com/Q1302182594/article/details/45771371
VTK相机类vtkCamera原理及用法 vtk是著名的开源三维渲染库,在三维渲染过程中的一个非常重要的内容就是相机即vtkCamera类的设置。在VTK中,相机的实质是一个观测点。VTK的官方Doc对vtkCamera写的十分简略,暗坑很多。在学习和使用vtkCamera的过程中,我走了很多弯路。在我的应用中,我希望能够根据现实中相机的Transform Matrix完全模拟设置vtkCamera。下面根据我的经验和理解,介绍一下vtk... 阅读详情

相关推荐

VTK学习-vtkCamera

VTK学习-vtkCamera

zy2317878的博客 2379

VTK笔记——vtkCamera的理解和用法

其实,互联网上有不少介绍VTK Camera的文章。在学习和实际项目中,相机扮演中很重要的角色,我们可以通过它来观察物体,包括放大缩小物体、移动相机等操作,所以它是我们需要了解的最基础和最重要的知识之一。 本篇博客记录的是相机作用是什么,相机的参数,以及如何控制相机和实际中如何使用? vtkCamera的作用 在三维渲染场景中,相机好比人的眼睛,人站立的位置影响事物的大小,视角的影响看到事物...

Andy的专栏 1万+

vtkCamera类的Dolly函数作用及相机拉近拉远

要理解vtkCamera类的Dolly函数作用,就必须先了解vtkCamera类表示的相机的各种属性。VTK是用vtkCamera类来表示三维渲染场景中的相机。在VTK中,相机的实质是一个观测点,与人眼的功能相同,相机的视野范围是一个锥状体。分割相机位置到相机焦点的距离到给定的函数参数值。如果该值比1.0大,则相机向靠近焦点的位置移动,此时视图窗口中的被渲染物体就会显示的越大;如果该值比1.0小,则相机向远离焦点的位置移动,此时在视图窗口中被渲染的物体就会显示的越小。

danshiming的博客 713

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

人眼相当于三维场景下的相机, VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如屏幕、图像等。:即相机所在的位置,用方法vtkCamera::SetPosition()设置。:用方法vtkCamera::SetFocusPoint()设置,默认的焦点位置在世界坐标系的原点。:即哪个方向为相机朝上的方向。就好比我们直立看东西,方向为头朝上,看到的东西也是直立的,如果我们倒立看某个东西,这时方向为头朝下,看到的东西当然就是倒立的。

m0_67254672的博客 2300

VtkCamera使用原理及小结

观众的眼睛就好比三维渲染场景中的相机,VTK则是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如屏幕、图像等。 1. Vtkcamera原理 从图可以看出与相机投影相关的因素主要有: 相机位置:即相机所在的位置,用方法vtkCamera::SetPosition()设置。 相机焦点:用方法vtkCamera::Se

沈春旭的博客 1万+

005:VTK世界坐标系中的相机和物体

VTK中vtkCamera类对应右图中的相机,可以通过vtkCamera来设置相机在世界坐标系中的位置,焦点(对准三维坐标系中的那个位置),相机的正方向,相机的最近和最远裁减平面(在最近和最远平面内的物体才会被渲染)等;三维坐标系中的物体,对于目前我们的例子来说就是要渲染显示的DICOM图像,也就是存储在vtkImageData中的数据,通过vtkImageData origin参数可以设置其在三维坐标系中的位置,当然也可以通过旋转矩阵对vtkImageData的数据进行旋转或平移。

伍心的专栏 1531

记录自己的VTK学习之路——002

其实相机很简单,就是字面意思,但即使如此我还是用了很多时间去理解,笨就算了还懒,真完蛋了-.-

qq_31013099的博客 313

VTK相机类vtkCamera的原理与用法

它基于透视投影原理模拟相机的行为,可以设置相机的位置、方向、视场角、裁剪范围和投影类型等属性。视场角确定了相机从视点看到的场景的大小,裁剪范围用于限制投影的深度范围,而投影类型可以是透视投影或正交投影。vtkCamera根据这些属性以及相机的位置和方向来计算投影矩阵,该矩阵可以将三维场景中的点转换为屏幕上的二维像素坐标。在透视投影中,相机位于三维空间的某个位置,通过视点(ViewPoint)来定义相机的位置。通过设置相机的位置、方向、视场角和投影类型,可以实现不同的视角和投影效果。

NejWeb的博客 684

vtk相机_VTK 相机类vtkCamera原理及用法

vtk是著名的开源三维渲染库,在三维渲染过程中的一个非常重要的内容就是相机即vtkCamera类的设置。在VTK中,相机的实质是一个观测点。VTK的官方Doc对vtkCamera写的十分简略,暗坑很多。在学习和使用vtkCamera的过程中,我走了很多弯路。在我的应用中,我希望能够根据现实中相机的Transform Matrix完全模拟设置vtkCamera。下面根据我的经验和理解,介绍一下vtk...

weixin_39602005的博客 1360

VTK: 使用vtkCamera的编程指南

vtkCamera是Visualization Toolkit(VTK)中的一个重要类,它用于控制场景中的观察视角和相机参数。通过上述代码,我们创建了一个立方体,并使用vtkCamera设置了相机的位置、焦点和上方向。然后,我们将相机设置为渲染器的活动相机,并通过渲染窗口和交互器最终显示了渲染结果。vtkCamera类提供了一系列方法,用于控制相机的位置、方向、投影模式和剪裁范围等参数。通过上述方法,您可以灵活地设置和控制vtkCamera的各种参数,以实现您期望的观察效果。

ByteSparkX的博客 278

第二部分:VTK核心类详解(第20章 vtkCamera相机类)

VTK中的vtkCamera类是3D渲染的核心组件,负责定义观察者的位置、方向和投影方式。它支持两种投影模式(透视和平行投影),可精确控制相机位置、焦点、视角和裁剪范围等参数。通过计算视图变换和投影变换矩阵,将3D场景映射到2D屏幕。此外,vtkCameraInterpolator类支持相机动画,可在关键帧之间进行插值。该设计提供了灵活的观察控制,是VTK可视化系统的重要基础。

仰望星空的博客 372

VTK 三维场景的基本要素(相机) vtkCamera

观众的眼睛好比三维渲染场景中的相机,在VTK中用vtkCamera类来表示。vtkCamera负责把三维场景投影到二维平面,如屏幕,相机投影示意图如下图所示。

q610098308的专栏 2749

四、vtk相机类vtkCamera的使用

视角:透视投影时需要指定相机的视角(View Angle),默认的视角大小为30º,可以用方法vtkCamera::SetViewAngle()设置。就好比我们直立看东西,方向为头朝上,看到的东西也是直立的,如果我们倒立看某个东西,这时方向为头朝下,看到的东西当然就是倒立的。裁剪平面主要用于评估Actor与相机距离的远近,只有在前后裁剪平面之间的Actor才是可见的。在三维渲染场景中,相机好比观众的眼睛,人站立的位置影响事物的大小,视角的不同影响看到事物的范围,目光的朝向影响看到事物的正反。

h a 6 6 6 c k 为 你解决复杂难题! 1017

VTK之vtkCamera

是 VTK(Visualization Toolkit)中用于表示三维渲染场景中相机的类。它负责把三维场景投影到二维平面(如屏幕、图像等)上,并定义了相机的位置、焦点、投影方式等关键属性。

浩瀚之水的专栏 1263

SAP批量程序(一)-静态批量EX,FX和期间批量MB,WB和TB

SAP批量程序(一)-静态批量和区间批量

weixin_38974136的博客 5478

Mac新手必看:为什么你的终端找不到Python命令?5分钟搞定zsh报错

本文针对Mac用户在终端遇到“zsh: command not found: python”报错的问题,提供了深度解析与实战修复指南。文章解释了macOS系统因历史原因默认使用`python3`而非`python`命令,并详细介绍了四种解决方案:养成使用`python3`的习惯、创建别名、通过Homebrew安装链接以及修改PATH环境变量,帮助新手快速解决zsh报错,顺利开始Python开发。

weixin_29248653的博客 594

VTK相机控制实战:如何用vtkCamera实现3D模型的360度旋转展示(附完整代码)

本文详细介绍了如何使用VTK的vtkCamera核心组件实现3D模型的360度平滑旋转展示。通过解析相机位置、焦点和朝上方向等核心参数,并结合Azimuth与Elevation方法控制相机运动,文章提供了完整的C++代码示例,帮助开发者快速掌握三维可视化中的相机控制技巧,提升模型交互展示效果。

t1u2v的博客 1053

立创·庐山派-K230-CanMV(嘉楠勘智)开发板通过ATK-ESP8266实现图像识别数据无线传输至原子云

本文详细介绍了如何使用立创·庐山派-K230-CanMV开发板,通过ATK-ESP8266 WIFI模块实现图像识别数据的无线传输至原子云平台。内容包括硬件连接、软件环境搭建、AT指令控制、原子云连接及数据上传的全过程,并提供了实用的调试技巧和常见问题解决方案,为物联网应用开发提供了完整实践指南。

potato的博客 741

vtk.VtkCamera() 原理及应用

1. 相机原理 投影方向 :相机位置到相机焦点的向量方向即为投影方向。 投影方法:确定Actor是如何映射到像平面的。 tkCamera定义了两种投影方法,一种是正交投影(OrthographicProjection),也叫平行投影(Parallel Projection),即进入相机的光线与投影方向是平行的。 另一种是透视投影(PerspectiveProjection),即所有的光线相交于一点。 视角:透视投影时需要指定相机的视角(View Angle),默认的视角大小为30º,可以用方法

weixin_42046845的博客 2407

交叉验证选型指南:k折、留一法、时序与分层CV实战决策

交叉验证是评估机器学习模型泛化能力的基础技术,其核心在于通过系统性数据重划分,缓解有限样本对真实分布估计的偏差。原理上,它通过控制训练-验证数据的独立性与代表性,诊断过拟合风险并提升性能指标的稳定性。技术价值体现在避免单次切分导致的结果偶然性、数据利用低效及验证集污染等问题。典型应用场景涵盖分类任务中的类别不平衡处理、时间序列预测的因果约束、用户行为建模中的数据泄露防控等。本文聚焦k折交叉验证、留一法、时间序列交叉验证与分层抽样等主流方法的适用边界与工程落地要点,结合过拟合诊断和泛化能力评估两大热词,提供可

dienangpiao2051的博客 477

从0玩转Mamba神经网络:理论+实战的保姆级教程

Mamba神经网络是一种基于状态空间模型(SSM)的高效序列处理架构,相比Transformer具有更快的推理速度和更低的内存消耗。本文提供从理论到实践的完整指南,详细讲解Mamba的工作原理、与Transformer的差异,并给出基于PyTorch的文本分类实战示例。教程包含环境配置、数据处理、模型搭建、训练评估全流程,展示了Mamba在IMDb情感分析任务中的应用。文章还探讨了Mamba的性能优势及进阶方向,为开发者提供了探索这一新兴技术的实用指南。通过阅读本文,读者可以快速掌握Mamba的核心概念并上

FJN110的博客 316

vtk相机_VTK VTKCamera使用原理及小结

1. VTKCamera原理从图可以看出与相机投影相关的因素主要有:相机位置:即相机所在的位置,用方法vtkCamera::SetPosition()设置。相机焦点:用方法vtkCamera::SetFocusPoint()设置,默认的焦点位置在世界坐标系的原点。朝上方向:即哪个方向为相机朝上的方向。就好比我们直立看东西,方向为头朝上,看到的东西也是直立的,如果我们倒立看某个东西,这时方向为头朝下...

weixin_39785400的博客 837

【100%通过率】华为OD机试真题 Java&Go 实现【查找单入口空闲区域】【2022.11 Q4 新题】

给定一个 m xn 的矩阵,由若干字符 和0构成,X表示该处已被占据,0"表示该处空闲,请找到最大的单入口空闲区域.解释:空闲区域是由连通的O组成的区域,位于边界的0可以构成入口,单入口空闲区域即有目只有一个位于边界的0作为入口的由连通的'O"组成的区域。 如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。

MISAYAONE的博客 2万+

VTK学习之二(灯光、相机、颜色)

前言 上次学习了vtk中一个简单的例子,涉及到圆锥模型(vtkConeSource)、映射器(vtkPolyDataMapper)、对象(vtkActor)、场景(vtkRenderer)、渲染窗口(vtkRenderWindow),交互器(vtkWindowInteractor),一种交互风格(vtkInteractorStyleTrackballCamera),这次在其基础上学习了灯光、相机、和vtk中颜色属性。 灯光 在上个例子中以舞台剧来理解VTK,在舞台剧中灯光肯定不是唯一的,是可以存在多个

qq_42570058的博客 2517

DeerFlow 系列教程 第三篇 | 核心技术深度剖析:Skills、Memory 与 Context Engineering

摘要化是 Context Engineering 中最关键的组件——它直接决定了长对话的可用性。Skills 技能系统通过渐进式加载的三层模型,在保持系统提示词轻量的同时,支持无限数量的技能扩展。从发现到执行的 10 个生命周期阶段,配合 AI 驱动的安全扫描和多层缓存,构成了一个生产级的技能管理框架。Memory 长期记忆系统通过文件系统持久化、LLM 驱动的信息提取和防抖动异步更新,实现了跨会话的认知持久化。六类事实分类体系和修正信号检测机制,让 Agent 能够从交互中持续学习和改进。

weixin_43674738的博客 280

【嵌入式DIY实例-ESP32篇】-热成像仪

在本文中,我们将使用 MLX90640 热像仪和 1.8 英寸 ST7735 TFT 显示屏,构建一款基于 ESP32 的高性能紧凑型热像仪。本项目旨在打造一款便携、响应迅速的热像仪,具有增强的图像质量、优化的帧率和精准的温度读数。

视觉与物联智能 878
上一篇: Leetcode 第 128 场双周赛题解
下一篇: VTK 的可视化方法:颜色映射
UestcXiye
博客等级 码龄8年 9029粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

UestcXiye

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

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

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

打赏作者

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

抵扣说明:

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

余额充值