58
•形 形形 Objects Representation 形形形形 Modeling 形形 形 Bunddaries,Line,Surface 形形形形形形形 Attributer • 形形形形 Modeling Transformation • 形形形形 Viewing Transformation (Projectio n) ( 形形 ) 形形形形形→形形形形形 → 形形形形形形 形形形形形形 形形形形形 形形形 形形形形 (、、) 形形形形形形形形形

形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

Embed Size (px)

Citation preview

Page 1: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

• 形体表示 Objects Representation三维建模 Modeling

物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer• 建模变换 Modeling Transformation• 观察变换 Viewing Transformation (Projection)

( 模型 ) 世界坐标系→观察坐标系 → 规格化坐标系表面绘制算法(光照模型、纹理、阴影等)

三维观察的基本观念

Page 2: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

三维场景观察建模坐标系 世界坐标系 观察参考坐标系• 投影变换 Projection

– 平行投影 Parallel Projection 物体表面的点沿平行线投影 到显示平面(三视图 正视图、左视图、俯视图)

– 透视投影 perspective 沿汇聚路径 (Converge Paths) 将点投影到显示平面。 物体上平行的直线汇聚于一点

Page 3: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

平行投影 三视图

Page 4: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

•深度表示深度信息可区分物体的前后遮挡关系二义性

– 深度的图形表示:用光的强度表示距离:近,亮,远,暗,

近,清晰,远,模糊。

Page 5: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

• 可见线、面标识 线:不显示 / 虚线 / 不同颜色 to 8

• 面绘制 光源 / 透明性 / 光滑性 / 纹理 to 11• 剖切显示

暴露部分剖面 图9-8• 三维和立体显示

左 , 右视图 to 14• 三维图形软件包

建模功能,映射功能,投影技术选择,视图选择

Page 6: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换
Page 7: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换
Page 8: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换
Page 9: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换
Page 10: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换
Page 11: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

三维观察•三维空间的观察过程•观察坐标•平面几何投影•投影图的确定•一般情况下三维视图的计算•平行投影的规范化变换•透视投影的规范化变换•相对于规范化观察空间的裁剪

Page 12: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

三维空间的观察过程• 指定观察范围 View Volume• 获得观察内容 裁剪• 投影变换 3D-2D• 指定显示区域 规范化设备空间• 实现显示 物理设备坐标

Page 13: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

三维观察流水线

建模变换投影变换观察变换

规格化变换和裁剪视口变换

MC WC VC

PC NC DC

Page 14: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

观察坐标• 第一步,确定观察参考坐标系• 第二步,建立观察平面(投影平面,屏幕) 步骤:1. 选择观察参考点( VRP ) P0

2. 选择参考点 Pref( 注视点) , 建立观察平面法向量 N;建立 zv 轴

N=(1,0,0) N=(1,0,1)

Page 15: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

3. 指定观察向上向量 V( 如图) ( View-up ) , 可选 (0,1,0)• 建立垂直于 N 的平面 , 将 View-up 投影到此平面 , 得到

V 4. U=V×N, 建立 xv 轴5. V=N×U ,建立 yv 轴5. 选择观察平面( P0 )

View-up

Page 16: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

世界坐标系到观察坐标系的变换• 方法 1 平移观察参考点到 WC 的原点 : T 绕 Xw 轴将 N 绕到 XwZw 平面 : Rx() 绕 Yw 轴将 N 转到与 Zw 重合 : Ry () 绕 Zw 轴将 yv 转到与 yw 对齐 : Rz

R= Rz • Ry • Rx•T

Page 17: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

• 方法 2

(View-up)

Page 18: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

生成三维观察效果

Page 19: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

几何投影• 定义

– 从投影中心引到三维物体上每一点的射线与投影平面的交点• 类型

平面几何投影

透视投影

平行投影

一点透视投影二点透视投影三点透视投影正平行投影 正投影正轴测投影 等轴测投影斜平行投影 斜等测斜二测

Page 20: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

平行投影• 正平行投影

– 投影线与投影平面垂直• 正投影

– 投影平面垂直于某一坐标轴• 前、左、顶 ( 后、右、底 )

观察平面 Zvp,xp=x,yp=y,zp=z– 物体平行性不变– 三维结构 三视图

正投影 重建

Page 21: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

正投影• 三视图

Page 22: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

正平行(正)投影• 正轴测投影

– 投影平面不垂直于任一坐标轴– 线的平行性不变

• 等轴测投影– 投影平面和三根坐标轴交点离原点等距离– |a|=|b|=|c| 八种

Page 23: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

正投影坐标系、裁剪窗口和观察体 •

Page 24: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

正投影的规格化变换•

min

min1

min

1 0 00 1 00 0 10 0 0 1

xwyw

tzw

2

1 0 0 10 1 0 10 0 1 10 0 0 1

t

min

min1

min

1 0 00 1 00 0 10 0 0 1

xwyw

tzw

2 1T t M t

max min

max min

2 0 0 0

20 0 0

20 0 0

0 0 0 1neaar far

xw xw

yw ywM

z z

Page 25: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换
Page 26: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

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

• 斜等测投影– 投影平面与一坐标轴垂直– 投影线与投影平面成 45° 角

与投影平面垂直的线投影后长度不变• 斜二测投影

– 投影平面与一坐标轴垂直– 投影线与该轴夹角成 arc cot(1/2) 角

该轴轴向变形系数为 1/2

Page 27: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

投影平面为 z=0 的斜平行投影计算

• 已知 P(x,y,z),, 求 (xp,yp)

• Xp=x+Lcos

yp =y+Lsin

• 求 L: tg =z/L L=z/ tg =zL1

L1=ctg

• Xp=x+z(L1cos )

yp =y+z(L1sin )

正投影

斜投影zvp

Page 28: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

斜平行投影 2 (zvp≠0)

Page 29: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

通常选 30 °~ 45 ° 的值 tan =1, 斜等测投影 . 与投影平面垂直的 (Z 方向 ) 线段长度不变。与投影平面二轴平行( x,y 方向)的线段长度不变。• tan =2 , = 63.4 ° 斜二测投影。与投影平面垂直的 (Z 方向 )线段长度变为 1/2.

Page 30: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换
Page 31: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

7.13

Page 32: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

平行投影规范变换

已知 Vp(xp,yp,zp), 求 Vp’

Page 33: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

斜平行投影的观察体与规范化变换

7.7 P24 , 25

Page 34: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

一般情况下三维视图的计算• 一般情况

– 坐标系统为右手坐标系统– 投影平面为任意确定的平面– 任意指定

•投影线方向 ( 平行投影时 )•投影参考点 ( 透视投影时 )

Page 35: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

透视投影变换 令 z’=zvp , 则 x’=xp, y’=yp

Page 36: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

几种特例( 1 )投影参考点在 Z 轴上

(1) 与( 2 )

x,y

Page 37: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

(3)zvp=0,(prp≠(0,0,0)

( 4 ) xprp=yprp=Zvp=0 投影参考点在 Z 轴上,投影屏幕为 YZ平面 ( 3 )与( 4 )

Page 38: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

透视投影变换矩阵令 xp=xh/h yp=yh/h

• Ph (xh,yh,zh)

• Sz,tx 是对 Z 坐标投影规范化时的比例、平移因子• P 的齐次坐标 P(x,y,z,1)

7.26

原版有错

Page 39: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

灭点•灭点 (Vanishing Point) 不与观察平面平行的一组平行线收敛于一点,此点称灭点。

•主灭点 灭点在坐标轴上• 一点透视 Z 轴灭点• 二点透视 X、 Z 轴灭点• 三点透视

Page 40: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

透视投影图•

Page 41: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

透视投影观察体• 规范化• 棱锥体

远截平面 近截平面

Page 42: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

透视投影锥体• 对称棱台• tan(θ/2)= zprp-zvp=高度 /2·cot(θ/2) = prp vp

/ 2z - z高度

观察体

θ/2prp

裁剪窗口

zprp-zvp

yview

zview

·cot(θ/2)·

/2宽度纵横比

x,(y)

prp vp

/ 2z z高度

z

原中文图有误

Page 43: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

斜透视投影棱台

Page 44: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

• 对称棱台观察体

Page 45: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

取观察参考点为

取观察平面为近裁剪平面,( 0 , 0 , Znear) 为屏幕中心,则

错切变换

(7.30),

Page 46: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

• 投影参考点在观察坐标原点,近裁剪平面与观察平面重合, zvp=znear此时投影矩阵变为

• 合并错切矩阵 (7.30,7.33) ,则透视投影的变换为

7.34

(7.33)(7.26)

原版有错

Page 47: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

规范化透视投影变换• 投影变换后,观察体已变为四楞台,只要进规格化变换即可

Page 48: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

与投影矩阵合并( 7.34 , 7.35 )

(7.36)

▪z

▪z

(7.38)

原版有错

Page 49: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

代入 (7.38) , 解 sx , 解 sy,z=znear ,zp=-1,z=zfar , zp=1 分别代入,解 sz , tz 可求得:

=(- 1 ,- 1 ,- 1)

Page 50: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

一般的投影规范化变换(将 Sz,tz代入)

• 对称棱台,观察参考点在( 0 , 0 , 0 ),观察平面在 Znear 的变换 (p42)

Page 51: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

• 为了以后得深度检测,要保留 Z 坐标,在视口变换时要加入 Z坐标• 将 z再次规范到 0 到 1 ,屏幕为 z=0, 先缩放 sz=1/2,然后平移 1

/2 ,到达屏幕( 0 , 0 , 0 )

参考 6.3.2节 (6.10)

Page 52: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

裁剪• 定义 保留观察体内的部分 ,舍弃观察体外的部分• 如图 12-40 已将观察体规格化成立方体• 透视投影 棱台• 裁剪平面 前、后、左、右、上、下

Page 53: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

视口裁剪• 三维线段裁剪

• 二端点的区域码为 000000 ,在窗内;• 否则,二区域码“与”; 结果非 000000 ,在裁剪面外(一边);• 否则,无法确定,求形体与窗口的交点 • 求交算法

max

min

max

min

max

min

max

Page 54: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

Cohen-Sutherland 算法(也可用 Cyrus-Beck 算法 梁友栋- Barsky 算法)

• 线段 P1P2,P1(x1,y1,z1), P2(x2,y2,z2)

P(u)=P1(1-u)+P2u 0 u 1≦ ≦• 将裁剪平面方程代入上式 若 0 u 1≦ ≦ ,计算交点 P(x,y,z) 若 u<0,或 u>1 , 交点 P 不在线段内

Page 55: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

三维曲面裁剪• 包含性测试 被裁剪体完全包含完全不包含相交 求解曲面与裁剪平面的联立方程

Page 56: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

用任意裁剪平面裁剪• 设裁剪平面的方程为• F(x,y)=Ax+By+Cz+D=0

• 若 p1,p2完全满足( 1 )舍弃 N·P+D<0 (舍弃内或外,可自定义)• 若 p1,p2完全满足( 2 )线段完全保留 N·P+D≥0• 否则,线段与平面相交:求交 线段的参数方程

法向量 N= (A , B , C) 平面内外侧判定: Ax+By+Cz+D< 0 ( 1 )内侧Ax+By+Cz+D> 0 ( 2 )外侧

· p2

N= ( A , B , C )

Page 57: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

例• 平面裁剪物体

Page 58: 形体表示 Objects Representation 三维建模 Modeling 物体边界 线,面 Bunddaries,Line,Surface 内部属性的说明 Attributer 建模变换 Modeling Transformation 观察变换

本章习题 1 。在世界坐标系下有一正立方体,边长为 1 。 1 ) p 点的坐标为 p(1,1,1) 。将其绕 Y 轴旋转 30°,再绕

Z 轴旋转 45° ,求:变换后 A 点的坐标; 2 )若用斜平行投影,投影线与 XOY 平面的交角为 45° ,投影线在 XOY 平面上的投影与 X 轴的夹角 φ 为 30° ,求 XOY 平面上 p 点的投影 p’ 的坐标; 3 )若将投影中心放在 (0,0,10),求 p 点到 XOY 平面上投影的坐标。2 、三维空间中一条直线段 p1p2, p1(6 , 10 , 3), p2(-3 , -5 , 2) 。裁剪体各平面分别表示为: x=z, x=-z, y=z, y=-z, z>0

1 )求此线段落在锥体内的部分。2 )若投影平面为 Zv= 1 ,求此线段在投影平面的投影。