计算机图形学Chapter-04观察_第1页
计算机图形学Chapter-04观察_第2页
计算机图形学Chapter-04观察_第3页
计算机图形学Chapter-04观察_第4页
计算机图形学Chapter-04观察_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

课程内容进展

综述,图形学'和‘图形系统'

建模曲线曲面实体造型

坐标系统

基本图元

观察观察流水线裁

口几何变换

显示可见面判别光照面绘制

其它UI动画...

第四讲二维观察和三维观察

Two--DimensionalViewing

Three--DimensionalViewing

第四讲主要内容

•二维观察・

•OpenGL二维观察相关函数・

•二维裁剪4

•三维空间的观察过程4

•投影口

•三维裁剪邙

•OpenGL三维观察和裁剪相关函数匚

第四讲小结

•二维观察流水线

-几种坐标系之间的关系

-裁剪窗口到视口的变换方法

•矩形窗口的线段裁剪算法

•矩形窗口的多边形裁剪算法

•投影分类:

-正平行、斜平行

-对称透视、斜透视

•理解各类投影变换的推导及其相互关系

•理解三维空间的观察变换过程

练习题

•编程:用OpenGL实现任意长方体的线框模型显示,并通过键盘控制视

点的移动(左右远近)来实现观察效果的改变。

•设世界坐标系下Window由(200,300)和(500,800)两点给出,规范化设

备坐标系下Viewport由(0.1,0.1)和(0.7,0.4)两点给出,屏幕分辨率为

1024x768,屏幕上(240,600)对应于Window中哪一坐标位置的点?

WorldCoordinateNormalizedDeviceCoordinateScreenCoordinate

二维观察

•基本概念

•二维观察流水线

•关键的几何变换

基本概念

•裁剪窗口:二维场

景(观察坐标系或世

界坐标系)中要显示

的部分

-矩形或其它

•视口:在输出设备

上进行观察的位置

-矩形或其它

二维观察变换流水线

规范化N

DC

WCVC设DC

MC建模观察工作站设

建和视口

模变换变换变换变换

(1)二维坐标系变换

(2,裁剪

(3)裁剪后的场景映射到规范化视口

流水线stepl

直接在世界

定义观察坐标坐标系下变

系下的裁剪窗换和裁剪

裁剪窗口到视口的变换

裁剪窗口

规范化视口

max|

裁剪窗口到视口的复合变换矩阵

10-xwmjn

L=01

•平移-ywmin

001

"Sx00Umax—XI'min

•缩放.VU'max—XW'min

s=0Sy0

001[/“max—J/"min

1/U'max—,/",min

Mwindow,nonnviewp

•平移T2=01yvmin

001

OpenGL几个关键的二维观察函数

〃视口位置和尺寸(相对于程序窗口)

glViewport(x,y,width,height);

//裁剪窗口函数

gluOrtho2D(xmin,xmax,ymin,ymax);

xmax,ymax;/

xmin9ymin叵

二维裁剪

•基本概念

•裁剪方法

_占

八、、

-线段

-多边形

-曲线

-文字

裁剪的相关概念

•裁剪:消除指定区域内(外)的图形部分

•“指定区域”的边界类型:

-矩形

-多边形

-圆

-其它曲线

•裁剪对象:

点,线,区域,曲线,文字

•假设裁剪区域为正则矩形

点的裁:IlDi

•P(sy)

•W(xwmin9xwmax9ywmin9ywmax)

.1UhnnW,WAw,max

满足:则,P点保留(显示)

WV—J/W,max

否则,P点被裁剪(不显示)

线段的裁剪

•Cohen-Sutherland算法(CS)

•中点分割裁剪法

核心:

•梁友栋-Barsky算法(梁B)

•Cyrus-Beck方法去B)减少求交

•Nicholl-Lee-Nicholl裁剪法(NLN)

•非矩形窗口的裁剪

Cohen-Sutherland算法

N(Xmin,Xmax,ymin,ymax/

点p(x,y)的二进区域码f(p)=(TBRL)

-ify>ymax则:T=l,否则:T=0

-ifyvymin则:B=1,否则:B=0

-ifx>Xmax则:R=l,否则:R=0

-ifxVXmin则:L=l,否则:L=0

因此,对于线段(pl,p2),有:

-如果f(Pi尸f(P2尸(0000)线段完全保留

-如果f(Pi)&f(P2)w(0000)线段完全舍弃

-其它情况:需进一步判断和裁剪

Cohen-Sutherland算法一求交

•假定一个和窗口边界求交的

顺序:左、右、下、上

•通过判断两个端点的区域码

在同一位上的值,可知和当

前边界有没有交点,并求之

•舍弃窗口外的部分

•余下子线段继续求交

中点分割裁剪

•中点分害U算法将Cohen_Sutherland算法

中求线段与窗口边界交点的过程用折半查

找的方法来代替。

•相当于Cohen_Sutherland算法的硬件版

本,只需加法和移位,没有乘除法。

梁友栋-Barsky线段裁剪法

•线段的参数表示

工=&+〃△丫

y=I/O+0<z/<1

△•V=Xend—汇0

△寸—J/eiid—J/0

•判断线段上每一点的可见性:

XWmin<X0+USX<XWmax

,川min<I/O+<Wmax

梁-Barsky法

-uAx<x0-xwmin

-VUSiun<Ao+I/AX<XU'maxuAx<xwmax-xc

W'min<J/0+<[/"'max-uAy<y0-ywmin

uAy<ywmax-y0

0

•因此,线段与矩形各uPk<",k=1,2,3,4

边的交点参数值为:

Pl=左(]l—XQ—A1thi山

〃=—仇

P2=△》,右w'max—X。

Pk,

P3=下43=J/0—J/W'min

左,右,下,上边界P4=AJA上,[4=J/^niax-JA)

1,2,3,4

―►Pi=-Ax,=X。一,^min

梁-Barsky法:右―►P2=112=工〃,max—M)

下-—►P3=一△[/,心=JA)—

非平行边求交上―►P4==J/^max-

梁-Barsky法:非平行边求交(续)

•max{u1}<min{u2}:可见边

•max{u1}>min{u2}:舍弃线段

梁-Barsky法:平行边

•Pk=0(线段平行于裁剪窗口边界)

-qk<0:整个线段舍弃

-qk>=0:按m边交点(mwk,PmW。)进行裁剪

P1=0

P2=0

Cyrus・Beck方法

•将线段表示成参数方程

的形式,求线段与窗口边

界的交点的参数

•确定线段的可见部分之

后再用交点的参数计算交

点的坐标。

•适用于矩形或凸多边形

裁剪窗口。

Nicholl-Lee-Nicholl线段裁剪法

•先按照CS算法,确定完全

可见(不可见)的线段

•其它线段(p1,p2),按p1的

位置分为三种情况(其它情况

可通过对称性得到)。

多边形窗口的线段裁剪

•凸多边形窗口:

-Cyrus-Beck参数化方法,梁-Barskey扩充算法

-如果是平行四边形,可错切得到矩形,裁剪,再错切回去

•凹多边形窗口:

-可分解成一组凸多边形

-类似于扫描填充方法的裁剪:求交,判断是否在窗口内

•加速:排除不相交边

Cyrus-Beck凸多边形窗口线段裁剪

•采用法线十点积的方法来判别点在窗口内/外。

•凸多边形裁剪窗口上任一点A处的内、外法线的

定义如下(B为另一边上任意点):

-内法线Nin®满足:Nr(B-A)>0

-外法线N°ute『满足:Noe(B-A)<0

Cyrus-Beck算法

•直线段(P1,P2)的参数方程为:

L(U)=(P2-P1)U+P1ue[0,1]

对于线段上任意点L(u),裁剪窗口某边界WL上任一点A,

A处的内法线N,有三种可能:

-N«(L(u)-A)<0,

•则L(u)在WL外侧

-N•(L(u)-A)=O,

•则L(u)在WL或其延长线上

-N•(L(u)-A)>0,

•则L(u)在WL内侧

•L(u)在凸多边形内(含边界上)的充要条件是:对于凸多

边形各个边界上的任意一点A和该处内法向量N,都有

-N•(L(u)-A)>0

•因此:假设多边形有m条边,在每条边上取一个点A”

和该点处的内法线N”则可见线段的参数区间为下列一

组不等式的解:

N^LfuhAi)>0(i=1~m)ue[0,1]

该解的最小值UmE和最大值/批对应于可见线段的端点

Umin和"max的推导?

L(0)

N『(L(u)・Ai)>0oNi>((P2-P1)u+P1-Ai)>0

・・(二时,代表交点参数)

<=>Nr(P2-Pi)u+Nj(PiAJ0u

•平行边:对于某个i,有*『2・巴)=0,无交点。则:

-线段在区域外侧:Nj・(Pi・AJvO:舍弃

-线段和区域边界重叠:Ni・(Pi・AJ=0:通过端点测试得到可见段

-线段在区域内侧:Nj(Pi-AJ>0:继续和窗口其它边测试

•非平行边,则可见部分的参数U满足:

U>-Uj,当Nj・(P2・Pi)>0线段从外到内穿过i边界

U<-Uj,当Nj•(P2・Pi)V0线段从内到外穿过i边界

【注意】这里的“=Nj•(P1-Ai)/Ni*(P2-P1)

•因此:解的最小值和最大值为:

umin=max{0,max{-Uj:}

umax=min{1,min{-UpNi*(P2-P1)<0}

最终:若UminVUmax,则它们是可见线段的端点

参数,否则,线段不可见。

-1^访(出)代表沿PiP2最后进入多边形的位置。

-Umax&)代表沿P”2最早离开多边形的位置。

非线性边界窗口的线段裁剪

•圆形窗口

-不相交情况的排除.

•和圆的包围盒测试

•圆心到线段距离测试

-线段和圆的求交运算

-圆的4/8对称性的利用

•曲线边界窗口

附:国内发表的若干线裁剪文章

•一种基于几何变换的线裁剪新算法,软件学报,1998

•一个有效的多边形窗口的线裁剪算法.计算机学报,1999

•一种快速的圆形窗口裁剪算法,CAD与图形学学报,2001

•基于顶点编码的多边形窗口线裁剪高效算法.计算机学报,2002

•凸多边形窗口线裁剪的新算法:中国图象图形学报2003

•一种快速的圆形窗口线裁剪算法.计算机工程与应用2004

•基于扫描带的任意多边形窗口线裁剪算法工程图学学报2005

•一种基于坐标变换的圆形窗口线裁剪算法.计算机应用与软件2006

•基于凸剖分的多边形窗口线裁剪算法.CAD与图形学学报2007

多边形的裁剪

•多边形的各条边分别使用“线条裁剪”方法

-产生不闭合区域

•分别用窗口的4边对多边形进行裁剪

-需重新组织每个窗口边界上的多

边形顶点序列

假定边界处理顺序:左,右,下,上

Suther1and-Hodgeman算法

•窗口四边分别对多边形各边进行裁剪

•多边形L边被窗口WL边界裁剪,

顶点的修改方法:

-舍弃L

•L两端均在WL外

-保留终点

•L两端均在WL内

•L从WL内伸向外(交点为新终点)

-起点改变,则保留新起点和终点

•L从WL外伸向内(交点为新起点)

B

左裁男右裁剪下裁剪上裁剪

A9BAfB

BTCB94B94

CTA5fA4玲5495

5965f65f6

B6916少1

1玲B192

B94394

4f5

Suther1and-Hodgeman算法

•凹多边形裁剪后有多余边

Weiler-Atherton算法

•适用于任意多边形窗口裁剪任意多边形,

-不会产生多余边

逆时针方向处理多边形:

(1)多边形的边L由内到外穿越窗口边界时:

逆时针沿窗口边界搜索下一个交点

(2)由外到内穿越时,

逆时针沿多边形边界搜索下一个交点

-A:重复(1)(2)步直到产生一个回路。

-B:回到上次A的起始交点,继续对多边形的其它边进

行A步骤。

Weiler-Atherton算法

Weiler-Atherton算法

•逆时针(顺时针)维护多

边形/裁剪窗口顶点序列

•内-外测试:顶点是否在

对方范围内

Clippin。、、

Window

曲线的裁剪

•圆

-和圆的包围盒测试

-4分或8分象限的包围盒测试

-窗口边界和圆求交得到圆弧

•其它曲线

-包围盒测试

-求交____________________I

BeforeClipping

•边扫描转换边裁剪

-逐个象素判断是否在裁剪窗口内

AfterClipping

文字的裁剪

STRING2

NGI

KRING3

STRING4

STRING1

裁剪前裁剪后

三维空间的观察过程

•与三维观察有关的若干概念

•三维观察流水线

•三维观察坐标系及其转换

三维观察相关概念

•对象指定位置视图投影到显示设备

•投影(3Dto2D):平行投影、透视投影图

•深度关系(可见线、面的标识)图

-线:近亮、远暗/不显示/虚线显示/不同颜色显示

-面:屏幕象素仅包含前向面的颜色

•对象表面特征视图

•面绘制:光照、透明/光滑性、纹理图

•内部组成或剖面

•拆散药剖切显示图

•立体显示

•左、右视图(立体眼镜).

X.

三维观察流水线

•指定观察参数以及投影类型包含深度信息的二维

•投影变换(获得:2D+z)

•规范化观察体ViewVolume

•裁剪

•视口变换

•可见性判断、表面绘制等

三维观察坐标系

在三维世界坐标系中:

指定观察参考点P

指定观察平面法向量N(z轴)

指定和调整观察向上向量V(y轴)

计算出向量U(x轴)

由此,获得uvn观察坐标参考系统

—站在P点,沿着N(-N)方向看,在UV平面上'看'到的内容

三维观察变换(世界-〉观察坐标系)

复合变换P=R・T・P

三维观察效果

-固定观察点P,改变N的方向

-固定N的方向,改变观察点P位置

问题:如何在输出设备上获得这些效果?

核心:三维模型向观察平面投影!

(投影平而)

投影

•如何将三维场景显示在二维的设备上

•投影的分类

•各类投影相应的观察体

•实现各类投影的几何变换方法

投影的分类

•从三维物体上某点P引出的一条射线(投影线)

与观察平面的交点,即为P的投影点。

•分类L正平行投影;正投影

正轴测投影、

厂平行投影

j等轴测投影

斜平行投影{US

一点透视投影

透视投影H二点透视投影

三点透视投影

投影示意简图

View

Plane

Convergence

Point

平行投影透视投影

投影线相互平行投影线会聚到一点:“投影中心”

Hnz杆班“投影线相互平行&

止十1J仪彩投影线与观察平面垂直

(正,正轴测,等轴测)

•正投影:观察平面垂直于世界坐标系下某一坐标轴

PlanView

-平行性不变

-尺寸比例不变

-三维结构.正投影>三视图

重建

'—*--------

一、一、一一__,

SideElevationView

FrontElevationView

正轴测投影

•正轴测:

-观察平面不垂直于任一坐标轴

-线的平行性不变

-包括正等测(等轴测)、正二测、正三测

•等轴测:观察平面和三根坐标轴交点离

原点的距离相等([a|二|b|二|c|八种)

正轴测投影示意图

为紫色平面

建立一个原

点和世界坐

标系原点重

育的观察坐

标系

㈤观察坐标系与世界坐标系重合(b)旋转变换后的坐标系的位置关系

正轴测投彩示意图

立方体的正等轴测投置图立方体的正二轴测投登图立方体的正三轴测投影图

正投影的观察体定义及其规范化

对于观察平面平行于xy平面的正投影:

•xp=x,yp=y,zp=z(所有投影变换均需保留z为可见性测试使用)

•选择二维裁剪窗口:位于观察平面上

正投影的观察体定义及整阚

1""max,:far)|

•左手系

-与通常的屏幕坐标系吻合

-观察方向为正Znorm轴方向

-可以将观察方向的正距离解释为离屏幕(观察平面)的距离

•Znorm值越大,表示离观察平面越远

回顾:二维裁剪窗口到规Mwindow,nom'iviewp

范化视口的复合变换矩阵fSF

10•XWmE

平移01-yWmin

001

2

Sx00sx=-------------------

XW-.VU'i

缩放maxmn

s=0Sy0

2

001Sy=

J/^max—[/"'min

10-1

平移T2=01-1

001

Ynorm

window,nonnviewp

7'"'max+.VU'min

0

XU'max-Xa,mmXU\nax-X〃h】in

2J/^?max+yw?niin

;normsquare一0

—[Wminl/ll?max—J/U'min

001

r2AU'frjax+.VU'min"

00

w

■^*'max—X〔〃minAU'max—A*U'min

7yw,niax+J/W'niui

00

Mortho,norm=J/W'max—[/加max—yw'min

.0001.

投影线相互平行&

斜平行投影投影线与观察平面不垂直

ViewPlane

1©•L=(x,y,z)^(xp,yp,z)

ViewH=x轴正向

Plane

0为L逆时针与H的夹角

Xp=A-+Lcos0z-z_;4夕-z必=x+Li(z,.P—z)cos0

[=>tarpna=—kL=----

%=y+Lsin</>Ltana

yp=y+Li(Zw-2)sin0

(L]=cota)a=Q(T时为正投影

View

Plane

斜等测、斜二测

•斜等测投影

-投影平面与某一坐标轴垂直

-tana=1a=45°(|)二任意

特点:与投影平面垂直的线投影后长度不变

•斜二测投影

-投影平面与某一坐标轴垂直

-tana=2a=63.4°(|)二任意

特点:该轴轴向变形系数为1/2

tana=2(|)=45

斜二测投影示意图

(a)(b)

斜等测投影示意图

(b)

斜平行投影的观察体定义及其规范化

对于观察平面平行于xy平面的斜平行投影:

■定义斜平行投影向量:获得投影变换矩阵

•选择二维裁剪窗口:位于观察平面上

•指定近一远裁剪平面:获得斜平行管道观察体

■进行投影变换:获得与正投影相同的矩形管道观察体

•观察悻的规范化变换。(同正投影)

斜平行投影向量

斜平行投影变换矩阵

"ioVpx-5-

1°%F

工P=1+(二1甲—二)^~

Upz

n1Vpy~Vpy

^oblique=1

%=y+&pT)?0_艰z”

0010

,0001.

参考z=Zvp平面的关于z轴的错切

1000

正投影变换矩阵

M,ort=0100

就是单位矩阵

0010

单位投影向量0001

(0,0,1)

斜平行投影观察体

FarPlane

vp

斜平行投影观察体的变换

(linpini'Window(lippingWindow

(b)

Ohliquc-Projection'Iransformed

ViewVolumeOblique

ViewVolunu;

规范化

(同正投影)

任意平行投影的变换过程

(1)坐标系变换:世界坐标系经变换,与观察

坐标系(右手或左手系)重合

此时:投影平面变为Z=o(XY平面)

(2)错切:M°biique使斜平行投影变成正投影

(3)规范化(平移,缩放):Morthonorm

透视投影

投影参考点

(投影中心)

View

Plane

•透视投影的特点:

-“近大远小”:线段投影缩小程度与投影平面位置的关系

-平行于投影平面的平行线段组,投影后仍平行。

-不平行于投影平面的平行线段组,投影后会聚。

•投影中心无限远离投影平面时,即等同于平行投影

透视投影分类(灭点Vanishingpoint)

•每组平行线条的会聚点称为一个“灭点”

•主灭点:这组平行线条平行于某个坐标轴

-一点透视:投影平面只与一个坐标轴相交

-二点透视:与二个

-三点透视:与三个

透视投影的观察体定义及其规范化

对于观察平面平行于xy平面的透视投影:

•定义投影中心

•定义观察体

-选择观察体类型并获得相应的投影变换矩阵

-选择二维裁剪窗口:位于观察平面上

-指定近一远裁剪平面

■选冬投影变换:获得矩形管道观察体

•双蔡悔的规范化变换。

z)|

C7,

ViewPlane

约定1:投影平面平行于xy

平面(只与z轴相交),且

其法向量平行于Z轴正向。

思考:经过透视投影后任意点P的z坐标都变换成ZvvpH了吗?

透视投影变换

【注意:】

•ZpmwZ(投影平面上的

对蒙点无需投影)

•每个对象点的h值均不同,

是z的线性函数

【思考:】

=X(Zpry一二叩)+Xprp(二up一二)

•Zp是什么?

}/h—y仁prp—Z叩)+%邛(二vp一二)

透视投影变换矩阵

X二

Xh二prp一二up0-~prpXprp二”px1(t,y,1)

yh0二prp一二叩~lfprpVprfZp丫

V7Mpers

Zh00Sz亡工

(电,物,马」1)

h

_00-1二P。,JL/h

Ph=Mpers,P(Xp,yp,zp1)

•Zh=szz+tz

•zp=Zh/h

•因此,ZpWZvp而是对Z进行规范化!代表了真正深度信息!

•矩阵元素Sz和tz用于实现Z坐标规范化,其取值依赖于:

-观察体的形状、位置、尺寸

-规范化目标的大小:(0,1)还是(・1,1)

透视投影观察体

•视觉棱锥体(类似于人眼的视觉圆锥体)

、、

•棱台:

-裁剪窗口:位于投影平面上

-近裁剪平面:去除大对象

-远裁剪平面:去除小对象

约定2:裁剪平面在

投影中心和观察对象

之间。

约定3:近裁剪平面

在投影中心和远裁剪

棱台观察体平面之间。

透视投影观察体的种类

对称透视投影棱台•斜透视投影棱台

投影中心到裁剪窗口

中心的连线垂直于投

影平面

对称棱台观察体

•定义方法:

FrustumCenterline

对称棱台观察体

height/2

从而计算出Zvp

对称透视观察体的变换示意图

Centerline

斜棱台观察体

XlTmin+W'max

约定:投影中心为原点,roi2

0yw,min+

投影平面就是近裁剪平一—Mzshear•

-near

面1*near

AZ

10shzx0

运裁剪面

XWmin01sh0

Mzshear=2y

yWmin*yWmax0010

Znear"_0001_

XWmax/经过错切

.Vlt'min+“Wmax

yWmin~yWmax微影中心后,xy坐

X2二3

ZnearJ(0,0,0)标变化,

J/"'min+[Wmax

z不变7,

-—near

斜棱台错切成对称棱台示意图

约定前提下的斜对称透视变换

-prp-4卬0~xprp■prpN叩一二near000

0

三prp一二up-yprpl/prpZVp0一二near00

Mpers=Mp^rs=

00Sztz00tz

.00-1Z

prp-00-10

+-1"'max

00

-near2

注意:不符合约定前提yw'min+J/W,max

00

时,可能需进行更多的-near7

变换如平移等,相应错00t

切参数也需重新计算。z

000

透视变换的含义

温馨提示

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

评论

0/150

提交评论