第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+d<0 vIew N>0 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 物空间