当前位置:文档之家› 透视和透视投影变换

透视和透视投影变换

透视和透视投影变换
透视和透视投影变换

透视和透视投影变换

——论图形变换和投影的若干问题之三

何援军

(上海交通大学计算机科学与工程系,上海,200030)

摘要:讨论了透视变换的基本原理:由于与画面成一角度的平行线簇经透视变换后交于灭点,可采用两

种不同的方法来获得透视图:一是保持画面铅垂而通过旋转物体使之与画面构成角度达到透视变换效果,得到了3种最佳透视变换矩阵;二是通过倾斜投影画面而达到透视变换效果,给出了通过倾斜画面得到

三灭点透视图的齐次透视变换矩阵。两种方法的灭点都是可预先控制(即可先决定灭点再决定变换矩阵),比较彻底的解决了透视变换的生成理论。给出了“对一个空间物体,一定存在另一个空间物体,使前者

在画面上的透视投影与后者的平行投影是一样的,且保留了深度方向的对应关系”的一个证明。这个性

质可使复杂的透视投影转化成简单的平行投影,使得立体图形的处理大为简化。

关键词:透视变换,齐次变换矩阵,CG

中图法分类号:TP391

Perspective and its Projection Transformation

He Yuanjun

(Department of Computer Science and Engineering,

Shanghai Jiaotong University, Shanghai 200030,China)

Abstract: Basic principles of perspective transformation are discussed. Based on the fact that parallel-lines in some angle with view plane intersect at vanishing-point, two methods are presented to get perspective view: one is to keep the view plane vertical while rotating objects to some angle, thus to achieve perspective transformation effect, and three best perspective transformation matrixes is presented. The other is to incline projective view to get the effect. Homogenous perspective transformation matrix are present, which can generate 3-vanishing-point drawing through inclining view. Both methods are beforehand controllable (that’s to say vanishing-point is first decided, then comes out the transformation matrix), thus generating theory of perspective transformation is thoroughly solved. Prove that for each 3D object there must be another 3D object, which parallel projection is the same as the former’s perspective projection, and the corresponding depth relation is well preserved. With this useful property, a complicated perspective projection can be converted to a simple parallel projection, so the complication of 3D graphics processing becomes sharply reduced.

Keywords: perspective transformation, homogenous transformation matrix, CG

1.引言

现实生活中的景物,由于观察距离及方位不同在视觉上会引起不同的反映,这种现象就是透视现象。研究这种现象并使之能在平面上用线来表现其规律,使画面可正确地表现出物体之间的远近之间的远近层次关系,使观察者获得立体,有深度的空间感觉,就必须研究透视变换的规律。

文献[1]讨论了正透视投影问题,分离了观察点位于世界坐标系Z轴上(中心投影)和不在Z 轴上(空间任意点的正透视投影)的问题,文献[2-4]也讨论了一、二、三个灭点的产生方法问题,

作者简介:何援军,男,1945年生,教授,博士生导师,主要研究领域为CAD/CG、几何计算的理论与算法研究等。Email:yjhe@https://www.doczj.com/doc/852121782.html,

文献[5]的透视变换图示有错。几乎所有文献对透视变换所产生的灭点参数定量求取问题均未作深入的讨论。本文基于“与画面成一角度的平行线簇经透视变换后交于灭点”的透视变换基本原理,对透视变换参数的确切意义和产生原理等作了系统的分析,通过“旋转物体”和“倾斜投影画面”两种手段得到了最佳透视变换效果和灭点的定量求取。讨论了将透视投影转化为平行投影的问题。

2. 透视变换的基本原理

为简化问题的叙述,导出视点选在z 轴上,且取与此轴垂直的坐标平面为画面的透视投影公式。设视点E (0,0,z e )在z 轴上,空间点为P (x p ,y p ,z p ),则视线EP 的直线方程为:

??

?

??-+=-+=-+=t

z t y t

x z z z y x e p e p p )()0(0)0(0 (1)

此直线和画面z = 0相交时的参数为t = -z e /(z 1-z e ),将此参数t 代入(式1)前二式并把变换式应用于三个坐标,且由于P 是空间的任意一点,取消足标并用齐次坐标写出,(式1)的变换即是:

()()??

?

?

?

?

?

?

?-=100011000010

0001

1z y x

H Z Y X z e

(2)

矩阵

P z =??

?

?

?

??

?

?-10001100001000

01

z e

(3)

叫做视点在z 轴上的透视变换阵。同理,视点在x 轴上和y 轴上的变换阵,分别为

P x =??

?

?

?

?

?

?

?-100001000010/1001e x

P y =??

?

?

?

?

?

??-10000100/10100

001

e y

(4)

3. 透视投影转化为平行投影

文献[6]讨论了透视投影转化为平行投影的问题,本文给出这一问题的新的论述。为了进一步说明透视变换P Z 后物体变化的情况,试考察一条参数直线的透视变换情况:

??

?

??+=+=+=t

c z z t c y y t

c x x z 0y 0x 0 -∞

经(式2)或(式3)变换并规格化后得:

]][]??

???+-+=+-+=+-+=)t c z (z z )t c z (z )t c z (z z )t c y (y )t c z (z z )t c x (x z 0e e z 0'z 0e e y 0'

z 0e e x 0' (6)

当直线向无穷延伸时,有:

z c c x lim e z

x

'

-=

,z c c y lim e z

y

'

-=

,z z lim e '

-=

(7)

定理:对一个空间物体,一定存在另一个空间物体,使前者在画面上的透视投影与后者的平行投影是一样的,且保留了深度方向的对应关系。

证明:设有一个空间物体B 1,其空间点由P(x y z)表述,用下列方法构筑另一个空间物体B 2:B 2的拓扑与的空间物体B 1一致,其相应空间点P′(x′ y′ z′)由P 经由透视变换(式3)而得。显然,B 1在XOY 平面上的透视投影坐标与B 2在XOY 平面上的正投影坐标均为(x′ y′)。而由于

0e e )z z ()z z (dz 'dz )

z z (z )z z (z 22

e

2e e e >=+-=-- (8)

即空间物体B 1和空间物体B 2相应的点与画面的远近关系(深度方向)是一致的。证毕。

如图-1所示,与z 轴平行的直线AB ,经P z 变换后变成A′B′,它处于通过AB 的延长线和画面的交点G 及一个消失点F(0,0,-z e )的直线上。直线A′B′(空间物体B 2)在画面上的正投影A ?B ?就是直线AB (空间物体B 1)在画面上的透视投影,且保留了深度方向的对应关系。

图-1 透视变换的几何意义和转化为平行投影的机理

这个性质可使复杂的透视投影转化成简单的平行投影,使得立体图形的处理大为简化。

4. 灭点及其产生

齐次坐标系中沿坐标轴三个方向的无穷远点是单位阵

E =??

?

?

?

?

?

?

?1000010000100001

的前三行构成的向量(最后一行为坐标原点)。现在对它施以透视变换P Z (式3),即可得到透视学中一灭点(平行透视)和多灭点(成角透视)的各种讨论结果。文中得Rx 、Ry 和Rz 分别为绕x 、y 和z 轴的齐次旋转变换矩阵。 4.1 平行透视(一灭点)

由EP z =P z ,因此,经透视P z 变换后的无穷远点将变为P z 的前三行(1 0 0 0),(0 1 0 0),(0 0 1 -1/z e )(它表示三个点)。这说明原来平行于x 轴和y 轴的向量仍互相平行,而平行z 轴的向量(图-2)则交于一点(0,0)。

图-2 平行透视(一灭点)

4.2 成角透视(二灭点)

如果把单位立方体绕y 轴转αy 角,有:

??????? ??-???????

?

?-=?=??100

11000010000

1

10

000cos 0sin 0010

0sin 0cos P R P R E

e y y y y Z y Z y αααα=??

??

?

?

?

??--1000

cos cos 0sin 0010

sin sin 0cos z z e y y y

e y y y

αααααα

(9)

由矩阵第一行可知,原来平行于x 轴的向量将在投影平面xoy 上汇集于灭点(αctg y z e ,0); 由矩阵第三行可知,原来平行于z 轴的向量将在投影平面xoy 上有灭点(-αtg y z e ,0)(图-3)。

图-3 两灭点透视变换的例子

4.3 三灭点透视

4.3.1 通过旋转得到三灭点透视

将物体绕x 轴转αx 角,绕y 轴转αy 角,再施以变换p z 即得三灭点透视,变换为 1)

??????

?

??-???????

?

?-=??=???10

00

0cos 0sin 00100sin 0cos 10000cos sin 00sin cos 00001

y y y

y

x x x

x Z y x Z y x P R R P R R E

αααααααα?????

??

?

?-100

0110000100001

z e

=??????

?

?

??-?-??-??-1000cos cos cos cos sin sin

cos cos sin cos sin cos sin sin sin sin 0cos z z e y x y x x y x

e y x y x x y x e y y y ααααααααααααααααα 规格化矩阵的前三行,即得原来分别平行于x ,y ,z 轴的向量经变换后的投影分别交于三个灭点:

)0,ctg (z e y ?α,????

??

?-?z z e y x

e

y cos ctg ,tg ααα和???? ???-?z z e y

x

e y cos tg ,tg ααα 类似地,通过以下矩阵的乘积,可得出五个类似的物体绕两个轴旋转后的变换矩阵: 2) E R y R x P z 3) E R y R z P z 4) E R z R y P z 5) E R z R x P z 6) E R x R z P z

总结以上6种变换,可以得到绕两个轴旋转后产生一、二、三个灭点的情况表-1。从该表中可以看出,如果分别采用1,3,6三种旋转变换,它们可以保证经透视投影后物体不出现倾斜状态,

有“坐如钟,立如松”的透视效果(图-5a)。这在实际应用(例如建筑透视图)中十分需要。

4.3.2通过倾斜画面得到三灭点透视

与画面成一角度的平行线簇经透视变换后也交于灭点。因此,可采用两种不同的方法来获得透视图:其一是画面铅垂而旋转物体使之与画面构成角度;其二是物体铅垂而是画面倾斜。后者也经常使用,例如为了将高层建筑的背景摄入镜头,人们经常将相机倾斜某一角度来摄得三灭点透视图的相片。

图-4倾斜画面得到三灭点透视原理图

如图-4所示,设物体建立在如下的坐标系e0x1y1z1上:以H面为y1=0平面,e0e为z1轴。画面K与垂直坐标平面z1=0的夹角为 。|eE|=h,e0e=z e。

为了求出视点在E,画面为K的透视变换公式,可建立一个由物体的原坐标系e0x1y1z1从原点e0平移到E0而得到的新的坐标系E0xyz。于是有:

1)物体在新坐标系下的坐标(x=x1,y=y1-h,z=z1)是原坐标系下的坐标平移一个向量得到的,

其矩阵形式为:

()()

??????

?

?

?-=

10

h 00100001000011H Z Y X z y x

1

11

(10)

2) 物体的透视变换在E 0xyz 坐标系下进行,此时视点在z 轴上,且

z e = E 0E

(11)

3) 为了产生在水平位置的两个灭点,物体在E 0xyz 坐标系下绕通过点(x 0,y ,z 0),且平行于

y 轴的直线旋转一个αy 角,变换矩阵形式为:

()()??????

?

????????? ?????????? ???=--10

01

000010

000

1

1000

0cos 0sin 00100sin 0cos 10

01

00

0010

0001

1z y x H Z Y X z x z x 0

y y

y y 00

αααα (12)

4) 画面K 在E 0xyz 坐标系下的方程为

0z cos y sin =?+?-θθ

(13)

它与式(式5)直线参数方程联合求解锝

]sin )([cos cos t y z z z p p e e ?+-?=θθθ

将此式代入式(式5),取消足标,并对z 坐标施以同样变换,用齐次矩阵形式表示,则为:

()()????

?

?

?

?

?-?=θθθθθθ

cos 0

00cos cos 00sin 0cos 0

00cos 1z y x

H Z Y X z z e e

(14)

5) 综上所述,物体的总变换阵为

??????? ??-??????? ?????????

?

?-=--1000

0cos 0sin 00100sin 0cos 10

01

000010

000

1

10h 001000010000

1A y y y y 0

z x αααα??

?

??

?

? ??-???????

??θθθθθθcos 0

cos cos 00sin 0cos 00

00

cos 1001

00

0010

000

1

z z x e e 0

?

?

?

??

?

?

?

?

?+-?---???-?=θθθθθθθθθθθααααααcos sin h cos h cos cos cos cos 0sin cos sin 0

cos 0sin cos sin cos 0cos cos z a a a z z z e 4343

41e y y

y e e

y y y

(15)

其中

θααcos )sin cos (x z x a 00r 0y 41?+?-?-= θααcos )cos sin (x z x a 00y 0y 43?+?-?-=

6) 物体体中原分别平行于x ,y ,z 轴的直线经矩阵A 变换后,将分别交于灭点:

),0,ctg (z z e y e -?α: 原平行于x 轴的直线 )0,

ctg ,

0(z e θ?:

原平行于y 轴的直线 ),0,tg (z z e y e -?-α:

原平行于轴z 的直线

7) 从透视阵A (式15)可知,透视参数分别为

z p e y x cos sin θα?=,z p e y /sin θ=,z p e y z cos cos θα?-=,且有z p p p 2

e

2

z 2

y 2

x 1=++

a.由旋转产生的三灭点透视图

b.由倾斜画面产生的三灭点透视图

图-5 两个灭点位于同一水平方向而另一个灭点在铅垂轴上的最佳透视变换

5.总结

本文讨论了透视变换的基本原理,阐述了透视变换参数的意义,给出定量求取透视变换参数的通用方法。由于与画面成一角度的平行线簇经透视变换后交于灭点,可采用两种不同的方法来获得透视图:其一是保持画面铅垂而通过旋转物体使之与画面构成角度达到透视变换效果,其二是通过倾斜投影画面而达到透视变换效果。对前者,本文得到了3种两个灭点位于同一水平方向而另一个灭点在铅垂轴上的最佳透视变换矩阵;对后者,本文给出了通过倾斜画面得到三灭点透视图的齐次透视变换矩阵。两种方法均能得到三灭点透视图(图-5),而且灭点都是可以预先控制的(即可先决定灭点再决定变换矩阵)。证明了对一个空间物体,一定存在另一个空间物体,使前者在画面上的透视投影与后者的平行投影是一样的,且保留了深度方向的对应关系。这个性质可使复杂的透视投影转化成简单的平行投影,使得立体图形的处理大为简化,比较彻底的解决了透视变换参数的生成问题。

参考文献

[1]Wei Mingtao, Computer Graphics, Beijing:Publishing House of Electronics Industry, 2001,P136-141;

(魏明涛,计算机图形学,北京:电子工业出版社,2001年11月,P136-141)

[2]Xie Buying et at. Introduction to Computer Graphics, Shanghai:Tongji University Press, 1994, P96-110;

(谢步赢编著,计算机绘图教程,上海:同济大学出版社,1994年9月,P82)

[3]Jiang Tao et at. Fundamentals of Computer Drawing and Computer Aided Design, Shanghai:Fudan University Press,

1992, Ps: 34~39;

(江涛主编,计算机绘图与辅助设计基础,上海:复旦大学出版社,1992年5月,P81-83)

[4]Hong zhongde., Modern Engineering and Technology Graphics, Shanghai:HuaDong ??? University Press,1999,

P81-83;

(洪钟德主编,现代工程技术图形学,华东理工大学出版社,1999年8月,P81-83;)

[5]Ying Daolin. Computer Graphics. Zhejiang University Press, 1990, P53

(应道宁等,计算机绘图,浙江大学出版社,1990年6月,P53图3-25)

[6]Dang rongxi etc. Computer Graphics. Course , Beijing:Science and Technology Press, 2000.11, P58

(唐荣锡等,计算机图形学教程,北京:科学技术出版社,2000年11月,P58)

注:本文发表于计算机辅助设计和图形学学报,2005年4月,第17卷第4期,PP734-739。

透视原理

目录- 1- 透视现象? 2- 为何有透视法? 3- 透视法的基本概念–视点 4- 透视法的基本概念–消失点/灭点 5- 均分方法 6- 透视法的基本概念–消失线 7- 各种透视系统概述 8- 1点透视(中央透视,平行透视) 9- 2点透视(成角透视) 10- 3点透视 11- 曲线透视(Curvilinear Perspectives) 12- 基本场景构图思路 - 焦距(视域) 13- 基本场景构图思路 - 视角 14- 基本场景构图思路 - 练习和实例(实例差一点) 标注"未完"的小节,表示还没完成```` 欢迎反馈。 1- 透视现象? 近大远小,用简单的平面几何原理就能解答。 光在物体上漫反射,直线传播,摄入人眼视域后成像; 不同物体的空间距离是各异的,观察越远的物体,其摄入视域的可见范围越窄。于是人看到的景象有近大远小的透视效果。 如下图,硬币和箭靶在不同距离上的成像,可以是显得一样大。 图片如下: 2- 为何有透视法? 测量是文明发展的最重要因素之一。 走在街上,一砖一瓦都有各自的坐标和尺寸, 所有的建筑都有直棱直角的框架,没有测量这些便不可能完成。 透视法的目的就是要将物体成比例的在画面上呈现。 这也是为何透视法的很多特点都是基于平行和正交关系, 而且学习时总要练习打“格子”。 3- 透视法的基本概念–视点 视点位于视觉投影平面的中央,表示观察者的正方向。

后面小节对各种透视构图的全局描述,视点都设在构图正中央,表示“正视它”,以便观察。有个重要的概念要注意,视点并不代表观察者的位置,而只表示观察方向。 图片如下: 4- 透视法的基本概念–消失点/灭点 一般透视法中,空间里的平行线,如果不与视觉平面平行,它们必须在极远处某一点上聚合,就是灭点。 以下是随意画3个面在空间中的透视结构(用了1点透视的概念)。 图片如下: 5- 均分方法 上面一节的示意图使用了等分透视空间的方法,下面介绍两个常用的。 通过局部的几何关系,均分空间内的线和面 图片如下:

地图投影的基本问题

3.地图投影的基本问题 3.1地图投影的概念 在数学中,投影(Project)的含义是指建立两个点集间一一对应的映射关系。同样,在地图学中,地图投影就是指建立地球表面上的点与投影平面上点之间的一一对应关系。地图投影的基本问题就是利用一定的数学法则把地球表面上的经纬线网表示到平面上。凡是地理信息系统就必然要考虑到地图投影,地图投影的使用保证了空间信息在地域上的联系和完整性,在各类地理信息系统的建立过程中,选择适当的地图投影系统是首先要考虑的问题。由于地球椭球体表面是曲面,而地图通常是要绘制在平面图纸上,因此制图时首先要把曲面展为平面,然而球面是个不可展的曲面,即把它直接展为平面时,不可能不发生破裂或褶皱。若用这种具有破裂或褶皱的平面绘制地图,显然是不实际的,所以必须采用特殊的方法将曲面展开,使其成为没有破裂或褶皱的平面。 3.2地图投影的变形 3.2.1变形的种类 地图投影的方法很多,用不同的投影方法得到的经纬线网形式不同。用地图投影的方法将球面展为平面,虽然可以保持图形的完整和连续,但它们与球面上的经纬线网形状并不完全相似。这表明投影之后,地图上的经纬线网发生了变形,因而根据地理坐标展绘在地图上的各种地面事物,也必然随之发生变形。这种变形使地面事物的几何特性(长度、方向、面积)受到破坏。把地图上的经纬线网与地球仪上的经纬线网进行比较,可以发现变形表现在长度、面积和角度三个方面,分别用长度比、面积比的变化显示投影中长度变形和面积变形。如果长度变形或面积变形为零,则没有长度变形或没有面积变形。角度变形即某一角度投影后角值与它在地球表面上固有角值之差。 1)长度变形 即地图上的经纬线长度与地球仪上的经纬线长度特点并不完全相同,地图上的经纬线长度并非都是按照同一比例缩小的,这表明地图上具有长度变形。 在地球仪上经纬线的长度具有下列特点:第一,纬线长度不等,其中赤道最长,纬度越高,纬线越短,极地的纬线长度为零;第二,在同一条纬线上,经差相同的纬线弧长相等;第三,所有的经线长度都相等。长度变形的情况因投影而异。在同一投影上,长度变形不仅随地点而改变,在同一点上还因方向不同而不同。 2)面积变形 即由于地图上经纬线网格面积与地球仪经纬线网格面积的特点不同,在地图上经纬线网格面积不是按照同一比例缩小的,这表明地图上具有面积变形。 在地球仪上经纬线网格的面积具有下列特点:第一,在同一纬度带内,经差相同的网络面积相等。第二,在同一经度带内,纬线越高,网络面积越小。然而地图上却并非完全如此。如在图4-9-a上,同一纬度带内,纬差相等的网格面积相等,这些面积不是按照同一比例缩

立方体纹理映射

1问题描述与算法思想 1.1纹理映射简介 纹理映射(Texture Mapping)是将纹理空间中的纹理像素映射到屏幕空间中的像素的过程。在三维图形中,纹理映射(Texture Mapping)的方法运用得最广,尤其描述具有真实感的物体。比如绘制一面砖墙,就可以使用一幅具有真实感的图像或者照片作为纹理贴到一个矩形上,这样,一面逼真的砖墙就画好了。如果不用纹理映射的方法,这墙上的每一块砖都要作为一个独立的多边形来绘制。另外,纹理映射能够保证在变换多边形时,多边形上的纹理也会随之变化。例如,用透视投影模式观察墙面时,离视点远的墙壁的砖块的尺寸就会缩小,而离视点近的就会大些,这些是符合视觉规律的。此外,纹理映射也被用在其他一些领域。如飞行仿真中常把一大片植被的图像映射到一些大多边形上用以表示地面,或者用大理石、木材等自然物质的图像作为纹理映射到多边形上表示相应的物体。纹理对象通过一个单独的数字来标识。这允许硬件能够在内存中保存多个纹理,而不是每次使用的时候再加载它们,从而减少了运算量,提高了速度。纹理映射是真实感图像制作的一个重要部分,运用它可以方便的制作出极具真实感的图形而不必花过多时间来考虑物体的表面细节。然而纹理加载的过程可能会影响程序运行速度,当纹理图像非常大时,这种情况尤为明显。如何妥善的管理纹理,减少不必要的开销,是系统优化时必须考虑的一个问题。还好,相关软件提供了纹理对象对象管理技术来解决上述问题。与显示列表一样,纹理对象通过一个单独的数字来标识。 立方体映射(cube-map)纹理是一种特殊类型的纹理,用于环境映射,使用一组图像并把他们作为立方体的面。立方体映射的6个面用正方形并且大小相同的6个子纹理表示。要从立方体纹理中采样的时候,使用的纹理坐标是3维,并且被看做来自原点的方向。方向指向用来读取纹理的立方体映射表面的位置。立方体纹理映射主要思想是通过观察向量和表面的法向量反射来确定采样的纹理坐标。 1.2实验目的 1) 掌握位图纹理读入方法; 2)掌握立方体纹理映射算法。 1.3功能要求 1)建立三维坐标系Oxyz,远点位于屏幕客户区中心,x轴水平向右为正,y轴垂直向上为正,z轴垂直于屏幕指向观察者。 2)设置屏幕背景色为黑色。 3)读入六张构成天空盒的位图作为纹理映射到立方体的可见表面上。 4)按下鼠标左键缩小立方体,按下鼠标右键增大立方体。 5)使用键盘方向旋转纹理立方体。 6)使用动画按钮播放或停止立方体动画。 1.4算法原理(算法思想) 立方体进行纹理映射是纹理对象并不是直接绑定到着色器,而是绑定到一个

透视投影(Perspective Projection)变换推导

透视投影是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视矩阵乘法和透视除法两步完成的。 透视投影变换是令很多刚刚进入3D图形领域的开发人员感到迷惑乃至神秘的一个图形技术。其中的理解困难在于步骤繁琐,对一些基础知识过分依赖,一旦对它们中的任何地方感到陌生,立刻导致理解停止不前。 没错,主流的3D APIs如OpenGL、D3D的确把具体的透视投影细节封装起来,比如 gluPerspective(…) 就可以根据输入生成一个透视投影矩阵。而且在大多数情况下不需要了解具体的内幕算法也可以完成任务。但是你不觉得,如果想要成为一个职业的图形程序员或游戏开发者,就应该真正降伏透视投影这个家伙么?我们先从必需的基础知识着手,一步一步深入下去(这些知识在很多地方可以单独找到,但我从来没有在同一个地方全部找到,但是你现在找到了)。 我们首先介绍两个必须掌握的知识。有了它们,我们才不至于在理解透视投影变换的过程中迷失方向(这里会使用到向量几何、矩阵的部分知识,如果你对此不是很熟悉,可以参考 可以找到一组坐标(v1,v2,v3),使得 v = v1 a + v2 b + v3 c (1) 而对于一个点p,则可以找到一组坐标(p1,p2,p3),使得 p – o = p1 a + p2 b + p3 c (2) 从上面对向量和点的表达,我们可以看出为了在坐标系中表示一个点(如p),我们把点的位置看作是对这个基的原点o所进行的一个位移,即一个向量——p – o(有的书中把这样的向量叫做位置向量——起始于坐标原点的特殊向量),我们在表达这个向量的同时用等价的方式表达出了点p: p = o + p1 a + p2 b + p3 c (3) (1)(3)是坐标系下表达一个向量和点的不同表达方式。这里可以看出,虽然都是用代数分量的形式表达向量和点,但表达一个点比一个向量需要额外的信息。如果我写出一个代数分量表达(1, 4, 7),谁知道它是个向量还是个点! 我们现在把(1)(3)写成矩阵的形式: 这里(a,b,c,o)是坐标基矩阵,右边的列向量分别是向量v和点p在基下的坐标。这样,向量和点在同一个基下就有了不同的表达:3D向量的第4个代数分量是0,而3D点的第4个代数分量是1。像这种这种用4个代数分量表示3D几何概念的方式是一种齐次坐标表示。 “齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR 这样,上面的(1, 4, 7)如果写成(1,4,7,0),它就是个向量;如果是(1,4,7,1),它就是个点。 下面是如何在普通坐标 (Ordinary Coordinate)和齐次坐标(Homogeneous Coordinate)之间进行转换:

深入探索3D拾取技术

深入探索3D拾取技术 在游戏中,玩家需要通过点击2D屏幕来选择3D物体,这个过程就是拾取(picking)。拾取是3D游戏必不可少的基本操作,它实现了玩家和游戏世界内对象的交互。 虽然拾取技术很基本,但它却迷惑了很多3D初学者。很多朋友都问过我关于拾取的细节问题,这让我觉得很有必要具体探讨一下该技术。其实,拾取之所以让很多开发者感到复杂,主要原因在于它跨域了流水线的多个阶段,并且是逆流水线上行。另外,它是一个2D信息扩展到3D的过程,必须对信息做相应的扩展和额外的计算才能够得到正确的结果。下面我门具体分析一下这个技术。 水流线主要阶段分析 我们来直观地看一下从相机空间到viewport的变换 相机空间中的一个顶点v,经过透视变换后进入了CVV中。这个变换矩阵实际上完成了两个工作: 1)将顶点从3D空间投影到2D的投影平面(Projection Plane)上。 2)将投影平面上的2D投影点通过线性插值变换到齐次裁剪空间CVV中。 这些变换都通过透视矩阵一次完成。我之所以把这一步分解为两步,因为这对于分析拾取很重要。 顶点进入齐次裁剪空间并经过CVV裁剪,最终进行透视除法从4D齐次形式变回成3D形式。然后经过一个线性插值(被封装在视口(viewport)变换中),变换到viewport中,多个点以三角形的形式经过光栅化后被玩家看到。最后一步的点变换可以描述为: 3)将CVV中的点通过线性插值变换到viewport中。

分析了这个变换过程之后,我们知道了从相机空间开始实际处理点位置信息的操作,就是上面的三个步骤。这样,我们可以先把顶点从viewport中先变换回投影平面上,也就是我们可以先完成(2)和(3)的逆处理。这里我们不用考虑裁剪和透视除法这些操作,因为反推的时候,处于视口中的点,已经是经过裁剪后留下的有效点了,必定处于CVV内,也必定处于projection plane内!而且从viewport逆变换到projection plane,点一直保持2D形式。 picking的开始是玩家在屏幕上点击一个位置——这实际上是在viewport中进行了点击。我们通过响应玩家的点击事件,得到在viewport中的点击位置,记为P0(Xp0,Yp0)。然后我们把p0从viewport中线性插值到CVV中,得到P1(Xp1,Yp1): 上面的线性插值(如果对线性插值公式不熟悉,请参考《深入探索透视投影变换》一文中的线性插值部分)公式在x方向上计算出了CVV中的P1,y方向的公式同理。接下来我们再把P1从CVV中变换到projection plane中,得到P2(Xp2,Yp2): y方向的计算同理。P2就是viewport中玩家点击的点在projection plane上所对应的位置。目前来看很好。我们已经获得了相机空间中的投影平面上,玩家点击的位置。但目前的点是一个2D点——它处于投影平面上。玩家需要拾取的是一个3D对象,因此我们需要将2D信息拓展到3D中。 向3D世界拓展 将2D的点信息拓展到3D空间进行picking,会使用射线(ray)进行。ray就是一端固定,另一端无限延伸的线性模型。如下图所示:

透视投影详解

透视投影 透视投影是用中心投影法将形体投射到投影面上,从而获得的一种较为接近视觉效果的单面投影图。它具消失感、距离感、相同大小的形体呈现出有规律的变化等一系列的透视特性,能逼真地反映形体的空间形象。透视投影也称为透视图,简称透视。在建筑设计过程中,透视图常用来表达设计对象的外貌,帮助设计构思,研究和比较建筑物的空间造型和立面处理,是建筑设计中重要的辅助图样。 透视投影符合人们心理习惯,即离视点近的物体大,离视点远的物体小,远到极点即为消失,成为灭点。它的视景体类似于一个顶部和底部都被切除掉的棱椎,也就是棱台。这个投影通常用于动画、视觉仿真以及其它许多具有真实性反映的方面。 在平行投影中,图形沿平行线变换到投影面上;对透视投影,图形沿收敛于某一点的直线变换到投影面上,此点称为投影中心,相当于观察点,也称为视点。平行投影和透视投影区别在于透视投影的投影中心到投影面之间的距离是有限的,而平行投影的投影中心到投影面之间的距离是无限的。当投影中心在无限远时,投影线互相平行,所以定义平行投影时,给出投影线的方向就可以了,而定义透视投影时,需要指定投影中心的具体位置平行投影保持物体的有关比例不变,这是三维绘图中产生比例图画的方法。物体的各个面的精确视图可以由平行投影得到。另一方面,透视投影不保持相关比例,但能够生成真实感视图。对同样大小的物体,离投影面较远的物体比离投影面较近物体的投影图象要小,产生近大远小的效果. 透视投影的原理和实现 by Goncely 摘要:透视投影是3D渲染的基本概念,也是3D程序设计的基础。掌握透视投影的原理对于深入理解其他3D渲染管线具有重要作用。本文详细介绍了透视投影的原理和算法实

画法几何与阴影透视_在线作业_1教学内容

画法几何与阴影透视_在线作业_1

画法几何与阴影透视_在线作业_1 一、单选题 1.一般应以()的方向作为主视图的方向。 A. 从物体上面向下投影 B. 最能反映出形体特征的 C. 任意 D. 物体最简单答案B 2.在直立圆柱的水平投影圆内的一个点所标的符号为(b)时点B在圆柱体的()。 A. 下底面 B. 上底面 C. 后半个柱面 D. 前半个柱面答案A 3.要求出物体的阴影,主要是求出物体上()的影。 A. 所有面 B. 阴线 C. 所有棱线 D. 各顶点的答案B 4.在绘制工程图时通常采用的是()投影法。 A. 中心 B. 正 C. 斜 D. 水平答案B 5.在使用丁字尺绘制图线时,丁字尺的尺头应紧靠在图版的()边。 A. 下 B. 右 C. 左 D. 上答案C 6.在圆球的水平投影上有一段斜线,此线段的正面和侧面投影是()。 A. 一个点 B. 一段直线 C. 椭圆的一部分 D. 圆的一部分答案C 7.图形的对称线和中心线是用()线绘制的。 A. 粗实线 B. 点划线 C. 细实线 D. 虚线答案B 8.如果圆平面的影在正面反映圆的实形,此圆平面为()面。 A. 水平 B. 正平 C. 铅垂面 D. 正垂答案B 9.当圆柱体的轴线与侧面垂直,它的()投影是圆。 A. 三个投影 B. W C. V D. H答案B 10.在()的情况下两个圆柱的相贯线为椭圆。 A. 轴线正交且直径相等 B. 轴线非正交且直径相等 C. 轴线正交且直径不相等 D. 轴线非正交且直径不相等答案A

11.在图样上标注圆弧尺寸时起止符号用()。 A. 圆点 B. 45°斜线 C. 箭头 D. ×答案C 12.平面图形为水平面时,它的()面投影反映平面图形的实形。 A. 以上全不对 B. V C. W D. H答案D 13.在图样中比例是指图形与实物相应要素的()之比。 A. 体积之比 B. 大小之比 C. 线性之比 D. 面积之比答案C 14.侧垂线落在起伏不平的铅垂面上的影,它的影线的()投影的形状和承影面的水平截交线成为倒影。 A. H B. 所有 C. W D. V 答案D 15.透视投影是()投影。 A. 正 B. 平行 C. 斜 D. 中心答案D 16.水平线的()投影反映线段的实长。 A. 以上全不对 B. 水平 C. 正面 D. 侧面答案B 17.用正垂面截切圆锥,截交线为椭圆时,椭圆短轴的正面投影在()。 A. 截交线的端点 B. 任意位置 C. 截交线的中点 D. 轴线与截交线的交点答案C 18.圆柱体的截交线有()种。 A. 1 B. 2 C. 3 D. 4 答案C 19.图中所示的长方体与半球相贯,相贯线是由四段()组成的空间曲线。 A. 双曲线 B. 抛物线 C. 折线 D. 圆弧线答案D 20.用正垂面截切圆柱时,截平面与圆柱的轴线成()度角时,它的侧面投影是圆。 A. 45 B. 30 C. 60 D. 90答案A

地图投影的基本理论

第一节地图投影的概念与若干定义 一、地图投影的产生 我们了解地球上的各种信息并加以分析研究,最理想的方法是将庞大的地球缩小,制成地球仪,直接进行观察研究。这样,其上各点的几何关系——距离、方位、各种特性曲线以及面积等可以保持不变。 一个直径30厘米的地球仪,相当于地球的五千万分之一;即使直径1米的地球仪,也只有相当于地球的一千三百万分之一。在这一小的球面上是无法表示庞大地球上的复杂事物。并且,地球仪难于制作,成本高,也不便于量测使用和携带保管。 通过测量的方法获得地形图,这一过程,可以理解为将测图地区按一定比例缩小成一个地形模型,然后将其上的一些特征点(测量控制点、地形点、地物点)用垂直投影的方法投影到图纸(图4-1)。因为测量的可观测范围是个很小的区域,此范围内的地表面可视为平面,所以投影没有变形;但对于较大区域范围,甚至是半球、全球,这种投影就不适合了。 由于地球(或地球仪)面是不可展的曲面,而地图是连续的平面。因此,用地图表示地球的一部分或全部,这就产生了一种不可克服的矛盾——球面与平面的矛盾,如强行将地球表面展成平面,那就如同将桔子皮剥下铺成平面一样,不可避免地要产生不规则的裂口和褶皱,而且其分布又是毫无规律可循。为了解决将不可展球面上的图形变换到一个连续的地图平面上,就诞生了“地图投影”这一学科。 二、地图投影的定义 鉴于球面上任意一点的位置是用地理坐标()表示,而平面上点的位置是用直角坐标(X,Y)或极坐标()表示,因此要想将地球表面上的点转移到平面上去,则必须采用一定的数学方法来确定其地理坐标与平面直角坐标或极坐标之间的关系。这种在球面与平面之间建立点与点之间对应函数关系的数学方法,称为地图投影。 三、地图投影的实质 球面上任一点的位置均是由它的经纬度所确定的,因此实施投影时,是先将球面上一些经纬线的交点展绘在平面上,并将相同经度、纬度的点分别连成经线和纬线,构成经纬网;然后再将球面上的点,按其经纬度转绘在平面上相应位置处。由此可见,地图投影的实质就是将地球椭球体面上的经纬网按照一定的数学法则转移到平面上,建立球面上点()与平面上对应点之间的函数关系。 这是地图投影的一般方程式,当给定不同的具体条件时,就可得到不同种类的投影公式,依据各自公式将一系列的经纬线交点()计算成平面直角坐标系(X,Y),并展绘在平面上,连各点得经纬线得平面表象(图4-2)。经纬网是绘制地图的“基础”,是地图的主要数学要素。 四、地图投影的基本方法 (一)几何透视法 系利用透视关系,将地球表面上的点投影到投影面上的一种投影方法。例如,我们假设地球按比例缩小成一个透明的地球仪般球体,在其球心、球面或球外安置光源,将透明球体上的经纬线、地物和地貌投影到球外的一个平面上,所形成的图形,即为地图。 图4-3即是将地球体面分别投影在平面和圆柱体面上的透视投影示意图。几何透视法只能解决一些简单的变换问题,具有很大的局限性,例如,往往不能将全球投影下来。随着数学分析这一学科的出现,人们就普遍采用数学分析方法来解决地图投影问题了。(二)数学解析法 在球面与投影平面之间建立点与点的函数关系(数学投影公式),已知球面上点位的地理坐标,根据坐标转换公式确定在平面上的对应坐标的一种投影方法。

深入探索透视投影变换

深入探索透视投影变换 -Twinsen编写 -本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教 -email: popyy@https://www.doczj.com/doc/852121782.html, 透视投影是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视矩阵乘法和透视除法两步完成的。 透视投影变换是令很多刚刚进入3D图形领域的开发人员感到迷惑乃至神秘的一个图形技术。其中的理解困难在于步骤繁琐,对一些基础知识过分依赖,一旦对它们中的任何地方感到陌生,立刻导致理解停止不前。 没错,主流的3D APIs如OpenGL、D3D的确把具体的透视投影细节封装起来,比如 gluPerspective(…)就可以根据输入生成一个透视投影矩阵。而且在大多数情况下不需要了解具体的内幕算法也可以完成任务。但是你不觉得,如果想要成为一个职业的图形程序员或游戏开发者,就应该真正降伏透视投影这个家伙么?我们先从必需的基础知识着手,一步一步深入下去(这些知识在很多地方可以单独找到,但我从来没有在同一个地方全部找到,但是你现在找到了 )。 我们首先介绍两个必须掌握的知识。有了它们,我们才不至于在理解透视投影变换的过程中迷失方向(这里会使用到向量几何、矩阵的部分知识,如果你对此不是很熟悉,可以参考《向量几何在游戏编程中的使用》系列文章)。 齐次坐标表示 透视投影变换是在齐次坐标下进行的,而齐次坐标本身就是一个令人迷惑的概念,这里我们先把它理解清楚。 根据《向量几何在游戏编程中的使用6》中关于基的概念。对于一个向量v以及基oabc, 可以找到一组坐标(v1,v2,v3),使得 v = v1 a + v2 b + v3 c (1)

深入探索透视投影矩阵.

-Twinsen 编写 - 本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教 -email: 透视投影是 3D 固定流水线的重要组成部分,是将相机空间中的点从视锥 体 (frustum) 变换到规则观察体 (Canonical View Volume) 中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视矩阵乘法和透视除法两步完成的。 透视投影变换是令很多刚刚进入 3D 图形领域的开发人员感到迷惑乃至神秘的一个图形技术。其中的理解困难在于步骤繁琐,对一些基础知识过分依赖,一旦对它们中的任何地方感到陌生,立刻导致理解停止不前。 没错,主流的 3D APIs 如 OpenGL 、 D3D 的确把具体的透视投影细节封装起来,比如 gluPerspective(…) 就可以根据输入生成一个透视投影矩阵。而且在大多数情况下不需要了解具体的内幕算法也可以完成任务。但是你不觉得,如果想要成为一个职业的图形程序员或游戏开发者,就应该真正降伏透视投影这个家伙么?我们先从必需的基础知识着手,一步一步深入下去(这些知识在很多地方可以单独找到,但我从来没有在同一个地方全部找到,但是你现在找到了)。 我们首先介绍两个必须掌握的知识。有了它们,我们才不至于在理解透视投影变换的过程中迷失方向(这里会使用到向量几何、矩阵的部分知识,如果你对此不是很熟悉,可以参考《向量几何在游戏编程中的使用》系列文章)。 齐次坐标表示 透视投影变换是在齐次坐标下进行的,而齐次坐标本身就是一个令人迷惑的概念,这里我们先把它理解清楚。 根据《向量几何在游戏编程中的使用 6 》中关于基的概念。对于一个向量 v 以及基 oabc ,

深入探索正交投影变换

深入探索正交投影变换 之前我们在《深入探索透视投影变换》以及《深入探索透视投影变换(续)》中研究了OpenGL、D3D以及M3G的透视投影变换的原理以及生成方法。这些方法在当前的主流图形API 中得到了普遍使用。但关于投影应用,还有一类经常使用的投影方式需要我们深入理解——正交投影,我们在本篇文章里面研究它(这里假设读者已经看过前两篇文章,并理解了绝大多数的理论,因为正交投影比透视投影的推导关系简单得多,因此我们的推导会非常得快,如果读者有任何的不解,请参考前两篇文章或者通过email联系我)。 在具体研究之前我觉得有必要把平面投影的分类简单介绍一下,目的是为了让大家有一个总体的认识,从而更好的理解这个知识体系。请看下图: 平面投影分为平行投影和透视投影两种类型,后者我们在前两篇文章中介绍了。平行投影则是具有矩形观察体的投影方式(透视投影则是视锥观察体),它不会根据物体离视点的远近缩放物体(透视投影则会)。平行投影可以分成侧投影和正交投影两种类型。这两种类型如何区分呢?我们继续看图吧: 上图中,v是投影平面,n是它的法线。p和q是平面外两点,p’和q’分别是它们在平面上的投影点。q的投影方向向量为Q = 单位化(q’-q),而p的投影方向向量为P = 单

位化(p’-p),其中Q不平行于n而P平行于n,则q的投影叫做侧投影,而p的投影叫做正交投影。正交投影是我们今天的研究对象。 实际上上面对平面投影的分类还可以继续向下细分,比如透视投影可以分为一灭点、二灭点以及三灭点透视投影。侧投影则可以继续分为散点侧投、斜二轴侧投等等。而正交投影则可以分成轴侧投影以及多视点正交投影等等。如果读者对此感兴趣,可以参考相关的图形学教程。 接下来我们研究正交投影。分别介绍OpenGL、D3D以及M3G的。我们的环境约定(左右手坐标系、行列向量乘法、CVV范围)仍然尊重相应API自己的设置。 OpenGL正交投影变换 下图是OpenGL的右手坐标系中观察空间的情形,我们看到的是正交投影的矩形观察体,原点是相机位置,n是近裁剪平面到相机平面的距离,f是远裁剪平面到相机平面的距离。p是观察体中的一个点,p’是它投影之后的点。 投影之后我们有关系: 因为是正交投影,没有统一的投影射线目标点,因此投影之后的x和y不会变,而z 则永远地变成了-n,跑到了投影平面上(我们让投影平面和近裁剪平面重合),它已经没用了,则我们用这个没用的信息保存z(为了之后片元操作的时候用),写为:

透视投影矩阵推导

在上一篇文章中我们讨论了透视投影变换的原理,分析了 OPe nGL 所使用的透视 投影矩阵的生成方法。正如我们所说,不同的图形APl 因为左右手坐标系、行向 量列向量矩阵以及变换范围等等的不同导致了矩阵的差异,可以有几十个不同的 透视投影矩阵,但它们的原理大同小异。这次我们准备讨论一下 DireCt3D (以 下简称D3D 以及J2ME 平台上的JSR184(M3G (以下简称M3G 的透视投影矩 阵,主要出于以下几个目的: (1) 我们在写图形引擎的时候需要采用不同的图形 API 实现,当前主要 是OPenGL 和D3D 虽然二者的推导极为相似,但 D3D 的自身特点导致了一些地 方仍然需要澄清。 (2) DireCtX SDK 的手册中有关于透视投影矩阵的一些说明,但并不详 细,甚至有一些错误,从而使初学者理解起来变得困难, 而这正是本文写作的目 的。 (3) M3G 是J2ME 平台上的3D 开发包,采用了 OPenG!作为底层标准进 行封装。它的透视投影矩阵使用 OPe nG 啲环境但又进行了简化,值得一提。 本文努力让读者清楚地了解D3D 与 M3G 透视投影矩阵的原理,从而能够知道它与 OPenG 啲一些差别,为构建跨 API 的图形引擎打好基础。需要指出的一点是为 了完全理解本文的内容,请读者先理解上一篇文章 《深入探索透视投影变换》的 内容,因为OPenGL 和它们的透视投影矩阵的原理非常相似,因此这里不会像上 一篇文章从基础知识讲起,而是对比它们的差异来推导变换矩阵。我们开始! OPenGL ? D3D 的基本差异 前面提到,不同API 的基本差异导致了最终变换矩阵的不同,而导致 OPenGL 和 D3D 的透视投影矩阵不同的原因有以下几个: (1) OPe nGL 默认使用右手坐标系,而 D3D 默认使用左手坐标系 OPerLGL ri^iUxandeci CoOrdinate system DmD handed coordinate SyStem

推导相机变换矩阵

推导相机变换矩阵 -潘宏 -2009.12.31 -本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教 -email: popyy@https://www.doczj.com/doc/852121782.html, 一些网友写信给我希望能够了解固定流水线中世界空间到相机空间变换矩阵的具体推导过程。其实之前我在《向量几何在游戏编程中的使用6》中已经简单的把相机变换作为一个使用基理论的例子进行了说明,但可能仍然不够具体。这篇文章中,我会尽力阐述相机变换的整个来龙去脉。希望能够对正在学习固定流水线的朋友们有所帮助。这里我们仍然会在推导相机变换之前介绍几个理论知识,目的是为了更好的理解推导过程。我们马上开始! 什么是相机变换? 在流水线中,当物体从模型坐标通过世界矩阵变换到世界空间之后,它将通过相机变换从世界空间变换到相机空间。下图的固定流水线中,蓝色框中的部分就是这个过程。 其实,所谓的相机空间,就是以相机作为坐标原点的一个参考系,所以,从世界空间变换到相机空间,就是把物体从世界坐标系,变换到相机为原点的相机坐标系,如下图所示。

左半部分是小人在世界空间中的位置,右半部分是小人变换到相机空间后的位置。这样的一个变换可以有很多种方式来实现:欧拉相机系统、UVN系统、Two Points & A Twist等等。这里我们讨论最为广泛的UVN系统构建相机矩阵,如果读者对其他方法感兴趣,可以查找相关的资料。我们仍然讨论OpenGL的相机矩阵的推导,其他API可以类似的推导。 坐标转换公式 我们在《向量几何在游戏编程中的使用6》中提到了正交矩阵,这是在基理论基础上的一个概念(如果对基理论不是很熟悉,请参考《向量几何在游戏编程中的使用6》)。正交矩阵所有列(行)向量构成了一个标准正交基(它的列向量都是互相正交,并且长度为1),因此,可以把正交矩阵看成是对一个坐标系的描述。同时,我们知道:同一个向量,在不同的基下面的坐标是不同的。因此,可以用正交矩阵来代表坐标系(也可以看作基)从而写出在统一的参考系(全局坐标系)下同一个向量在不同基中的坐标。 上面的式子表示,参考系中向量v在基Q中的坐标是v’,在基R中的坐标是v’’(注意这里的环境下基矩阵是用列向量表示的,这样相乘之后的结果表示的是基向量的线性组合)。如下图,黑色基表示的是参考系,红色是基Q,蓝色是基R,v是参考系中的一个向量。

手绘透视图原理讲解

一、透视图的意义 设计需要用图来表达构思。在广告艺术、建筑学、室内设计、雕塑设计、装饰设计和工业设计以及其他相关领域里,都是通过表现画将设计者的构思传达给使用者的,也就是通过图画来进行交流的。 对任何一位从事表现艺术设计的人来说,透视图都是最重要的。无论是从事美术、建筑、室内设计,都必须掌握如何绘制透视图,因为它是一切作图的基础。透视有助于形成真实的想象。而且它是建立在完美的制图基础之上的。 透视画,是把建筑物的平面、立面或室内的展开图,根据设计图资料,画成一幅尚未成实体的画面。将三度空间的形体转换成具有立体感的二度空间画面的绘图技法,并能真实地再现设计师的预想。 透视画,不但要注意材质感,对于画面的色面构成、构图等问题,透视画技法在绘图技法上负有很大的责任,因为优秀的透视画超越表面的建筑物说明图,具有另一方面的优异绘画性格。 在建筑、室内设计的表现画中,所表现的空间必须确切,因为对空间表现的失真会给设计者和用户造成错觉,并使各相关部位出现不协调感。 常画透视画的人们,不一定完全忠实于透视画法的作图过程,大都用简便方法的为多。这种方法不但省时,并能提高视觉效果,但这需要经过绘画和透视技法的训练后,才能如愿。它需要对立体造型的建筑物、室内空间有深度的理解和把握。 透视画和绘画、雕刻不同,不能用纯粹形态单独完成,不能视透视画为专门技术,而只学其技巧就自认为大功告成了,必须和原设计方案密切配合,掌握设计意图,这样才能充分表现设计者的思想构思。 二、透视图 透视图即透视投影,在物体与观者之位置间,假想有一透明平面,观者对物体各点射出视线,与此平面相交之点相连接,所形成的图形,称为透视图。视线集中于一点即视点。 透视图是在人眼可视的范围内。在透视图上,因投影线不是互相平行集中于视点,所以显示物体的大小,并非真实的大小,有近大远小的特点。形状上,由于角度因素,长方形或正方形常绘成不规则四边形,直角绘成锐角或钝角,四边不相等。圆的形状常显示为椭圆(图1、2)。 透视术语: P.P.画面假设为一透明平面; G.P.地面建筑物所在的地平面为水平面; G.L.地平线地面和画面的交线; E.视点人眼所在的点; H.P.视平面人眼高度所在的水平面; H.L.视平线视平面和画面的交线; H.视高视点到地面的距离;

透视投影矩阵推导

在上一篇文章中我们讨论了透视投影变换的原理,分析了OpenGL所使用的透视投影矩阵的生成方法。正如我们所说,不同的图形API因为左右手坐标系、行向量列向量矩阵以及变换范围等等的不同导致了矩阵的差异,可以有几十个不同的透视投影矩阵,但它们的原理大同小异。这次我们准备讨论一下Direct3D(以下简称D3D)以及J2ME平台上的JSR184(M3G)(以下简称M3G)的透视投影矩阵,主要出于以下几个目的: (1) 我们在写图形引擎的时候需要采用不同的图形API实现,当前主要是OpenGL和D3D。虽然二者的推导极为相似,但D3D的自身特点导致了一些地方仍然需要澄清。 (2) DirectX SDK的手册中有关于透视投影矩阵的一些说明,但并不详细,甚至有一些错误,从而使初学者理解起来变得困难,而这正是本文写作的目的。 (3) M3G是J2ME平台上的3D开发包,采用了OpenGL作为底层标准进行封装。它的透视投影矩阵使用OpenGL的环境但又进行了简化,值得一提。 本文努力让读者清楚地了解D3D与M3G透视投影矩阵的原理,从而能够知道它与OpenGL的一些差别,为构建跨API的图形引擎打好基础。需要指出的一点是为了完全理解本文的内容,请读者先理解上一篇文章《深入探索透视投影变换》的内容,因为OpenGL和它们的透视投影矩阵的原理非常相似,因此这里不会像上一篇文章从基础知识讲起,而是对比它们的差异来推导变换矩阵。我们开始! OpenGL与D3D的基本差异 前面提到,不同API的基本差异导致了最终变换矩阵的不同,而导致OpenGL和D3D的透视投影矩阵不同的原因有以下几个: (1) OpenGL默认使用右手坐标系,而D3D 默认使用左手坐标系。

透视和透视投影变换

透视和透视投影变换 ——论图形变换和投影的若干问题之三 何援军 (上海交通大学计算机科学与工程系,上海,200030) 摘要:讨论了透视变换的基本原理:由于与画面成一角度的平行线簇经透视变换后交于灭点,可采用两 种不同的方法来获得透视图:一是保持画面铅垂而通过旋转物体使之与画面构成角度达到透视变换效果,得到了3种最佳透视变换矩阵;二是通过倾斜投影画面而达到透视变换效果,给出了通过倾斜画面得到 三灭点透视图的齐次透视变换矩阵。两种方法的灭点都是可预先控制(即可先决定灭点再决定变换矩阵),比较彻底的解决了透视变换的生成理论。给出了“对一个空间物体,一定存在另一个空间物体,使前者 在画面上的透视投影与后者的平行投影是一样的,且保留了深度方向的对应关系”的一个证明。这个性 质可使复杂的透视投影转化成简单的平行投影,使得立体图形的处理大为简化。 关键词:透视变换,齐次变换矩阵,CG 中图法分类号:TP391 Perspective and its Projection Transformation He Yuanjun (Department of Computer Science and Engineering, Shanghai Jiaotong University, Shanghai 200030,China) Abstract: Basic principles of perspective transformation are discussed. Based on the fact that parallel-lines in some angle with view plane intersect at vanishing-point, two methods are presented to get perspective view: one is to keep the view plane vertical while rotating objects to some angle, thus to achieve perspective transformation effect, and three best perspective transformation matrixes is presented. The other is to incline projective view to get the effect. Homogenous perspective transformation matrix are present, which can generate 3-vanishing-point drawing through inclining view. Both methods are beforehand controllable (that’s to say vanishing-point is first decided, then comes out the transformation matrix), thus generating theory of perspective transformation is thoroughly solved. Prove that for each 3D object there must be another 3D object, which parallel projection is the same as the former’s perspective projection, and the corresponding depth relation is well preserved. With this useful property, a complicated perspective projection can be converted to a simple parallel projection, so the complication of 3D graphics processing becomes sharply reduced. Keywords: perspective transformation, homogenous transformation matrix, CG 1.引言 现实生活中的景物,由于观察距离及方位不同在视觉上会引起不同的反映,这种现象就是透视现象。研究这种现象并使之能在平面上用线来表现其规律,使画面可正确地表现出物体之间的远近之间的远近层次关系,使观察者获得立体,有深度的空间感觉,就必须研究透视变换的规律。 文献[1]讨论了正透视投影问题,分离了观察点位于世界坐标系Z轴上(中心投影)和不在Z 轴上(空间任意点的正透视投影)的问题,文献[2-4]也讨论了一、二、三个灭点的产生方法问题, 作者简介:何援军,男,1945年生,教授,博士生导师,主要研究领域为CAD/CG、几何计算的理论与算法研究等。Email:yjhe@https://www.doczj.com/doc/852121782.html,

基于消失点的鲁棒逆透视变换

基于消失点的鲁棒逆透视变换 重庆大学硕士学位论文 (学术学位) 学生姓名:张代明 指导教师:房斌教授 专业:计算机应用技术 学科门类:工学 重庆大学计算机学院 二O一五年四月

Robust Inverse Perspective Mapping Based on Vanishing Point A Thesis Submitted to Chongqing University In Partial Fulfillment of the Requirement for the Master’s Degree of Engineering By Zhang Daiming Supervised by Prof. Fang Bin Specialty:Computer Application Technology College of Computer Science of Chongqing University, Chongqing, China April 2015

摘要 逆透视变换在计算机视觉和道路交通标志检测和识别方面得到了广泛的应用。逆透视变换是透视变换的逆过程,主要是结合相机的内在和外在参数,将图像从图像坐标系映射到世界坐标系,从而消除透视影响对图像检测和识别任务的干扰和误差。因此,鲁棒的逆透视变换对于透视影响的消除和获取图像信息的不变量有着非常重要的作用。本文主要研究了基于消失点的鲁棒逆透视变换及其应用,采用消失点对逆透视变换需要的部分偏转角度参数进行了自动计算,并将逆透视变换应用到导向箭头的检测和识别任务中。 首先,本文介绍了基于消失点的鲁棒逆透视变换的选题背景以及研究意义,总结了现有逆透视变换算法的国内外研究现状以及存在的难点问题。 其次,本文介绍了逆透视变换的基本概念及其数学原理,总结了逆透视变换在道路交通标线检测的广泛应用,并对常见逆透视变换方法进行了分类总结。从基于点变换的逆透视变换、基于矩阵变换的逆透视变换和基于简化相机模型推导的逆透视变换三个方面介绍了现有逆透视变换的优点和缺点。其中,本文主要介绍了基于简化相机模型推导的逆透视变换,该类逆透视变换方法计算简单,具有很高的实用价值。 再次,本文提出了一种基于消失点检测的鲁棒逆透视变换方法。消失点反映了图像的透视结构,可以采用消失点坐标对相机俯仰角和偏航角进行计算,为逆透视变换提供实时偏转角度参数,增强逆透视变换对于上下坡等非常规道路环境的鲁棒性。同时,改进了一种逆透视变换方法,加上了偏航角矫正,提高了道路平面俯视图的质量。本文首先检测出消失点坐标,然后根据消失点计算相机俯仰角和偏航角,最后通过逆透视变换得到道路平面的俯视图,消除道路平面的透视形变。 最后,本文将逆透视变换应用到导向箭头的检测和识别当中。导向箭头作为一种道路交通标线,对车辆的规范行驶有着重要的指示作用。因此,导向箭头的检测与识别可以为智能交通系统提供重要的导向信息。本文首先通过逆透视变换消除透视影响从而得到道路平面的俯视图,然后检测出导向箭头候选区域,最后对候选区域采用形状上下文进行形状特征提取,并结合基于蚁群优化的形状匹配算法来识别导向箭头。 关键词:消失点检测,逆透视变换,智能交通,导向箭头检测与识别,形状匹配

相关主题
文本预览
相关文档 最新文档