几个经典的数学库之一学习---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效果也很不错,下图是首页上的一个例子.他也有一个交互的网页,你可以自 ...
随机推荐
- Hibernate 的事物简单的增删查改
Hibernate 是一个优秀的ORM框架体现在: 1. 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象.建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管 ...
- 华为手机不打印log解决方法
在拨号界面输入:*#*#2846579#*#* 进入后台设置---log设置---开启AP日志...开关即可
- SpringMVC 文件上传 MultipartFile
本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤 SpringMVC 基础教程 框架分析:http ...
- $(this).form("validate") 始终返回false
onsubmit 提交前触发,返回 false 来阻止提交动作. validate 进行表单字段验证,当全部字段都有效时返回 true .该方法和 validatebox 插件一起使用. 解决:注释掉 ...
- Python合并列表,append()、extend()、+、+=
在实际应用中涉及到了列表合并的问题. 在应用append()时,发现列表是以一个元素的形式追加到列表上的,最后查询后用的是extend()方法,下面是区别 1.append() 向列表尾部追加一 ...
- openresty + luajit
https://moonbingbing.gitbooks.io/openresty-best-practices/content/lua/brief.html ftp://ftp.csx.cam.a ...
- Mybatis中的N+1问题与延迟加载
0.什么是N+1问题? 在查询中一下子取出所有属性,就会使数据库多执行几条毫无意义的SQL .实际中不需要把所有信息都加载进来,因为有些信息并不常用,加载它们会多执行几条毫无用处的 SQL,导致数据库 ...
- GridView控件中的一些常见问题
1. 无法获取模板列中的值,使用FindControl()方法无效: 给模板列中添加隐藏域,并给隐藏域绑定要获取的值,代码如下: <asp:HiddenField ID="hfIsFr ...
- C#操作Excel 单元格的格式处理[xyytIT]
一. C# 操作 Excel 单元格自动填充,居中对齐,字体颜色等格式设置: Excel.Range titleRange = worksheet.get_Range(worksheet.Cells[ ...
- 零基础学习hadoop到上手工作线路指导(中级篇)
此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结. 五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解: hadoop分为h ...

