几个经典的数学库之一学习---VCGlib(3)
Camera and shot abstraction for managing views
视图的定义,以及mesh的操作说明。
Shot(镜头) and camera(相机)
shot摄像结构以及camera库。对于相机模块预览之后,shot (镜头)类的所有组件将会被介绍。然后给出重要操作的例子,如投影Projection 与 Un-Projection。以及在镜头之间与镜头与轨迹制件的部分。最后,单镜头的例子展示。
The camera model
一般情况下,摄像机参数可以分为以下两组:
(1)Extrinsic (or external) parameters:外部参数, 即相机的位置等参数。
(2)Intrinsic (or internal) parameters:内部参数,即与特别的相机特征,如焦距的长短等.

透视相机模式:perspective camera model
实际上,一个简单的透视相机模式,外部的参数用来将世界坐标系(world-coordinates )中的点(Xw,Yw,Xw)转化为相机3D坐标系中的点(X,Y,Z):

外部参数是3X3的旋转矩阵R, 以及一个转移向量 T。即定义相机的朝向(正方向)与位置。为了将相机3D坐标系中的点专为2D图像平面坐标系Plane Coordinates(Xu,Yu), 需要知道View Point(视点)与图像平面(投影平面)的距离,即图中的OO1所示的距离。这个值,标记为f,作为 focul length(焦距长度),则在相机坐标与图像坐标中的点之间的关系是下面的关系:
即:透视的效果,Z越远,则显示在XY面的投影越小;焦距f越大, 在投影片面的坐标Xu,Yu越大。
透镜引入的失真(the distortion introduced by the lenses):

总结:一个十分精确的相机模型可以进行以下描述:
- 一个3X3的旋转矩阵,一个转移向量T 作为外部参数;
- 焦炉的长度, 透镜误差的中心,以及一个或者多个的误差系数 ,作为内部参数。
这些条件只是一个基本的保证,如果需要更精确的表征,则还需要其他内容(www.cnblogs.com/icmzn)
The VCG Shot
VCGlib中的镜头模型定义,可以在文件: vcg/math/shot.h中。
shot(镜头)可以由两个元素组成:
1. Extrinsics 参数组: 在类Shot中(ReferenceFrame框架引用)且包含ViewPoint, 与View Direction。作为 旋转矩阵 rot,以及转移向量 tra。 注意,tra对应 View Point , 且 rot 对应 引用框架的坐标轴,如下:
rot[0][0 1 2] == X axis
rot[1][0 1 2] == Y axis
rot[2][0 1 2] == Z axis矩阵由坐上的3X3矩阵rot 并且第4列与(0.0.0.1)在底部行变换世界坐标到镜头应用框架坐标一致。
2.Instrinsica 参数, 以Camera type 类型保存, vcg/math/camera.h文件。决定了在 camera中的 point的投影在2D的投影平面中。这些参数与外部extrinsic 参数无关,因为存在许多的shot(镜头)能够分享 intrinsic parameters 集合。
Camera 属性如下:
Code Examples
http://vcg.isti.cnr.it/vcglib/group__code__sample.html#details
给出了一些小栗子,来展示VCGlib的特性。
在vcglib/apps/sample. , 可以使用qmake *。pro project 文件来编译每个文件。
endl;
几个经典的数学库之一学习---VCGlib(3)的更多相关文章
- 几个经典的数学库之一学习---VCGlib(2)
几个经典的数学库之一学习---VCGlib(2) 1. Optional Component(可选的组件) 有许多Vertex和Face的属性并不是一直都是必要的,如Face-Face的邻接关系.VC ...
- 几个经典的数学库之一学习---VCGlib(1)
1. VCG Libary是Visulization and Computer Graphics Libary(可视化与计算机图形学库)的缩写,是一个开源的C++模板库,用于三角网格和四面体网格的控制 ...
- DirectX11 学习笔记6 - 使用D3DXMATH数学库的一个样例
这个样例是在之前的样例基础上 .把之前d3dx10math数学库换成了最新的d3dxmath.长处就不说了.先上效果图 所有代码.以及效果文件 文件结构 所有代码: 依照上图的文件顺序 #pragma ...
- <泛> C++3D数学库设计详解 向量篇
// 注:本内容为作者原创,禁止在其他网站复述内容以及用于商业盈利,如需引用,请标明出处:http://www.cnblogs.com/lv_anchoret/ Preface 为了支持光线追踪的学习 ...
- GEOS库的学习之一:介绍和编译
对GEOS库的学习,源于一个项目:要在c++中判断二维平面中两个多边形的关系(无论凹凸).也就是判断两个多边形是否相交.相容等.听起来很简单,可实现起来却比较难,而项目又催得紧.于是我去搜索了一下,看 ...
- 标准模板库(STL)学习探究之stack
标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
- 微软数学库XNAMATH(DirectXMath)
这篇文章只是对着MSDN文档的一些吐槽和总结记录,个人笔记之类的 运行库与头文件 老实说,这个数学库微软还是更像蛮频繁的,我这里有的最早版本是伴随DX9的,在这个头文件里面 最近在使用DXUT,顺便也 ...
- 一个很cool的C#的高性能数学库
High Performance Math Library for C# and .NET是一个很cool的C#的高性能数学库,3D效果也很不错,下图是首页上的一个例子.他也有一个交互的网页,你可以自 ...
随机推荐
- Haskell语言学习笔记(27)Endo, Dual, Foldable
Endo Monoid newtype Endo a = Endo { appEndo :: a -> a } instance Monoid (Endo a) where mempty = E ...
- 常用类一一字符串相关类一一StringBuilder,StringBuffer。
package cn.bjsxt.stringbuilder; /** * String 不可变字符序列 * StringBuilder StringBuffer都是是可变字符序列 * 区别在于Str ...
- maven package install deploy
1.maven package:打包到本项目,一般是在项目target目录下. 如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错,因为找不到所依赖的b项目, ...
- Codeforces Round #534 (Div. 2)
B. Game with string 题意: 给出一个字符串s只包括小写字母.当轮到一个玩家的时候,他可以选择两个连续且相等的字母并且删除它.当一个玩家没得删的时候他就输了. 题解: 乍一看有点懵, ...
- inner join和outer join
内连接 只连接匹配的行 左外连接 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行 A left join B等价于A left ...
- Housewife Wind(边权树链剖分)
Housewife Wind http://poj.org/problem?id=2763 Time Limit: 4000MS Memory Limit: 65536K Total Submis ...
- vmware搭建vSAN提示磁盘不合格或者看不到磁盘的解决办法
1.如果磁盘不合格,或者在创建磁盘组的时候看不到该磁盘,一般的原因都是该磁盘有其他分区,可以使用下面的方法来解决 a.首先开启esxi主机的ssh功能 b.登陆到esxi的后台 c. ls /dev/ ...
- Nginx配置杂记(转)
转至:http://www.cnblogs.com/kuangke/p/5619400.html Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器,相较 ...
- Spring整合Struts2框架的第一种方式(Action由Struts2框架来创建)。在我的上一篇博文中介绍的通过web工厂的方式获取servcie的方法因为太麻烦,所以开发的时候不会使用。
1. spring整合struts的基本操作见我的上一篇博文:https://www.cnblogs.com/wyhluckdog/p/10140588.html,这里面将spring与struts2 ...
- Spring框架之log日志的使用
1.Spring框架也需要引入日志相关的jar包 * 在spring-framework-3.0.2.RELEASE-dependencies/org.apache.commons/com.sprin ...

