OpenGL: 视图矩阵的推导

转载 2015年07月07日 21:17:01

  把物体从世界坐标系转化到视点坐标系的矩阵称为视图矩阵。

     下面我们先看下opengl视图矩阵的推导过程:

     假设视点或camera的局部坐标系为UVN,UVN分别指向右方、上方和后方从而构成右手坐标系,视点则局部坐标系处于坐标原点。

     就如OpenGL的函数OpenGL的gluLookAt(eyex, eyey, eyez, lookatx, lookaty, lookatz, upx, upy, upz)一样,给定视点、观察点、以及up向量,现在我们来求得视图矩阵。

1、首先我们来求得N = eye – lookat,并把N归一化。

2、up和N差积得到U, U= up X N,归一化U。

3、然后N和U差积得到V

image

      假设视点坐标系初始和世界坐标系重合,它先进行一个旋转变化,然后再进行一个平移,得到现在是视点位置和方位。则此时进行的矩阵变化为image,其中T是平移变化,R是旋转变化,而相机变换是相机本身变换的逆变换。

image

T的逆矩阵为:

image

     当相机变换进行完Inverse Translation这一步之后,相机的原点和世界原点就重合了,也就是处理完了关于平移的变换。

     我们要把一个世界坐标系点K(Kx, Ky, Kz),表示成(U,V,P)坐标系的点(假设此时,已经经过平移操作,摄像机在世界坐标系的原点),则其公式为:

Lx = Kx * Ux + Ky * Uy + Kz * Uz;

Ly = Kx * Vx + Ky * Vy + Kz * Vz;

Lz = Kx * Px + Ky * Py + Kz * Pz

则转化矩阵为(OpenGL使用列向量,右乘)

image

则完整的公式为:image

 

      以上是opengl的视图矩阵,对于d3d,由于使用行向量,左乘,以及左手坐标系,所以视图稍有不同,在D3D11教程中,曾加做过推导:

http://www.cnblogs.com/mikewolf2002/archive/2012/03/11/2390669.html

相关文章推荐

OpenGL 渲染管线理论

这几天稍微看了一些关于GLSL的顶点着色以及片元着色的一些相关知识.目前来讲还有一个着色器则是Geometry_shader..我的显卡用不了这个功能..当然有点遗憾>_          在看了一...

视图矩阵推导

转自:http://hanwei0143.blog.163.com/blog/static/519269932007112591355562/   3D图形的渲染中数据处理主要是按照这样流程处理:...
  • Magina3
  • Magina3
  • 2011年11月06日 22:27
  • 1361

一、OpenGL灯光位置的控制 -- 模型视图矩阵的本质

纠结了很久,终于算是可以完全控制

opengl入门系列2- 模型视图矩阵变换

一:基础知识:       openGL
  • zg260
  • zg260
  • 2014年09月12日 17:06
  • 792

openGL中根据读取的数据,确定投影矩阵和模型视图矩阵

openGL中根据读取的数据,确定投影矩阵和模型视图矩阵 1 问题描述 一开始假设我们已经读入了一系列三维坐标点数据。我们的目的是通过确定openGL的投影和模型视图矩阵,从而能在窗口中居中显示这...

小白学opengl之 获取模型视图矩阵和投影矩阵

#include #include #include #include #include using namespace std; static int shoulder=0,elbow...

OpenGL矩阵推导——模型视图变化(转载需写明作者)

OpenGL矩阵推导——模型视图变化 在三维编程中,模型视图变换是从三维世界到二维屏幕中一个很重要的变换,但是这个变换往往很多人都不太理解,要么是事而非。而这方面的文章不是太少就是讲的太浅没有真正的...

模型视图矩阵的例子

  • 2013年10月03日 09:29
  • 249KB
  • 下载

视图矩阵 directx 有注释 c++

  • 2012年09月29日 09:52
  • 6KB
  • 下载

WebGL之旅(九)视图矩阵

视图矩阵一 相机状态描述视点:相机在世界坐标中的位置 eye(eyeX, eyeY, eyeZ)观测点:被观察的目标点,指明相机的朝向 at(atX, atY, atZ)视线:从视点出发指向观测点方向...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenGL: 视图矩阵的推导
举报原因:
原因补充:

(最多只允许输入30个字)