当前课程知识点:移动图形概论 >  第三章 OpenGL ES 变换 >  3.2 旋转与位移变换 >  旋转与位移变换

返回《移动图形概论》慕课在线视频课程列表

旋转与位移变换在线视频

下一节:OpenGL ES 变换基础

返回《移动图形概论》慕课在线视频列表

旋转与位移变换课程教案、知识点、字幕

同学们 大家好

今天我要给大家介绍的是

3D图形应用中最常见的两种变换形式

旋转和位移

今天要讲的主要内容包括

向量在这两种基本变换上的数学表达方法

还有一些常用的数学公式

首先我们来看一下

为什么要进行变换

为什么不在模型设计的时候

就把它的变换完成呢

因为模型在设计的时候都有它自己的中心

每个顶点都是相对于这个中心来定位

设计者也不知道将来模型在应用的时候

会放在具体的什么位置

在实际的场景中往往要将多个模型进行组合

对每个模型还有可能会进行不同的缩放

旋转或者平移

如果有比较简单的数学方法

来对这些变换来进行计算

那可真是太方便了

缩放可以说是最简单的一种图形变换

也就是改变模型的大小

对于一个矢量来讲

我们把它坐标排列成一个列矢量矩阵

那么等比例缩放就相当于是数乘运算

即在每个坐标分量上都乘以相同的缩放因子

而对于非等比例缩放那么就要使用到矩阵了

我们可以使用一个对角矩阵

每个对角元素就是相对应的坐标的缩放因子

就像这里展示的这个例子

xy和z坐标分别被缩放了sx

sy和sz倍

旋转的运算要略微复杂一些

就像右边的图所示

坐标为xy的a矢量旋转了theta角度之后变为a’

而矢量的坐标变成x’y’

利用一点三角函数的和角公式的知识

可以很容易地计算出新的坐标

x’y’可以由这里所展示的矩阵运算来获得

这个矩阵就叫做旋转变换矩阵

而对于三维的情况如果旋转的矢量

在旋转前和旋转后都在同一个坐标平面

那么三维情况的旋转变换矩阵

就和二维的表达形式非常接近

幻灯片中展示的就是围绕z轴旋转的旋转变换矩阵

它的前两行和前两列的内容

与前面二维的情况是一致的

在第三个维度上对角元素为1

其它的量为0

实际上在三维空间中任意多个旋转的组合

都可以表示成绕一个固定向量的一次旋转

而这个旋转过程也可以用一个

3×3的矩阵来表达出来

只是这个表达式一般比较复杂

这里就不进行推导了

平移运算看起来好像比旋转运行要简单

但在实际操作的时候就会发现有些问题

试想一下

对于三维的平移运算可以用3×3的矩阵来表示吗

比如说在x方向上移动a的距离

有没有可能用一个3×3的矩阵

使这个矩阵的表达式成立呢

答案是不行的

这时候就要引入一个所谓的齐次坐标的概念

增加1个维度叫做W维

成为4维向量

变换矩阵也将成为4×4的矩阵

三维坐标变为四维坐标之后

增加的第4维元素一般设置为1

就变成了相对应的齐次坐标

而齐次坐标可以除以第4维的分量

使得第4维成为1

并将第4维去掉

转化为笛卡尔坐标

当矢量通过齐次坐标来表示以后

在x方向平移a距离的平移变换

就可以用这个矩阵表达式来计算了

我们可以看到

原来的坐标xyz还有第4维的1

经过变换之后变成了x加a,y,z和第4维的1

这个变换矩阵的第四行

只有最后一个元素为1

保证了W分量不变

而矩阵的第四列

除了最后一个元素

其它三个元素就分别代表了

不同坐标轴方向上的平移距离

齐次坐标系的概念对于前面提到的

缩放和旋转变换也同样适用

新的变换矩阵只要加上第四行和第四列

其中增加的行或者列矢量只有第四个元素为1

其它的元素都是0

使用齐次坐标系统后

前面提到的各种变换的表达式获得了统一

不必专门为平移变换设置新的表达方式

在矢量处理的过程中

除了在最后显示这个矢量之前

没有必要把齐次坐标转为笛卡尔坐标

通过矩阵的乘法

所有不同的变换

可以组合成单一的4×4矩阵来表示

这种处理方式在图像处理软件和硬件中

都获得了非常广泛的应用

现在我们通过旋转和平移变换为例

展示一下齐次矩阵的组合

屏幕上面展示的m矩阵

由平移矩阵和旋转矩阵相乘所得

由于两个矩阵中都有很多的0和1

计算起来非常的简单

通过矩阵的乘法定义

很容易的就可以算出等号右边的结果

这个矩阵

左上角的3×3矩阵正好是旋转变换矩阵

而第四列也正好与平移矩阵相同

在这里我们是先进行了旋转变换

用R乘以P

然后进行平移转换

用T乘以前面的结果

这个平移变换和旋转变换

可以组合成M矩阵表示的变换

也就是M=T*R

实际上这个顺序非常重要

矩阵的乘法不支持交换律

先旋转再平移和先平移再旋转

也会得到不同的结果

因为先平移再旋转

旋转的时候会把平移的分量部分也进行了旋转

这往往并不是我们想要的结果

最后说下法线变换

法线指的是和模型表面垂直的一条向量

模型上每个顶点都可以有一个法线与之对应

在图形应用中

特别是在计算光照效果的时候

经常会用到法线的概念

在模型的设计过程中

模型表面的法线方向也是这个模型的重要数据

但模型在经历了变换之后

它的法线方向是否也要经历同样的变化呢

答案是否定的

一般情况下

法线的变换矩阵Q和模型的变换矩阵M之间

有这样的关系

Q等于M的逆再求转置

但在有些特殊的情况下法线变换可以简化

例如平移不影响法线的方向

而旋转变换的矩阵的逆就是它的转置

所以在这种情况下

法线的变换矩阵和模型的变换矩阵是相同的

今天的课程就到这里

谢谢大家

移动图形概论课程列表:

第一章 课程简介

-1.1 课程基本情况介绍

--课程基本情况介绍

-1.2 GPU 相关基础知识

--GPU 相关基础知识

-1.3 OpenGL ES 技术发展历史

--OpenGL ES 技术发展历史

-1.4 PowerVR SDK 安装和使用

--PowerVR SDK 安装和使用

-第一章测试

第二章 图形编程入门

-2.1 OpenGL ES 基本概念

--OpenGL ES 基本概念

-2.2 编写第一个图形程序

--编写第一个图形程序

-2.3 主要 API 介绍

--主要 API 介绍

-第二章测试

第三章 OpenGL ES 变换

-3.1 矢量和矩阵知识基础

--矢量和矩阵知识基础

-3.2 旋转与位移变换

--旋转与位移变换

-3.3 OpenGL ES 变换基础

--OpenGL ES 变换基础

-第三章测试

第四章 OpenGL ES 着色器

-4.1 着色器编程语言介绍

--着色器编程语言语法

--着色器编程语言特殊语法

-4.2 着色器编程实例

--着色器编程实例

-第四章测试

第五章 颜色与纹理

-5.1 颜色的基本概念

--颜色的基本概念

-5.2 纹理素材的使用

--纹理素材的使用

-5.3 立方体纹理

--立方体纹理

-第五章测试

第六章 光源与光照

-6.1 光照的基本概念

--光照的基本概念

-6.2 光源模型

--光源模型

-6.3 使用着色器渲染颜色

--使用着色器渲染颜色

-6.4 反射与折射

--反射与折射

-第六章测试

第七章 基于物理的渲染

-7.1 基于物理渲染的基本概念

--基于物理渲染的基本概念

-7.2 基于图像的照明

--基于图像的照明

-7.3 PBR 的实现

--PBR 的实现

-第七章测试

第八章 PowerVR 工具简介

-8.1 Vulkan 介绍

--Vulkan 介绍

-8.2 SDK 中的实用工具介绍

--SDK 中的实用工具介绍

-综合测试

旋转与位移变换笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。