2.1三维变换及三维观察ppt课件_第1页
2.1三维变换及三维观察ppt课件_第2页
2.1三维变换及三维观察ppt课件_第3页
2.1三维变换及三维观察ppt课件_第4页
2.1三维变换及三维观察ppt课件_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、三维变换及三维观察三维变换及三维观察计算机图形学基础计算机图形学基础计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维图形变换包括三维图形几何变换和投影变换。三维图形变换包括三维图形几何变换和投影变换。三维图形几何变换是指对三维图形的几何信息经过平移、三维图形几何变换是指对三维图形的几何信息经过平移、比例、旋转等变换后产生新的图形。三维图形几何变换实比例、旋转等变换后产生新的图形。三维图形几何变换实现从不同位置观察三维物体的模拟。现从不同位置观察三维物体的模拟。投影变换就是将三维立体或物体投射到投影面上得到投影变换就是将三维立体或物

2、体投射到投影面上得到二维平面图形。其实质是用二维图形表达三维对象。二维平面图形。其实质是用二维图形表达三维对象。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系与二维几何变换类似,三维图形几何变换也是通过对顶点与二维几何变换类似,三维图形几何变换也是通过对顶点坐标做矩阵变换来实现。坐标做矩阵变换来实现。在定义了规范化齐次坐标系之后,三维图形变换可以表示在定义了规范化齐次坐标系之后,三维图形变换可以表示为图形点集的规范化齐次坐标矩阵与某一变化矩阵相乘的为图形点集的规范化齐次坐标矩阵与某一变化矩阵相乘的形式。形式。三维变换的基本概念三维变

3、换的基本概念计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维齐次坐标变换矩阵简称为三维变换矩阵。三维齐次坐标变换矩阵简称为三维变换矩阵。其形式为:其形式为:snmlrihgqfedpcbaTD3三维变换的基本概念三维变换的基本概念计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维空间点的三维变换可以表示为点的规范化齐次坐标三维空间点的三维变换可以表示为点的规范化齐次坐标矩阵与三维变换矩阵相乘的形式。矩阵与三维变换矩阵相乘的形式。 snmlrihgqfedpcbazyxT

4、zyxzyxD1113三维变换的基本概念三维变换的基本概念计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系T3D按功能可划分为按功能可划分为4个子矩阵。个子矩阵。ihgfedcbaT13x3阶子矩阵,作用是对点进行比例、对阶子矩阵,作用是对点进行比例、对称、旋转和错切变换。称、旋转和错切变换。nmlT 21x3阶子矩阵,作用是对点进行平移变换。阶子矩阵,作用是对点进行平移变换。rqpT33x1阶子矩阵,作用是对点进行透视变换。阶子矩阵,作用是对点进行透视变换。 sT 41x1阶子矩阵,作用是产生整体比例变换。阶子矩阵,作用是产生整体比

5、例变换。三维变换的基本概念三维变换的基本概念计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系1000000000000jeaTscale常见的几种三维齐次坐标变换矩阵:常见的几种三维齐次坐标变换矩阵: 一、比例变换:一、比例变换:二、平移变换:二、平移变换:1010000100001nmlTmove矩阵中的矩阵中的a e j分别为分别为x y z三个方向的比例因子。三个方向的比例因子。矩阵中的矩阵中的l m n分别为分别为x y z三个方向的平移量。三个方向的平移量。三维几何变换三维几何变换计算机图形学基础计算机图形学基础三维变换及三

6、维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三、旋转变换:三、旋转变换:旋转角度正负向定义符合右旋转角度正负向定义符合右手螺旋定则。即大拇指表示手螺旋定则。即大拇指表示坐标轴正向,四指握拳的方坐标轴正向,四指握拳的方向为旋转角的正向。向为旋转角的正向。三维几何变换三维几何变换YZ计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系常见的几种三维齐次坐标变换矩阵:常见的几种三维齐次坐标变换矩阵: 当物体分别绕当物体分别绕x、y、 z轴旋转时,旋转变换矩阵分别为:轴旋转时,旋转变换矩阵分别为:10000cossin00si

7、ncos00001xT绕绕x轴旋转轴旋转旋转前后坐标变换旋转前后坐标变换的关系为:的关系为:xx sincoszyycossinzyz三维几何变换三维几何变换计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系绕绕y轴旋转轴旋转旋转前后坐标变旋转前后坐标变换的关系为:换的关系为:10000cos0sin00100sin0cosyTsincoszxxyy cossinzxz三维几何变换三维几何变换计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系绕绕z轴旋转轴旋转旋转前后坐标变旋转前

8、后坐标变换的关系为:换的关系为:1000010000cossin00sincoszTsincosyxxcossinyxyzz 三维几何变换三维几何变换计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系四、三维复合变换变换:四、三维复合变换变换:三维复合变换是指图形作一次以上的变换,变换结果是每三维复合变换是指图形作一次以上的变换,变换结果是每次变换矩阵的乘积。次变换矩阵的乘积。) 1( )(321nTTTTPTPPn三维几何变换三维几何变换计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字

9、媒体工程系三维齐次坐标变换矩阵三维齐次坐标变换矩阵四、三维复合变换变换四、三维复合变换变换绕任意轴的三维旋转变换绕任意轴的三维旋转变换假设已知空间有任意轴假设已知空间有任意轴AB,点,点A的坐的坐标为标为(xA, yA, zA),AB矢量的方向系矢量的方向系数为数为(a, b, c)。现有空间点。现有空间点P(x, y, z),绕绕AB轴逆时针方向旋转轴逆时针方向旋转角后为角后为P(x, y, z),若旋转变换矩阵,若旋转变换矩阵为为TrAB,则有:,则有:ABTrzyxzyx 1 1计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三

10、维齐次坐标变换矩阵三维齐次坐标变换矩阵变换步骤:变换步骤: 平移平移将点将点A平移至原点。平移至原点。 旋转旋转将平移后的轴将平移后的轴OB绕绕y轴轴旋转旋转a角,使角,使OB变换成位于变换成位于zoy面面内的矢量内的矢量B”。 旋转旋转再绕再绕x轴旋转轴旋转b角,使矢量角,使矢量与与oz轴重合。轴重合。 点点P旋转旋转点点P绕绕oz轴旋转轴旋转q角。角。 逆变换逆变换按上述步骤做逆变换,按上述步骤做逆变换,使使AB回到原来位置。回到原来位置。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系111ARyRxRRxRyATTTTTTTT

11、三维齐次坐标变换矩阵三维齐次坐标变换矩阵四、三维复合变换变换四、三维复合变换变换绕任意轴的三维旋转变换绕任意轴的三维旋转变换上述变换过程用矩阵表示为:上述变换过程用矩阵表示为:要推导出要推导出7个矩阵相乘后的结果矩阵,是一项复杂且易个矩阵相乘后的结果矩阵,是一项复杂且易出错的工作。出错的工作。OpenGL通过操作矩阵堆栈完成多个矩阵通过操作矩阵堆栈完成多个矩阵相乘。相乘。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系平面几何投影平面几何投影计算机图形显示的核心是创建三维物体的二维图像,因为计算计算机图形显示的核心是创建三维物体的二维

12、图像,因为计算机的屏幕是二维平面。机的屏幕是二维平面。投影即是三维物体通过投射,在投影面上生成二维平面图形。投影即是三维物体通过投射,在投影面上生成二维平面图形。投影分为平面几何投影和观察投影。投影分为平面几何投影和观察投影。平面几何投影主要指平行投影和透视投影。平面几何投影主要指平行投影和透视投影。观察投影是指在观察空间下进行的图形投影变换。观察投影是指在观察空间下进行的图形投影变换。投影的过程实质上是一种变换,在计算机内部,不同的变换可投影的过程实质上是一种变换,在计算机内部,不同的变换可以用不同的矩阵表示。以用不同的矩阵表示。 计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及

13、三维观察广东工业大学机电学院图学与数字媒体工程系平面几何投影平面几何投影平行投影:互相平行的投射线照射物体,在投影面内产生三维平行投影:互相平行的投射线照射物体,在投影面内产生三维物体的影像。平行投影体系生成物体的三视图和轴测图。物体的影像。平行投影体系生成物体的三视图和轴测图。透视投影:点光源发透视投影:点光源发出的光线照射物体,出的光线照射物体,在投影面上产生三维在投影面上产生三维物体的影像。物体的影像。透视图分为单点透视、透视图分为单点透视、两点透视和三点透视。两点透视和三点透视。透视投影和平行投影的本质区别在于透视投影的投影中心到投透视投影和平行投影的本质区别在于透视投影的投影中心到投

14、影面之间的距离是有限的;平行投影的投影中心到投影面之间影面之间的距离是有限的;平行投影的投影中心到投影面之间的距离是无限的。的距离是无限的。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系透视投影属透视投影属于中心投影于中心投影正投影和斜投影属于平行投影正投影和斜投影属于平行投影平面几何投影平面几何投影计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系平面几何投影平面几何投影计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工

15、程系三维投影变换三维投影变换平行正投影三视平行正投影三视图图三视图包括主视图、俯视图和三视图包括主视图、俯视图和左视图,由三维形体经投影变左视图,由三维形体经投影变换得到。要绘制三视图,需求换得到。要绘制三视图,需求得变换矩阵,经投影变换得到得变换矩阵,经投影变换得到三维形体上各顶点的投影坐标,三维形体上各顶点的投影坐标,即可绘制出三视图。即可绘制出三视图。三维投影变换的实质是将三维三维投影变换的实质是将三维形体上各点投影到同一个平面形体上各点投影到同一个平面上,得到的是一个二维的投影上,得到的是一个二维的投影视图。视图。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东

16、工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换平行正投影三视平行正投影三视图图1000010000000001vTu主视图投影矩阵为:主视图投影矩阵为:计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换平行正投影三视平行正投影三视图图u 俯视图:三维形体向俯视图:三维形体向xoy面又称面又称H面作垂直面作垂直投影得到俯视图。投影得到俯视图。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换平行正投影三视平行正投影三视图

17、图u俯视图投影矩阵:俯视图投影矩阵:1000000000100001xoyT立体向立体向XOY面投影面投影计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换平行正投影三视平行正投影三视图图u俯视图投影矩阵:俯视图投影矩阵:XOY面绕面绕OX轴向下轴向下旋转旋转90度度100000100100000110000)90cos()90sin(00)90sin()90cos(00001RxT计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换

18、平行正投影三视平行正投影三视图图u俯视图投影矩阵:俯视图投影矩阵:水平投影图形向下移动水平投影图形向下移动1000100001000010zTRx计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换平行正投影三视平行正投影三视图图u俯视图投影矩阵:俯视图投影矩阵:1000000010000010zTTTTtzRxxoy计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换平行正投影三视平行正投影三视图图u 侧视图:获得侧视图是将三维形体往

19、侧视图:获得侧视图是将三维形体往yoz面侧面面侧面W作垂直投影。作垂直投影。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换平行正投影三视平行正投影三视图图u侧视图投影矩阵:侧视图投影矩阵:立体向立体向YOZ面投影面投影1000010000100000yozT计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换平行正投影三视平行正投影三视图图u侧视图投影矩阵:侧视图投影矩阵:YOZ面绕面绕OZ轴旋转轴旋转10000100000100

20、10100001000090cos90sin0090sin90cosRzT计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换平行正投影三视平行正投影三视图图u侧视图投影矩阵:侧视图投影矩阵:侧投影图形沿水平方侧投影图形沿水平方向平移向平移1000100001000010 xTRx计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换平行正投影三视平行正投影三视图图u侧视图投影矩阵:侧视图投影矩阵:1000100000100000 xTT

21、TTtRzyoz计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换平行正投影三视平行正投影三视图图最终得到立体的三视图最终得到立体的三视图计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换正轴测图正轴测图正轴测图简介:正轴测图简介:选不平行于基本投影面的平选不平行于基本投影面的平面为投影面,以垂直于投影面为投影面,以垂直于投影面的矢量为投影矢量,得到面的矢量为投影矢量,得到的三维形体的图形,称为正的三维形体的图形,称为正轴测图。如右

22、图示。轴测图。如右图示。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换正轴测图正轴测图xzyOABCDEF正轴测投影是以任意平面为投影面正轴测投影是以任意平面为投影面所做的投影。如图,若以所做的投影。如图,若以ABC为投为投影面,投影矢量影面,投影矢量OF垂直于垂直于ABC平平面,点面,点E为原点为原点O在在ABC上的投影。上的投影。产生正轴测投影的思路为:产生正轴测投影的思路为:将投影矢量将投影矢量OF通过两通过两次旋转变化至与次旋转变化至与Z轴轴重合,此时重合,此时ABC平面平面变化至与变化至与XOY面平

23、行,面平行,三维向三维向XOY面做投影面做投影即可。即可。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换正轴测图正轴测图用矩阵表示正轴测变换的过程:用矩阵表示正轴测变换的过程:矢量矢量OF绕绕Y轴旋转轴旋转a角角10000cos0sin00100sin0cos10000)cos(0)sin(00100)sin(0)cos(RyT计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换正轴测图正轴测图用矩阵表示正轴测变换的过程:用矩阵表

24、示正轴测变换的过程:矢量矢量OF绕绕X轴旋转轴旋转 角角10000cossin00sincos00001RxT计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换正轴测图正轴测图用矩阵表示正轴测变换的过程:用矩阵表示正轴测变换的过程:再将三维形体向再将三维形体向XOY面投影面投影1000000000100001pT计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换正轴测图正轴测图将上述三个变换矩阵相乘得到正轴测变换矩阵:将上述三个变换

25、矩阵相乘得到正轴测变换矩阵:100000sincossin00cos000sinsincos pRxRyTTTT计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换正等轴测图正等轴测图正等轴测投影是正等轴测投影是x、y、z三个方向的轴向伸缩系数相等的三个方向的轴向伸缩系数相等的正轴测投影,此时有:正轴测投影,此时有:OA=OB=OC。推导可得:推导可得:22cossin33sin36cos计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影

26、变换正等轴测图正等轴测图正等轴测投影变换矩阵可写为:正等轴测投影变换矩阵可写为:0000004082. 07071. 0008165. 00004082. 07071. 0T计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换 透视投影透视投影透视投影是中心投影。下图为一点透视投影原理图,透视投影是中心投影。下图为一点透视投影原理图,XOY为为投影面,点投影面,点P为空间点,为空间点,p为点为点p在投影面上的投影。投影在投影面上的投影。投影中心在中心在Z轴上,且距投影面为轴上,且距投影面为d。透视投影的大小与距离。

27、透视投影的大小与距离d的的大小成反比。大小成反比。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系三维投影变换三维投影变换 透视投影透视投影透视投影分为一点透视、两点透视和三点透视,通过调整透视投影分为一点透视、两点透视和三点透视,通过调整变换矩阵中的变换矩阵中的p、q、r的取值,可以得到不同的透视图和的取值,可以得到不同的透视图和不同的透视效果。不同的透视效果。rqpT3透视投影由变换矩阵中的透视因子实现。透视投影由变换矩阵中的透视因子实现。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学

28、与数字媒体工程系OpenGL中的变换中的变换OpenGL图形软件包是为三维应用而设计的,包含了大量图形软件包是为三维应用而设计的,包含了大量的有关三维变换的操作。的有关三维变换的操作。OpenGL中常用的变换包括模型中常用的变换包括模型视图变换、投影变换和视见区视景体变换。视图变换、投影变换和视见区视景体变换。模型视图变换用于确定场景的位置,实现用户在任意位置、模型视图变换用于确定场景的位置,实现用户在任意位置、任意方向上进行观察。通过设定观察参考坐标系实现视图任意方向上进行观察。通过设定观察参考坐标系实现视图变换;通过对模型进行平移、旋转、缩放等,实现模型变变换;通过对模型进行平移、旋转、缩

29、放等,实现模型变换。换。投影变换定义了一个观察空间,指定已完成的场景转换成投影变换定义了一个观察空间,指定已完成的场景转换成屏幕上显示的最终图像的过程。常用的投影包括平行投影屏幕上显示的最终图像的过程。常用的投影包括平行投影和透视投影。和透视投影。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换矩阵堆栈矩阵堆栈计算机图形学中,所有的变换都是通过矩阵相乘来实现计算机图形学中,所有的变换都是通过矩阵相乘来实现的。的。OpenGL中,对象的坐标变换也是通过矩阵来实现中,对象的坐标变换也是通过矩阵来实现的。的。Op

30、enGL中包含两个重要的矩阵:模型视图矩阵和投影中包含两个重要的矩阵:模型视图矩阵和投影矩阵。模型视图矩阵用于物体的模型视图变换,投影矩矩阵。模型视图矩阵用于物体的模型视图变换,投影矩阵用于投影变换。阵用于投影变换。通过使用函数通过使用函数glMatrixMode(Glenum mode);指定当前操指定当前操作的矩阵对象的类型。作的矩阵对象的类型。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换矩阵堆栈矩阵堆栈指定矩阵类型函数的参数指定矩阵类型函数的参数mode有两个值:有两个值:GL_MODELVIEW

31、:表示对模型矩阵进行操作;:表示对模型矩阵进行操作;GL_PROJECTION:表示对投影矩阵进行操作;:表示对投影矩阵进行操作;一旦设置了当前操作矩阵,它就将保持为当前的矩阵对象,一旦设置了当前操作矩阵,它就将保持为当前的矩阵对象,直到再次调用函数直到再次调用函数glMatrixMode进行修改为止。进行修改为止。默认情况下,系统处理的当前矩阵是模型视图矩阵。默认情况下,系统处理的当前矩阵是模型视图矩阵。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换矩阵堆栈矩阵堆栈在构造复杂模型时,常常需要通过多个变换

32、调整各部分的在构造复杂模型时,常常需要通过多个变换调整各部分的大小、方位;或者模拟一个运动机构,需要用不同的变换大小、方位;或者模拟一个运动机构,需要用不同的变换矩阵来实现各部分自己的运动规律。矩阵来实现各部分自己的运动规律。为了能保存多次变换的中间过程,以便在进行一些变换后为了能保存多次变换的中间过程,以便在进行一些变换后能恢复到某些变换前的状态,能恢复到某些变换前的状态,OpenGL为模型视图矩阵和为模型视图矩阵和投影矩阵各维护着一个矩阵堆栈,栈顶矩阵就是当前的模投影矩阵各维护着一个矩阵堆栈,栈顶矩阵就是当前的模型视图矩阵或投影矩阵。型视图矩阵或投影矩阵。矩阵堆栈用于保存和恢复矩阵的状态,

33、主要用于具有层次矩阵堆栈用于保存和恢复矩阵的状态,主要用于具有层次结构的模型绘制,以提高绘图效率。结构的模型绘制,以提高绘图效率。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系层次模型的概念:层次模型的概念:在大多数的应用中,都需要方便的创建和操作许多复在大多数的应用中,都需要方便的创建和操作许多复杂的对象。通常,可以将这些复杂的对象分成一些相杂的对象。通常,可以将这些复杂的对象分成一些相对独立的子对象,然后描述这些对象组合成完整对象对独立的子对象,然后描述这些对象组合成完整对象时需要的规则,据此可以方便地描述、创建和操作复时需要的

34、规则,据此可以方便地描述、创建和操作复杂对象。杂对象。OpenGL中的变换中的变换矩阵堆栈矩阵堆栈计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系舞台SWF文件主类的实例显示对象容器显示对象显示对象容器显示对象容器显示对象容器显示对象显示对象右图为右图为AS3.0中的显示中的显示对象的等级结构,是对象的等级结构,是一个典型的层次结构。一个典型的层次结构。在在AS中,是通过容器中,是通过容器构建显示对象的层次构建显示对象的层次结构的,而在结构的,而在OpenGL中,则是通过矩阵堆中,则是通过矩阵堆栈实现层次结构的模栈实现层次结构的模型绘

35、制。型绘制。OpenGL中的变换中的变换矩阵堆栈矩阵堆栈计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换矩阵堆栈矩阵堆栈OpenGL实现矩阵堆栈操作的函数:实现矩阵堆栈操作的函数:void glPushMatrix(void);void glPopMatrix(void);函数函数glPushMatrix将当前堆栈的栈顶矩阵复制一个,并将将当前堆栈的栈顶矩阵复制一个,并将其压入当前矩阵堆栈。该函数用来保存当前变换矩阵。其压入当前矩阵堆栈。该函数用来保存当前变换矩阵。函数函数glPopMatrix用于将当前矩

36、阵堆栈的栈顶矩阵弹出,堆用于将当前矩阵堆栈的栈顶矩阵弹出,堆栈中的下一个矩阵变为栈顶矩阵即当前变换矩阵)。该栈中的下一个矩阵变为栈顶矩阵即当前变换矩阵)。该函数用来恢复当前变换矩阵原先的状态。函数用来恢复当前变换矩阵原先的状态。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换模型视图变换模型视图变换模型视图矩阵是一个模型视图矩阵是一个4G4阶矩阵,用于指定场景的视图阶矩阵,用于指定场景的视图变换如生产三视图、轴测图等和几何变换模型的变换如生产三视图、轴测图等和几何变换模型的缩放、旋转、平移等)。缩放、旋转、

37、平移等)。在进行模型视图矩阵操作之前,必须先调用函数在进行模型视图矩阵操作之前,必须先调用函数glMatrixMode(GL_MODELVIEW);指定变换只能影响模型视图矩阵。指定变换只能影响模型视图矩阵。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换模型视图变换模型视图变换模型视图变换的实现主要有两种方法。模型视图变换的实现主要有两种方法。一、直接定义矩阵一、直接定义矩阵p221)利用函数利用函数void glLoadMatrixfd(const TYPE *m);将将m指定的矩阵置为当前矩阵堆栈的栈

38、顶矩阵。其中,指定的矩阵置为当前矩阵堆栈的栈顶矩阵。其中,m是指向是指向一个一个4x4矩阵的指针。矩阵的指针。注意:如果矩阵注意:如果矩阵m作用的模型是作用的模型是OpenGL库函数定义的模型,则库函数定义的模型,则m矩阵以列优先顺序保存变换矩阵的数据;即前面推导的变换矩矩阵以列优先顺序保存变换矩阵的数据;即前面推导的变换矩阵要转秩。如果模型以顶点数组定义,而顶点数组是按行存储点阵要转秩。如果模型以顶点数组定义,而顶点数组是按行存储点坐标,则矩阵坐标,则矩阵m以行优先顺序保存变换矩阵的数据。以行优先顺序保存变换矩阵的数据。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东

39、工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换模型视图变换模型视图变换设置自定义矩阵的步骤:设置自定义矩阵的步骤:glfloat m=;glMatrixMode(GL_MODELCIEW);glLoadMatrixf(m);实例分析:轴测图,实例分析:轴测图,mysolid旋转旋转注意:注意:OpenGL坐标系的坐标系的XOY平面是正立投影面,因此生平面是正立投影面,因此生成三视图的矩阵与课本中的矩阵有所不同。成三视图的矩阵与课本中的矩阵有所不同。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系xzyoOpenGL中

40、的变换中的变换模型视图变换模型视图变换OpenGL坐标系如图所示,在该坐标下坐标系如图所示,在该坐标下下,三视图变换矩阵如下。下,三视图变换矩阵如下。1. 主视图,所有点的主视图,所有点的z坐标为坐标为0,变,变换矩阵为:换矩阵为:1000000000100001VT计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系xzyoOpenGL中的变换中的变换模型视图变换模型视图变换2. 俯视图变换矩阵推导过程如下。俯视图变换矩阵推导过程如下。(1) 向向XOZ面投影:面投影:10000100000000011HT计算机图形学基础计算机图形学基

41、础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系xzyoOpenGL中的变换中的变换模型视图变换模型视图变换2. 俯视图变换矩阵推导过程如下。俯视图变换矩阵推导过程如下。(2绕绕X轴旋转轴旋转90:10000010010000011000090cos90sin0090sin90cos000012HT计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系xzyoOpenGL中的变换中的变换模型视图变换模型视图变换2. 俯视图变换矩阵推导过程如下。俯视图变换矩阵推导过程如下。(3) 沿沿Y轴移动轴移动m:10001

42、00001000013mTH计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系xzyoOpenGL中的变换中的变换模型视图变换模型视图变换2. 俯视图变换矩阵推导过程如下。俯视图变换矩阵推导过程如下。(4) 三步复合变换后得到在三步复合变换后得到在OpenGL屏幕坐标系中俯视图变换矩阵:屏幕坐标系中俯视图变换矩阵:100001000000001321mTTTTHHHH计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系xzyoOpenGL中的变换中的变换模型视图变换模型视图变换3.

43、 右视图变换矩阵推导过程如下。右视图变换矩阵推导过程如下。(1) 向向YOZ面投影:面投影:10000100001000001wT计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系xzyoOpenGL中的变换中的变换模型视图变换模型视图变换3. 右视图变换矩阵推导过程如下。右视图变换矩阵推导过程如下。(2) 绕绕Y轴旋转轴旋转-90:100000010010010010000)90cos(0)90sin(00100)90sin(0)90cos(2WT计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院

44、图学与数字媒体工程系xzyoOpenGL中的变换中的变换模型视图变换模型视图变换3. 右视图变换矩阵推导过程如下。右视图变换矩阵推导过程如下。(3沿沿x轴移动轴移动-l:1000100001000013lTW计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系xzyoOpenGL中的变换中的变换模型视图变换模型视图变换3. 右视图变换矩阵推导过程如下。右视图变换矩阵推导过程如下。(4) 三步复合变换后得到在三步复合变换后得到在OpenGL屏幕坐标系中右视图变换矩阵:屏幕坐标系中右视图变换矩阵:100000100100000321lTTTT

45、WWWW计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换模型视图变换模型视图变换二、利用高级矩阵函数二、利用高级矩阵函数在在OpenGL中,还可以通过一些高级矩阵函数实现模型的平中,还可以通过一些高级矩阵函数实现模型的平移、旋转和缩放。高级矩阵包括:移、旋转和缩放。高级矩阵包括:glTranslategf(TYPE x, TYPE y, TYPE z);glRotate df(TYPE angle, TYPE x, TYPE y, TYPE z););glScale df(TYPE x, TYPE y, T

46、YPE z);计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系glTranslatedf(x, y, z,):把当前矩阵如顶点坐标矩阵与平移变换矩阵相乘。三个把当前矩阵如顶点坐标矩阵与平移变换矩阵相乘。三个参数为参数为x, y, z三个方向的平移量。如果参数值为浮点数,则三个方向的平移量。如果参数值为浮点数,则函数名写为函数名写为glTranslatef;参数值为双精度数,则函数名写为;参数值为双精度数,则函数名写为glTranslated;glRotatedf(angle, x, y, z):把当前矩阵如顶点坐标矩阵与旋转变换矩阵相

47、乘。把当前矩阵如顶点坐标矩阵与旋转变换矩阵相乘。Angle参数表示旋转角度,从原点到点参数表示旋转角度,从原点到点x, y, z的有向连线的有向连线为旋转轴,逆时针方向为正角度方向。为旋转轴,逆时针方向为正角度方向。OpenGL中的变换中的变换模型视图变换模型视图变换计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系glScalefd(x, y, z,):把当前矩阵如顶点坐标矩阵与比例变换矩阵相乘。把当前矩阵如顶点坐标矩阵与比例变换矩阵相乘。三个参数分别为三个参数分别为x, y, z三个方向的比例因子。三个方向的比例因子。OpenGL中

48、的变换中的变换模型视图变换模型视图变换计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换模型视图变换模型视图变换调用矩阵函数绘制模型视图时,后调用的矩阵将成为新的调用矩阵函数绘制模型视图时,后调用的矩阵将成为新的当前模型视图矩阵,并影响此后绘制的图形,会造成变换当前模型视图矩阵,并影响此后绘制的图形,会造成变换效果的累积。如果不需要这样的累积,可以调用重置矩阵效果的累积。如果不需要这样的累积,可以调用重置矩阵函数:函数:glLoadIdentity(void);该函数将单位矩阵设置为当前变换矩阵。一般在指定当

49、前该函数将单位矩阵设置为当前变换矩阵。一般在指定当前操作矩阵对象后,都要调用重置矩阵函数,将之前变换的操作矩阵对象后,都要调用重置矩阵函数,将之前变换的影响消除。影响消除。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系视图变换主要用于确定观察参考坐标系,即确定视点的位置视图变换主要用于确定观察参考坐标系,即确定视点的位置和观察方向。和观察方向。也可以通过函数也可以通过函数gluLookAt调整视点位置,以达到观察立体调整视点位置,以达到观察立体不同侧面的效果。不同侧面的效果。gluLookAt(xe, ye, ze, xo, yo,

50、 zo, xu, yu, zu)该函数有该函数有3组共组共9个参数,第一组个参数,第一组3个参数,指定视点相机个参数,指定视点相机镜头在镜头在x、y、z三个方向的坐标;第二组三个方向的坐标;第二组3个参数指定视点个参数指定视点镜头瞄准的点坐标;第三组镜头瞄准的点坐标;第三组3个参数,指定朝上的向量。个参数,指定朝上的向量。(注意:朝上矢量不能与视线矢量重叠)(注意:朝上矢量不能与视线矢量重叠)OpenGL中的变换中的变换模型视图变换模型视图变换计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换投影变换投影变换

51、OpenGL提供了两种投影方式:一种是正投影,一种是透提供了两种投影方式:一种是正投影,一种是透视投影。通过调用不同的函数实现不同的投影变换。视投影。通过调用不同的函数实现不同的投影变换。为避免不必要的变换发生,必须调用为避免不必要的变换发生,必须调用glMatrixMode(GL_PROJECTION)指定当前处理的矩阵是投影变换矩阵。指定当前处理的矩阵是投影变换矩阵。例如:例如:glMatrixMode (GL_PROJECTION); glLoadIdentity(); glOrtho (-3.0, 3.0, -3.0, 3.0, -10.0, 10.0);计算机图形学基础计算机图形学基

52、础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换投影变换投影变换一、正投影变换一、正投影变换正投影变换由函数正投影变换由函数glOrtho()实现。该函数创建一个正交实现。该函数创建一个正交平行的视景体。在该视景体平行的视景体。在该视景体中产生三维物体的平行投影。中产生三维物体的平行投影。如果没有其它变换,比如旋如果没有其它变换,比如旋转等,投影方向为转等,投影方向为z轴负方向。轴负方向。glOrtho()函数创建了一个有函数创建了一个有限的观察空间,空间的六个限的观察空间,空间的六个边界面为裁剪面。边界面为裁剪面。“轴测图轴测图例程修

53、改视景体裁剪面例程修改视景体裁剪面观察裁剪效果。观察裁剪效果。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系OpenGL中的变换中的变换投影变换投影变换二、透视投影变换二、透视投影变换透视投影的特点是物体的视图有近大远小的效果。透视投影的特点是物体的视图有近大远小的效果。OpenGL透视透视投影函数有两个:投影函数有两个:1. glFrustum():该函数指定的透视视景体该函数指定的透视视景体如图为所示。如图为所示。glFrustum(left, right, bottom, top, near, far);函数的六个参数分别定义

54、了该视函数的六个参数分别定义了该视景体的景体的left, right, bottom, top, near及及 far的数值。的数值。视点位于坐标系原点。视点位于坐标系原点。计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系2. gluPerspective():gluPerspective()函数指定投影函数指定投影变换方式为透视变换,通过变换方式为透视变换,通过不同的参数定义透视视景体。不同的参数定义透视视景体。下图为下图为gluPerspective()函数指函数指定的透视视景体。定的透视视景体。视点位于坐标原点。视点位于坐标原点

55、。OpenGL中的变换中的变换投影变换投影变换计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系gluPerspective()有有4个参数:个参数:gluPerspective(fovy, aspect, near, far);fovy:为:为yoz平面上的视角,取值范围为平面上的视角,取值范围为0.0, 180.0;aspect:为视景体的纵横比;:为视景体的纵横比;near和和far:分别是观察点与视景体的前后裁剪面的距离。:分别是观察点与视景体的前后裁剪面的距离。OpenGL中的变换中的变换投影变换投影变换计算机图形学基础计算机

56、图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系投影变换投影变换OpenGL的三维坐标变换的三维坐标变换例:太阳系变换矩阵堆栈实现模型变换)例:太阳系变换矩阵堆栈实现模型变换) glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);glPushMatrix(); glutWireSphere(1.0, 20, 20); /* draw sun */ glRotatef (GLfloat) year, 0.0, 1.0, 0.0); glTranslatef (2.0, 0.0, 0.0); glRotatef (GLfloat) day, 0.0, 1.0, 0.0); glutWireSphere(0.2, 10, 10); /* draw earth*/ glPopMatrix();计算机图形学基础计算机图形学基础三维变换及三维观察三维变换及三维观察广东工业大学机电学院图学与数字媒体工程系投影变换投影变换OpenGL的三维坐标变换的三维坐标变换例:太阳系投影变换)例:太阳系投影变换) glMatrixMode (GL_PR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论