IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> VTK(二)---相机外参矩阵Tcw转VTK相机,构建VR虚拟相机 -> 正文阅读

[游戏开发]VTK(二)---相机外参矩阵Tcw转VTK相机,构建VR虚拟相机

?
VR技术:在VTK中构建一个与真实世界一样的虚拟相机,具有对应的运动映射。

?
?

一、解析

当我们使用SLAM技术获得相机的位姿Tcw时(即从世界坐标到相机坐标的映射矩阵),我们需要在VTK中建立一个一模一样的相机,并建立相同的运动映射。相机的位姿总共有六个自由度,在VTK中也应该有六个自由度。我们可以利用vtk的三个函数来进行设定:

aCamera->setFocalPoint(); //f=2
aCamera->setPosition();   //f=3
aCamera->setViewUp();     //f=1

前两个函数决定了5个自由度,最后一个决定了1个自由度

常用相机的坐标系如图所示:

在VTK中相机位姿的表达:

从图中我们可以确定的是,相机的位置(Position)表达是一样的,focalPoint是在相机的Z方向的,viewup是在常用坐标系y轴的负方向,这样我们就可以确定映射关系。

对于外参矩阵Tcw,可以拆成旋转矩阵Rcw 和平移矩阵 tcw,相机的位置可以表示为:
P w = ? R c w T ? t c w P_w = -R_{cw}^T\cdot t_{cw} Pw?=?RcwT??tcw?
对于focalPoint,由相机的位置postionfocalPoint可以确定相机的朝向,这里就是常用坐标系的Z坐标轴方向。旋转矩阵的行、列分别代表了不同的意义:
行 : O x w c , O y w c , O z w c 列 : N x c w , N y c w , N z c w 行:Ox_{wc},Oy_{wc},Oz_{wc}\\ 列:Nx_{cw},Ny_{cw},Nz_{cw} Oxwc?Oywc?Ozwc?Nxcw?Nycw?Nzcw?
行代表相机坐标的x,y,z轴在世界坐标系下的方向,列代表世界坐标系x,y,z轴在相机坐标系下的方向。这里只取旋转矩阵的第三行: R c w . r o w ( 2 ) R_{cw}.row(2) Rcw?.row(2)就能得到positionfocalPoint也就是相机坐标Z轴的方向向量,同时第二行的负值: ? R c w . r o w ( 1 ) -R_{cw}.row(1) ?Rcw?.row(1)就能代表viewUp.

二、方法

R = Tcw.rotation()
t = Tcw.translation()

eye = - R.transpose() * t          //位置
focus = eye + R.row(2).transpose() //focalPoint 的位置(相机Z轴)
up = - R.row(1)                    //up方向(相机y轴负方向)

aCamera->setPosition(eye); 
aCamera->setFocalPoint(focus);
aCamera->setViewUp(up);    

最后重置视平面法向量:

aCamera->ComputeViewPlaneNormal()

显示:

ren->SetActiveCamera(aCamera)
renwin->Render();
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:54:07  更:2022-03-08 22:55:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 17:48:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码