OpenGL ES平移矩阵和旋转矩阵的左乘与右乘效果

OpenGL ES平移矩阵和旋转矩阵的左乘与右乘

在OpenGL 、OpenGL ES中矩阵起着举足轻重的作用,而矩阵之间的左乘与右乘在效果上是不同的。

一、先平移后旋转

场景效果:人绕树旋转。

原理:以树为参考点,首先将人平移到树坐标系的指定位置(平移矩阵),然后旋转一定角度(旋转矩阵)。

公式:

pos = (matRotate * matTrans * vec4(pos,1.0)).xyz;

其中matRotate表示旋转矩阵;

matTrans表示平移矩阵;

pos表示三维世界的坐标。

二、先旋转后平移

场景效果:以太阳为参考点的地球自转。

原理:以太阳为参考点,首先旋转地球(旋转矩阵),然后将地球平移到太阳坐标系的指定位置(平移矩阵)。

公式:

pos = (matTrans * matRotate * vec4(pos,1.0)).xyz;

其中matRotate表示旋转矩阵;

matTrans表示平移矩阵;

pos表示三维世界的坐标。

注意事项:

OpenGL|ES是基于右手坐标系运算的,因此在上述公式中,矩阵是从右向左起作用的,也就是距离vec4的pos越近,越先起作用。

时间: 2024-10-05 10:01:21

OpenGL ES平移矩阵和旋转矩阵的左乘与右乘效果的相关文章

【转】OpenGL和D3D 矩阵对比

矩阵是三维图形学中不可或缺的部分,几乎所有和变换相关的操作都涉及矩阵,世界变换,视图变换,投影变换,视口变换无一不需要矩阵,但是当今的两大主流图形库DirectX和OpenGL对矩阵操作却有着细微的差别,大多数的图形学书籍都以OpenGL为基础进行阐述,游戏编程类的书籍则更多使用DirectX,这就难免产生混淆,今天这篇主要讲讲两者在操作矩阵的时候有何不同. 矩阵 在三维图形学中,一般使用四维矩阵,也就是四行四列的方阵,下面是一个典型的四维矩阵 既然是三维图形学,为什么使用四维矩阵呢?主要有两个

OpenGL ES 渲染立体图形

一.理解 顶点数据存储在申请的缓冲区中,其由数据总线传递给着色器(如果是片元着色器,还须将顶点转换成片元),再由着色器最终渲染到涂层上: 二.思路 1.设置涂层: 2.创建上下文: 3.清空缓存区: 4.创建渲染缓存区和帧缓存区: 5.开始绘制: 三.核心代码 //最终渲染 - (void)renderLayer { //设置窗口背景颜色 glClearColor(0.0, 0.0, 0.0, 1.0); //清空颜色缓存 glClear(GL_COLOR_BUFFER_BIT); //设置视口

Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵

我们现在准备好在代码中添加透视投影了.Android的Matrix类为它准备了两个方法------frustumM()和perspectiveM().不幸的是,frustumM()的个缺陷,它会影响某些类型的投影,而perspectiveM()只是从Android的ICS版本开始才被引入,在早期的Android版本里并没有这个方法.我们可以简单地支持ICS及其以上的版本,但是这样会丢掉很大一部分市场,一些用户依然运行早期的Android版本. 作为替代,我们可以创建我们自己的方法来实现投影矩阵.

OpenGL ES学习笔记(二)——平滑着色、自适应宽高及三维图像生成

首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--OpenGL ES的基本用法.绘制流程与着色器编译>中实现了OpenGL ES的Android版HelloWorld,并且阐明了OpenGL ES的绘制流程,以及编译着色器的流程及注意事项.本文将从现实世界中图形显示的角度,说明OpenGL ES如何使得图像在移动设备上显示的更加真实.首先,物体有各种颜色

【Android应用开发】 OpenGL ES -- 透视投影 和 正交投影

博客地址 : http://blog.csdn.net/shulianghan/article/details/46680803 源码下载 : http://download.csdn.net/detail/han1202012/8903437 正交投影效果 :  透视投影效果 :  一. 投影简介 1. 摄像机位置 摄像机参数 : -- 摄像机位置 : 摄像机的 三维坐标位置 x, y, z 坐标; -- 观察方向 : 摄像机镜头的朝向, 是一个三维向量, 指向一个三维坐标方向; -- up

现代OpenGL教程 03 - 矩阵,深度缓冲,动画

http://huangwei.pro/2015-08/modern-opengl3/ 本文中,我会将不会动的2D三角形替换为旋转的3D立方体.你会看到这样的效果: 现在我们终于能在屏幕上搞点有趣的东西了,我放了更多的动图在这里:http://imgur.com/a/x8q7R 为了生成旋转立方体,我们需要学些关于矩阵的数学,用于创建透视投影,旋转,平移和"相机"概念.我们还有必要学习些深度缓冲,和典型的随时间改变的3D应用,比如动画. 获取代码 所有例子代码的zip打包可以从这里获取

OpenGL ES总结(一)OpenGL 初识

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/61615215 OpenGL是在图形图像中,非常优秀的渲染库,文中Demo下载地址:https://github.com/hejunlin2013/OpenGL31,看下今天的Agenda: OpenGL是什么? OpenGL主要功能是什么? OpenGL ES是什么? Android中如何描述OpenGL ES版本 映射坐标绘制对

Android OpenGL ES(十四)gl10方法解析

Android 支持 OpenGL 列表 1.GL 2.GL 10 3.GL 10 EXT 4.GL 11 5.GL 11 EXT 6.GL 11 ExtensionPack 我们将使用 GL10 这个类开始接触 OpenGL,探索3D 领域. javax.microedition.khronos.opengles 接口GL10 上级接口:GL 下级接口:GL11 公共接口GL10继承于GL GL10接口包含了Java(TM)程序语言为OpenGL绑定的核心功能.OES_byte_coordin

Android OpenGL ES零基础系列(一):理解GLSurfaceView,GLSurfaceView.Render的基本用法

转载请注明出处 前言 OpenGL ES是OpenGL的一个子集,是针对手机.PDA和游戏主机等嵌入式设备而设计的.该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准. 因此OpenGL ES作为第三方库被应用在android中. 到目前为止,OpenGL ES已经发展有了3个版本,OpenGL ES 1.0 , OpenGL ES 2.0 , OpenGL ES 3.0.其中OpenGL ES 1.0 是以OpenGL 1.3