nullnull第八章 三维形体输出流水线三维图形的基本问
平面几何投影
投影变换
三维图形的显示
图
null三维图形的基本问题1. 在二维屏幕上如何显示三维物体?
显示器屏幕、绘图纸等是二维的
显示对象是三维的
解决方法----投影
三维显示设备正在研制中
2. 如何表示三维物体?
二维形体的表示----直线段,折线,曲线段,多边形区域
二维形体的输入----简单(图形显示设备与形体的维数一致)
null三维图形的基本问题三维形体的表示----空间直线段、折线、曲线段、多边形、曲面片
三维形体的输入、运算、有效性保证----困难
解决方法----各种用于形体表示的理论、模型、方法
3. 如何反映遮挡关系?
物体之间或物体的不同部分之间存在相互遮挡关系
遮挡关系是空间位置关系的重要组成部分
解决方法----消除隐藏面与隐藏线null三维图形的基本问题4. 如何产生真实感图形?
何谓真实感图形
逼真的
示意的
人们观察现实世界产生的真实感来源于
空间位置关系----近大远小的透视关系和遮挡关系
光线传播引起的物体表面颜色的自然分布
解决方法----建立光照明模型、开发真实感图形绘制方法
null三维图形的基本问题三维图形的基本研究内容
投影
三维形体的表示
消除隐藏面与隐藏线
建立光照明模型、开发真实感图形绘制方法null三维图形的显示
显示流程图
观察变换:从世界坐标系到观察坐标系的变换null三维图形的显示流程图何时裁剪
投影之前裁剪----三维裁剪
优点
只对可见的物体进行投影变换
缺点
三维裁剪相对复杂
投影之后裁剪----二维裁剪
优点
二维裁剪相对容易
缺点
需要对所有的物体进行投影变换
null三维图形的显示流程图采用二维裁剪的三维图形显示流程图
在投影之前裁剪的理由
三维物体的表面通常被离散表示成多边形或折线,而对这类简单图元,三维裁剪同样比较简单。
三维图形在显示过程中需要被消隐,做这个工作要有图形的深度信息,所以必须在投影之前完成 。 消隐很费时,如果在此之前裁剪(或部分裁剪)掉不可见的图形,可使
需要消隐的图形减至最小。
null平面几何投影投影变换:把三维物体变为二维图形表示的过程称为投影变换。null平面几何投影投影分类
投影中心与投影平面之间的距离为无限 投影中心与投影平面之间的距离为有限 根据投影方向与投影平面的夹角根据投影平面与坐标轴的夹角null平面几何投影
透视投影 平行投影 null平面几何投影-平行投影 平行投影
投影中心与投影平面之间的距离为无限
因此,只需给出投影方向即可
是透视投影的极限状态null平面几何投影-平行投影 根据投影线方向与投影平面的夹角,平行投影分为两类:
正平行投影与斜平行投影
正平行投影包括:正投影(三视图)和正轴侧投影
三视图:三个投影面和坐标轴相互垂直。
正轴侧:投影面和坐标轴呈一定的关系。
null平面几何投影-平行投影 三视图:正视图、侧视图和俯视图 null正平行投影-三视图把三维空间的图形在三个方向上所看到的棱线分别投影到三个坐标面上。再经过适当变换放置到同一平面上。 zyxa2c2b2a1b1c1null正平行投影-三视图变换矩阵(其中(a,b)为u、v坐标下的值)
正视图
null正平行投影-三视图俯视图: null正平行投影-三视图侧视图
null正轴测投影当投影方向不取坐标轴方向,投影平面不垂直于坐标轴时,产生的正投影称为正轴测投影。
正轴测投影分类:
正等测:投影平面与三个坐标轴的交点到坐标原点的距离都相等。沿三个轴线具有相同的变形系数。
null正轴测投影正二测:投影平面与两个坐标轴的交点到坐标原点的距离都相等。沿两个轴线具有相同的变形系数。null正轴测投影正三测:投影平面与三个坐标轴的交点到坐标原点的距离都不相等。沿三个轴线具有各不相同的变形系数。
null正轴测投影正轴测投影的形成过程如下:
将空间一立体绕绕y轴旋转θy角
然后再绕x轴旋转θx
最后向z=0平面做正投影
由于这种投影的投影平面不与立体的轴线垂直,同时可见到物体的多个面,因而可产生立体效果。经过正轴测投影变换后,物体线间的平行性不变,但角度有变化。
null正轴测投影
正轴测投影变换矩阵的一般形式:null正二测和正等测下面主要讨论正二测和正等测的投影变换矩阵,即确定变换矩阵中的θx角和θy角。
如何度量沿三个轴线方向的变形系数呢?
null正二测和正等测∴正二侧投影需满足:
假定Z轴上的单位矢量经变换后长度变为1/2;即取Z轴的变形系数恒为1/2:
可得:θx=20。42’, θy =19。28’。
变换矩阵为null正二测和正等测正等侧投影需满足:
求得:
正等测图的变换矩阵为null斜平行投影 投影线与投影平面不垂直
斜等测投影
投影平面与一坐标轴垂直
投影线与投影平面成45°角
与投影平面垂直的线投影后长度不变
斜二测投影
投影平面与一坐标轴垂直
投影线与该轴夹角成 arcctg(1/2)角
该轴轴向变形系数为 ½。即与投影平面垂直的线投影后长度变为原来的一半。null斜平行投影斜等测投影和斜二测投影null斜平行投影求法1. 已知投影方向矢量为(xp,yp,zp)
设形体被投影到XOY平面上
形体上的一点(x,y,z)在xoy平面上投影后→(xs,ys)
∵投影方向矢量为(xp,yp,zp)
∴投影线的参数方程为:
yzx(xs,ys)(x,y,z)(xp,yp,zp )null斜平行投影求法因为
所以
若令
yzx(xs,ys)(x,y,z)(xp,yp,zp )null斜平行投影求法则矩阵式为:
null斜平行投影求法2.设(xe,ye,ze)为任一点,(xs,ys)为(xe,ye,ze)在XcOcYc平面上的投影
设立方体上一点 P(0,0,1)在XcOcYc平面上的投影P' (lcosα,lsinα,0),投影方向为PP',PP'与投影面的夹角为β, α为投影与x轴的夹角,则投影方向矢量为(lcosα,lsinα,-1) null斜平行投影求法现考虑任一点(xe,ye,ze)在XcOcYc平面上的投影(xs,ys)
∵投影方向与投影线PP’平行
所以
null斜平行投影求法矩阵形式为:
斜等侧中:l=1,β=45
斜二侧中:l=1/2, β=arctgα=63.4
正平行投影:l=0, β=90
null透视的基本知识 透视投影是一种中心投影法,在日常生活中,我们观察外界的景物时,常会看到一些明显的透视现象。
如:我们站在笔直的大街上,向远处看去,会感到街上具有相同高度的路灯柱子,显得近处的高,远处的矮,越远越矮。这些路灯柱子,即使它们之间的距离相等,但是视觉产生的效果则是近处的间隔显得大,远处的间隔显得小,越远越密。观察道路的宽度,也会感到越远越窄,最后汇聚于一点。这些现象,称之为透视现象。
产生透视的原因,可用下图来说明:
null透视的基本知识图中,AA',BB',CC'为一组高度和间隔都相等,排成一条直线的电线杆,从视点E去看,发现
∠AEA>∠BEB>∠CEC
若在视点E与物体间设置一个透明的画面P,让P通过AA',则在画面上看到的各电线杆的投影aa'>bb'>cc'
aa'即EA,EA'与画面P的交点的连线;
bb'即为EB,EB'与画面P的交点的连线。
cc' 即为EC,EC'与画面P的交点的连线。
∴近大远小null透视的基本知识若连a,b,c及a',b',c'各点,它们的连线汇聚于一点。
然而,实际上,A,B,C与A,B,C的连线是两条互相平行的直线,这说明空间不平行于画面(投影面)的一切平行线的透视投影,即a,b,c与a',b',c'的连线,必交于一点,这点我们称之为灭点。
null平面几何投影-透视投影透视投影
投影中心与投影平面之间的距离为有限
灭点:不平行于投影平面的平行线,经过透视投影之后收敛于一点,称为灭点.
主灭点:平行于坐标轴的平行线产生的灭点。
一点透视
两点透视
三点透视
特点:产生近大远小的视觉效果,由它产生的图形深度感强,看起来更加真实。 null透视投影主灭点数是和投影平面切割坐标轴的数量相对应的,即由坐标轴与投影平面交点的数量来决定的。 如投影平面仅切割z轴,则z轴是投影平面的法线,因而只在z轴上有一个灭点,平行于x轴或y轴的直线也平行于投影平面,因而没有灭点。yxzonull一点透视(平行透视)人眼从正面去观察一个立方体,当z轴与投影平面垂直时,另两根轴ox,oy轴平行于投影平面。这时的立方体透视图只有一个灭点,即与画面垂直的那组平行线的透视投影交于一点。
null二点透视(成角透视)人眼观看的立方体是绕y轴旋转一个角度之后,再进行透视投影。三坐标轴中oy轴与投影平面平行,而其它两轴与画面倾斜,这时除平行于oy轴的那组平行线外,其它两组平行线的透视投影分别在投影平面的左右两侧,作出的立方体透视图产生两个灭点。
null三点透视(斜透视) 此时,投影平面与三坐标轴均不平行。
这时的三组平行线均产生灭点。
null透视举例null一点透视投影的变换矩阵 1) 一点透视
设z轴上有一观察点(即视点)V(0,0,h)
从V点出发将物体上的点P(x,y,z)投影到XOY平面上得到P' (x',y',0)
由相似三角形可知: null一点透视投影的变换矩阵
令:
null一点透视投影的变换矩阵这是变换矩阵为
的齐次坐标变换
它可以看作是先作变换 null一点透视投影的变换矩阵再做变换
的合成。
null一点透视投影的变换矩阵在透视变换Mr下有:null一点透视投影的变换矩阵当z→时,x →0,y →0,z →-h
∴(0,0,-h)为该透视的一个灭点。
同样,视点在(h,0,0)的透视变换,灭点在(-h,0,0)
变换矩阵为
null一点透视投影的变换矩阵视点在(0,h,,0)的透视变换,灭点在(0,-h,0)
变换矩阵为
null一点透视投影的变换矩阵在变换矩阵中,第四列的p,q,r起透视变换作用
null一点透视投影的变换矩阵当p、q、r中有一个不为0时的变换。假定q!=0,p=r=0.
对空间上任一点(x,y,z)进行透视变换结果如下:
对该结果进行规范化处理后,便得:null一点透视变换的几何意义当y=0时:
x’ = x
y’ = 0
z’ = z
即处于y=0平面上的点,经过透视变换后没有变化。
当y=∞时
x’ = 0
y’ = 1/q
z’ = 0
即当y->∞所有点的变换结果都集中到Y轴的1/q处,也即所有平行于Y轴的直线,变换后都将沿伸相交于该点。该点即为灭点。
null二点透视投影的变换矩阵2) 二点透视
在变换矩阵中,第四列的p,q,r起透视变换作用
当p、q、r中有两个不为0时的透视变换称为二点透视变换。假定p!=0, r!=0, q=0;
将空间上一点(x,y,z)进行变换,可得如下结果:
null二点透视投影的变换矩阵
由上式可看出:
当x->∞时,在X轴上1/p处有一个灭点;
当z->∞时,在Z轴上1/r处有一个灭点;
经齐次化处理后得:null三点透视投影的变换矩阵3) 三点透视
类似,若p,q,r都不为0,则可得到有三个灭点的三点透视。
经齐次化处理后得:null三点透视投影的变换矩阵由上式可看出:
当x->∞时,在X轴上1/p处有一个灭点;
当y->∞时,在Y轴上1/q处有一个灭点;
当z->∞时,在Z轴上1/r处有一个灭点;
null透视投影的技巧 一点透视图的生成
在生成一点透视图时,为了避免将物体安置在坐标系原点,而产生下图所示的透视效果,通常在透视变换前,先将立体作一平移变换。
null7.2观察空间的定义及转换什么是观察坐标系
View Reference Coordinate或VRC
照相机所在的坐标系
如何建立观察坐标系
坐标原点----聚焦参考点在底片(投影平面)上的投影,称为观察参考点VRP(View Reference Point)
n轴----照相机镜头方向(投影平面的法向)
v轴----照相机向上的方向(观察正向)
u轴----
nullnull为什么需要观察坐标系
简化和加速投影变换
投影平面---- n=0
投影中心---- (0,0,d)
视见体
视见体是三维裁剪窗口
建立步骤
定义窗口形成观察空间形成视见体null投影参考点
PRP:Projection Reference Point
透视投影:COP==PRP
平行投影:投影方向DOP=窗口中心CW-PRP
null观察空间有限观察空间亦称
视见体或裁剪空间null透视投影变换
问题----在uvn中,投影平面为n=0,投影中心为(0,0,d),待投影点为P,求投影点Q
null投影线的参数方程
投影平面方程 n=0
Q点的坐标由此式可解释为什么透视投影产生近大远小的视觉效果null7.3 三维裁剪3D线段的剪裁(编码裁剪法)
1. 窗口的定义:
* 平行投影
* 透视投影
2. 编码定义及编码
编码定义(六个方位): null编码:
* 平行投影 C0=(X
Zf)?1:0; null* 透视投影 C0=(Y>Z)?1:0;
C1=(Y<-Z)?1:0;
C2=(X>Z)?1:0;
C3=(X<-Z)?1:0;
C4=(Z1)?1:0null3. 先排除两种情况
if 线段两端点的编码均为000000,则完全落在裁剪空间内,显示
if 线段两端点的编码按位求逻辑与后为非零,则完全落在裁剪空间外,舍弃
第三种情况:求线段与窗口某边界面之交点,编码。