OpenGL矩阵变换

原创 2015年07月08日 23:27:32

ModelView Matrix推导

现在考虑Object坐标系中的点P(Px,Py,Pz)向Camera坐标系进行变换,Object坐标轴分别为xyz,Camera坐标轴分别为uvn

P=Pxx⃗ +Pyy⃗ +Pzz⃗ 

先只考虑旋转变换,Camera坐标系的基向量可表示为:
u⃗ v⃗ n⃗ =u.xx⃗ +u.yy⃗ +u.zz⃗ =v.xx⃗ +v.yy⃗ +v.zz⃗ =n.xx⃗ +n.yy⃗ +n.zz⃗ 


(u⃗ ,v⃗ ,n⃗ )t=M(x⃗ ,y⃗ ,z⃗ )t

其中,
M=u.xv.xn.xu.yv.yn.yu.zv.zn.z

可以观察到MMt=I,所以有
Mt(u⃗ ,v⃗ ,n⃗ )t=(x⃗ ,y⃗ ,z⃗ )t(u⃗ ,v⃗ ,n⃗ )M=(x⃗ ,y⃗ ,z⃗ )

现在再考虑点P
P=(x⃗ ,y⃗ ,z⃗ )PxPyPz=(u⃗ ,v⃗ ,n⃗ )MPxPyPz

可以看到,齐次坐标下,旋转变换矩阵为
u.xv.xn.x0u.yv.yn.y0u.zv.zn.z00001

再考虑平移变换,Camera坐标系原点与Object坐标系原点构成的向量即为平移向量,记为eye,向Camera坐标系的坐标轴投影,即得到平移变换矩阵
100001000010eyeu⃗ eyev⃗ eyen⃗ 1

所以,最终的ModelView矩阵为:
u.xv.xn.x0u.yv.yn.y0u.zv.zn.z0eyeu⃗ eyev⃗ eyen⃗ 1

OpenGL的矩阵变换详解——有图有真相

OpenGL有个小小的难点,就是矩阵变换的顺序问题。一不小心就会用错,变换后的物体和自己想要的完全不一样。为了自己的理解,也为了帮助别人的理解,我下面对矩阵变换做一个解释。当然,大片大片的文字肯定会让...
  • u013299585
  • u013299585
  • 2017年04月28日 23:22
  • 265

OpenGL ES 矩阵变换及其数学原理

矩阵变换及其数学原理引子推荐这篇文章线性代数的本质,这篇文章挺不错的,揭示了矩阵和向量的内涵。首先概要性的提一下 向量刻画的是线性空间中的对象。 矩阵刻画的是向量在线性空间中的运动(变换,跃迁),相似...
  • cauchyweierstrass
  • cauchyweierstrass
  • 2016年10月24日 10:41
  • 1798

opengl 矩阵变换

第四章 矩阵变换    通过前三章的学习,我们知道了如何使用OpenGL在3D空间中绘制基本图元,并把使用图元组成模型。然而,在我们绘制完一个物体或一个场景之后,我们总希望从多个角度观察这个物体,或者...
  • delphiabcd
  • delphiabcd
  • 2008年02月01日 23:48
  • 6014

Android OpenGL ES(十四):通用的矩阵变换指令

Android OpenGL ES 对于不同坐标系下坐标变换,大都使用矩阵运算的方法来定义和实现的。这里介绍对应指定的坐标系(比如viewmodel, projection或是viewport) An...
  • jackie03
  • jackie03
  • 2012年02月29日 11:17
  • 4094

OpenGL(五) 三维变换之模型视图矩阵

计算机三维图形学中,一个基本的任务是如何描述三维空间中一个物体位置的变化,也就是如何 描述物体的运动。通常情况下,物体位置的变化包含三个基本的变化:平移、旋转和缩放,物体的运动也可以用这三个基本的运动...
  • dcrmg
  • dcrmg
  • 2016年11月08日 23:14
  • 2431

opengl基础知识 关于四个变换的顺序

OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库, gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包含了最基本的3D函数,而glu似乎对gl的...
  • cjneo
  • cjneo
  • 2016年01月12日 15:20
  • 884

OpenGL学习脚印: 投影矩阵和视口变换矩阵(math-projection and viewport matrix)

写在前面 前面几节分别介绍了模型变换,视变换,本节继续学习OpenGL坐标变换过程中的投影变换。这里主要是从数学角度推导投影矩阵。对数学不感兴趣的,可以稍微了解下,或者跳过本节内容。本文主要...
  • ziyuanxiazai123
  • ziyuanxiazai123
  • 2016年06月05日 18:06
  • 13537

opengl 矩阵变换

#include #include #include GLfloat step=0.0,s=0.1; void CALLBACK display(); void CALLBACK dis...
  • u010296979
  • u010296979
  • 2014年08月11日 17:17
  • 833

OpenGL 矩阵变换

Overview 几何数据——顶点位置,和标准向量(normal vectors),在OpenGL 管道raterization 处理过程之前可通过顶点操作(Vertex Operation)和...
  • XB554790401
  • XB554790401
  • 2013年12月03日 19:56
  • 756

OpenGL(4)-Opengl矩阵变换

Opengl矩阵变换矩阵变换 Opengl中有很多坐标系,但实际上他们只是思考方式的不同。opengl渲染图形耳朵过程可以和照相机照相的过程类比起来。用照相机照相的过程分为如下几个步骤: 1....
  • youjiaqu
  • youjiaqu
  • 2016年01月05日 14:05
  • 630
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenGL矩阵变换
举报原因:
原因补充:

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