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):

  总结:一个十分精确的相机模型可以进行以下描述:

  1. 一个3X3的旋转矩阵,一个转移向量T 作为外部参数;
  2. 焦炉的长度, 透镜误差的中心,以及一个或者多个的误差系数 ,作为内部参数。

  这些条件只是一个基本的保证,如果需要更精确的表征,则还需要其他内容(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)的更多相关文章

  1. 几个经典的数学库之一学习---VCGlib(2)

    几个经典的数学库之一学习---VCGlib(2) 1. Optional Component(可选的组件) 有许多Vertex和Face的属性并不是一直都是必要的,如Face-Face的邻接关系.VC ...

  2. 几个经典的数学库之一学习---VCGlib(1)

    1. VCG Libary是Visulization and Computer Graphics Libary(可视化与计算机图形学库)的缩写,是一个开源的C++模板库,用于三角网格和四面体网格的控制 ...

  3. DirectX11 学习笔记6 - 使用D3DXMATH数学库的一个样例

    这个样例是在之前的样例基础上 .把之前d3dx10math数学库换成了最新的d3dxmath.长处就不说了.先上效果图 所有代码.以及效果文件 文件结构 所有代码: 依照上图的文件顺序 #pragma ...

  4. <泛> C++3D数学库设计详解 向量篇

    // 注:本内容为作者原创,禁止在其他网站复述内容以及用于商业盈利,如需引用,请标明出处:http://www.cnblogs.com/lv_anchoret/ Preface 为了支持光线追踪的学习 ...

  5. GEOS库的学习之一:介绍和编译

    对GEOS库的学习,源于一个项目:要在c++中判断二维平面中两个多边形的关系(无论凹凸).也就是判断两个多边形是否相交.相容等.听起来很简单,可实现起来却比较难,而项目又催得紧.于是我去搜索了一下,看 ...

  6. 标准模板库(STL)学习探究之stack

    标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string

  7. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  8. 微软数学库XNAMATH(DirectXMath)

    这篇文章只是对着MSDN文档的一些吐槽和总结记录,个人笔记之类的 运行库与头文件 老实说,这个数学库微软还是更像蛮频繁的,我这里有的最早版本是伴随DX9的,在这个头文件里面 最近在使用DXUT,顺便也 ...

  9. 一个很cool的C#的高性能数学库

    High Performance Math Library for C# and .NET是一个很cool的C#的高性能数学库,3D效果也很不错,下图是首页上的一个例子.他也有一个交互的网页,你可以自 ...

随机推荐

  1. 吴裕雄 实战PYTHON编程(9)

    import cv2 cv2.namedWindow("ShowImage1")cv2.namedWindow("ShowImage2")image1 = cv ...

  2. 吴裕雄 数据挖掘与分析案例实战(3)——python数值计算工具:Numpy

    # 导入模块,并重命名为npimport numpy as np# 单个列表创建一维数组arr1 = np.array([3,10,8,7,34,11,28,72])print('一维数组:\n',a ...

  3. python生成器(转)

    生成器是一种特殊的迭代器,内部支持了生成器协议,不需要明确定义__iter__()和next()方法.生成器通过生成器函数产生,生成器函数可以通过常规的def语句来定义,但是不用return返回,而是 ...

  4. 部分PR回写的数量带有小数,分别是2023工厂的纸箱104007000389,2021工厂的纸盒404002005930;

    描述:部分PR回写的数量带有小数,分别是2023工厂的纸箱104007000389,2021工厂的纸盒404002005930: 原因:所有物料规划PR时对舍入值的先后考虑逻辑影响到回写出来的temp ...

  5. jdbcTemplate in

    参考 http://blog.csdn.net/gaopeng0071/article/details/75049952 使用NamedParameterJdbcTemplate public cla ...

  6. discuz的css处理机制

    common/common.css 是一个通用的css文件. common/module.css 是某个功能模块使用的css文件.   module.css中,利用特殊语法: /** 标识 **/ c ...

  7. memcache缓存失效

    缓存过期 memcached在处理过期的缓存项时,采用懒惰模式处理方法. 缓存项过期,不会立即删除,直到对该缓存项执行了get操作,才会删除过期缓存. > set key 0 10 > t ...

  8. cannot convert from 'wchar_t *' to 'char *' 问题

    MFC中使用unicode 会导致cstring之间的转换变的很复杂 经常遇到这样的错误cannot convert from 'wchar_t *' to 'char *' 强制转换成wchar_t ...

  9. VC小笔记

    1.strcpy不需要指定的长度,遇到被复制字符的串结束符’\0’才结束,容易溢出 2.memcpy(k, s, strlen(s)*sizeof(char)+1); // strlen(s) 后 + ...

  10. vue2.0 MintUI安装和基本使用

    http://mint-ui.github.io/docs/#/en2 Mintui 详细地址 基于2.0的安装 npm install mint-ui -S 主要就三行指令 import Mint ...