第10讲可见面判别算法
第10讲 可见面判别算法
引子一可见面判别 (Visible-Surface detection, Culling) ■作用:在绘制时消除场景中不可见的线和面,获 得真实感的绘制。→深度关系 口线:近亮、远暗/不显示/虚线显示/不同颜色显示 口面:屏幕象素仅包含前向面的颜色 ■场合1:对象指定位置视图投影到显示设备 口3Dto2D→产生二义型 ■场合2:复杂场景 口3D物体本身的遮挡; 口复杂场景中物体相互之间的遮挡;
◼ 作用:在绘制时消除场景中不可见的线和面,获 得真实感的绘制。→ 深度关系 线:近亮、远暗/不显示/虚线显示/不同颜色显示 面:屏幕象素仅包含前向面的颜色 ◼ 场合1:对象指定位置视图投影到显示设备 3D to 2D→产生二义型 ◼ 场合2:复杂场景 3D物体本身的遮挡; 复杂场景中物体相互之间的遮挡; 引子——可见面判别 (Visible-surface detection, Culling)
注意! 坐标系不是顺序产生的 而是一开始就设定好,然后才能 计算出相应的转换关系(参考刚 才的0 penGL显示框架) 3D建模 口建模坐标系 ->单个对象位置、方向变换,多个对象的装配 口世界坐标系 3D渲染 光照计算,纹理坐标计算 ->->观察变换 3D→2D 口观察坐标系(投影变换) 观察转换 其它处理 ->裁剪, 消隐,透明,雾气(在像空间和物空间和扫描转换同步或先后) 设备坐标扫描转换为二维像素坐标,定下每个像素颜色 2D显示 口设备(屏幕)坐标系
建模坐标系 -> ->单个对象位置、方向变换,多个对象的装配 世界坐标系 -> ->光照计算,纹理坐标计算 -> ->观察变换 观察坐标系(投影变换) -> ->裁剪, -> -> 消隐,透明,雾气(在像空间和物空间,和扫描转换同步或先后) -> ->设备坐标扫描转换为二维像素坐标, 定下每个像素颜色 设备(屏幕)坐标系 3D 建模 3D→2D 观察转换 其它处理 注意! – 坐标系不是顺序产生的 – 而是一开始就设定好, 然后才能 计算出相应的转换关系(参考刚 才的OpenGL显示框架) 2D 显示 3D 渲染
两大类可见面判别方法 物空间算法 object-space 口对象级别——直接对物体几何模型进行处理,将场景 中的各物体和物体上的各个组成部件进行比较和判别 像空间算法 Image-space 口象素级别——对物体的投影结果进行处理,在投影平 面(视口)上对每个像素判断其可见性(所属可见面) 提高效率:深度排序、连贯性
两大类可见面判别方法 ◼ 物空间算法 object-space 对象级别——直接对物体几何模型进行处理,将场景 中的各物体和物体上的各个组成部件进行比较和判别 ◼ 像空间算法 Image-space 象素级别——对物体的投影结果进行处理,在投影平 面(视口)上对每个像素判断其可见性(所属可见面) 提高效率:深度排序、连贯性
N=(A, B, C) 基本方法:后向面判别物空间 vIew Ax+ By+Cz+d0 VNSO ▲N (A, B, C) VN=O v vIew 0 VN<o v
基本方法:后向面判别 V N V N V N VN>0 VN=0 VN<0 物空间
可见面判别算法的细分 ■后向面判断:通常可用来消除一半左右的隐藏面 口完全适用:凸多面体(前向面可见,后向面不可见) 口不足之处:凹多面体或者其它复杂三维对象或者多对 象场景中,前向面也会部分被其它面遮挡 ■可见面判别算法分类 1.深度缓存像空间 2.A缓存像空间 3扫描线像空间 4.深度排序物空间 5.BSP树物空间 6.区域细分像空间+物空间完成深度排序 7.八叉树物空间 8.光线投射物空间
◼ 后向面判断:通常可用来消除一半左右的隐藏面 完全适用:凸多面体(前向面可见,后向面不可见) 不足之处:凹多面体或者其它复杂三维对象或者多对 象场景中,前向面也会部分被其它面遮挡 ◼ 可见面判别算法分类 1. 深度缓存 2. A缓存 3. 扫描线 4. 深度排序 5. BSP树 6. 区域细分 7. 八叉树 8. 光线投射 可见面判别算法的细分 物空间 像空间 像空间 像空间 物空间 像空间 + 物空间完成深度排序 物空间 物空间
像空间 1.深度缓存算法 depth- buffer method ■在投影面上按每一象素位置,比较场景中所有面的深度 口深度缓存存储投影面上各象素对应的深度值 口刷新缓存存储投影面上各象素的属性值 View plane (x,y)
1.深度缓存算法 depth-buffer method ◼ 在投影面上按每一象素位置,比较场景中所有面的深度 深度缓存 存储投影面上各象素对应的深度值 刷新缓存 存储投影面上各象素的属性值 像空间 x y
12345678910121416182022 钮扭
- - - - - - - - - - - - - - - - z 1 2 3 4 5 6 7 8 9 10 12 14 16 18 20 22 y
12345678910121416182022
z --------------- 1 2 3 4 5 6 7 8 9 10 12 14 16 18 20 22 10 y
12345678910121416182022 击任任
9 10 z 9 1 2 3 4 5 6 7 8 9 10 12 14 16 18 20 22 y