背面消除算法

2024 年 8 月 28 日 | 阅读 2 分钟

它用于仅绘制面向相机的表面。背面上的对象是不可见的。 如果使用平行投影,此方法将从场景中删除 50% 的多边形。 如果使用透视投影,则将删除超过 50% 的不可见区域。 对象越靠近投影中心,将从背面删除的多边形数量就越多。

它适用于单个对象。 它不考虑各个对象之间的交互。 许多多边形被正面遮挡,尽管它们更靠近观察者,因此使用背面剔除算法来移除此类面。

当进行投影时,从投影中心穿过观察屏幕到对象部分的任何投影光线都会在两个点上击中对象,一个是可见的正面,另一个是不可见的背面。

该算法充当另一个算法的预处理步骤。 背面算法可以用几何方式表示。 每个多边形都有几个顶点。 所有顶点都按顺时针方向编号。 法线M1由任意两个连续边向量的叉积生成。 M1表示垂直于面并从多面体表面向外指向的向量。

                          N1=(v2-v1 )(v3-v2)
                          如果         N1.P≥0 可见
                          N1.P<0 不可见

优点

  1. 这是一种简单直接的方法。
  2. 它减少了数据库的大小,因为不需要存储数据库中的所有表面,只需存储可见表面即可。

背面剔除算法

对场景中的所有多边形重复以下步骤。

  1. 以顺时针方向对所有多边形进行编号,即。
                  v1 v2 v3.....vz
  2. 计算法向量,即 N1
                  N1=(v2-v1 )*(v3-v2)
  3. 考虑投影仪 P,它是来自任何顶点的投影
                  计算点积
                  点积=N.P
  4. 测试并绘制表面是否可见。
                  如果 点积 ≥ 0 那么
                表面可见
                否则
                        不可见

下一个主题Z-Buffer 算法