学习目标:
- 明白可见表面检测的目的
- 知道back-face detection 背面剔除方法
- 知道深度缓冲(z-buffer)方法
- 知道光线追踪(ray-casting)方法
- 能对这种技术opengl编程
可见表面检测
又叫Hidden Surface Elimination隐面消除,只有可见表面应该被栅格化。
当我们查看包含非透明对象和表面的图片时,我们无法从靠近眼睛的对象后面看到那些对象。我们必须删除这些隐藏的表面,以获得逼真的屏幕图像。识别和去除这些表面称为隐面问题。
三种方法
- Back-face detection (also called Culling)
- Z buffer (also called depth buffer)
- Ray Casting
1、Back-face detection 背面剔除
- 简单快速
- 一般在更复杂可见性测试之前用作初步步骤
- 在进一步考虑前消除了大约50%的面
- 如下图,N⋅V < 0 则为背面:
- 有时,v被VPN取代,可以更快地进行近似处理
- 然而,这种方法不能处理凹形物体和部分被重叠的物体