本文概述
- 计算机图形学中最具挑战性的问题之一是从实体对象的图像中删除隐藏的部分。
- 在现实生活中, 这些物体的不透明材质会阻挡来自隐藏部分的光线, 并阻止我们看到它们。
- 在计算机生成中, 当将对象投影到屏幕坐标系上时不会发生这种自动消除。
- 而是显示每个对象的所有部分, 包括许多不可见的部分。
- 要删除这些部分以创建更逼真的图像, 我们必须对对象集应用隐藏线或隐藏表面算法。
- 该算法在不同种类的场景模型上运行, 生成各种形式的输出或迎合不同复杂度的图像。
- 所有对象都使用某种形式的几何排序将对象的可见部分与隐藏的部分区分开。
- 就像使用字母排序来区分靠近字母开头的单词和靠近结尾的单词一样。
- 几何排序可定位位于观察者附近并因此可见的对象。
- 隐藏线和隐藏表面算法利用各种形式的相干性来减少生成图像所需的计算。
- 不同类型的相干性与图像中不同形式的顺序或规则性相关。
- 出现扫描线相干性的原因是, 光栅图像中扫描线的显示通常与先前扫描线的显示非常相似。
- 旨在显示运动的一系列图像中的帧相干性可以识别出连续的帧非常相似。
- 对象一致性是由不同对象之间或相同对象的各个部分之间的关系引起的。
- 通常将隐藏表面算法设计为利用这些相干特性中的一个或多个来提高效率。
- 隐藏表面算法与二维扫描转换非常相似。
隐藏表面检测算法的类型
- 对象空间方法
- 图像空间方法
对象空间方法:在此方法中, 比较对象的各个部分。比较之后, 确定可见, 不可见或几乎不可见的表面。这些方法通常决定可见表面。在线框模型中, 这些用于确定可见线。因此, 这些算法基于行而不是基于表面。该方法通过确定其视线被其他对象遮挡的对象的各个部分进行处理, 并以相同的颜色绘制这些部分。
图像空间方法:在此确定各种像素的位置。它用于定位可见表面而不是可见线。检测每个点的可见性。如果可见点, 则像素为开, 否则为关。因此, 确定了由投影仪穿过像素刺入的靠近观看者的物体。画出的像素是适当的颜色。
这些方法也称为可见表面测定。这些方法在计算机上的实现需要大量的处理时间和计算机的处理能力。
图像空间方法需要更多的计算。每个对象都明确定义。还确定每个物体表面的可见性。
区分对象空间和图像空间方法
对象空间 | 影像空间 |
---|---|
1.图像空间是基于对象的。它专注于场景中对象之间的几何关系。 | 1.这是一种基于像素的方法。它与最终图像有关, 即每个栅格像素中可见的图像。 |
2.在此确定表面可见性。 | 2.在此确定线可见性或点可见性。 |
3.它以定义每个对象的精度执行, 不考虑分辨率。 | 3.使用显示设备的分辨率执行。 |
4.计算不是基于显示器的分辨率, 因此可以轻松调整对象的变化。 | 4.计算基于分辨率, 因此更改难以调整。 |
5.这些是为矢量图形系统开发的。 | 5.这些是为光栅设备开发的。 |
6.基于对象的算法对连续的对象数据进行操作。 | 6.这些对对象数据进行操作。 |
7.用于对象方法的矢量显示具有较大的地址空间。 | 7.用于图像空间方法的栅格系统的地址空间有限。 |
8.对象精度用于需要速度的应用。 | 8.适用于需要精度的应用。 |
9.如果要放大图像, 则需要进行大量计算。 | 9.可以放大图像而不会损失准确性。 |
10.如果场景中的对象数量增加, 则计算时间也会增加。 | 10.在这种方法中, 复杂性随着可见部分的复杂性而增加。 |
对象相似度与图像空间方法
在两种方法分类中, 都使用了对单个线条的深度比较, 将曲面与曲面之间的距离作为对象。
选择或设计隐藏表面算法的注意事项:采取以下三个注意事项:
- 排序
- 连贯性
- 机
排序:所有曲面都分为两类, 即可见和不可见。像素会相应着色。有几种排序算法可用, 即
- 气泡排序
- 贝壳类
- 快速分类
- 树排序
- 基数排序
不同的排序算法应用于不同的隐藏表面算法。使用x和y, z坐标对对象进行排序。通常, z坐标用于排序。排序算法的效率会影响隐藏表面去除算法。为了对复杂的场景或数百个多边形进行排序, 使用了复杂的排序, 即快速排序, 树排序, 基数排序。
对于简单的对象选择, 插入, 气泡排序。
连贯性
它用于利用场景表面的恒定值。它基于场景中存在多少规律性。当我们从一个对象的一个多边形移到另一个具有相同对象颜色的多边形时, 剪切将保持不变。
连贯性的类型
- 边缘一致性
- 对象连贯
- 脸部连贯
- 区域连贯
- 深度连贯
- 扫描线相干
- 帧连贯
- 隐含边缘一致性
1.边缘连贯性:边缘越过另一边缘或也穿透可见边缘时, 其可见性会发生变化。
2.对象连贯性:每个对象被认为是彼此独立的。在对象中, 使用对象而不是边缘或顶点进行相干比较。如果A对象距离对象B更远, 则无需比较边缘和面。
3.人脸连贯性:与图像尺寸相比, 通常较小的人脸或多边形。
4.区域一致性:用于将同一可见面所覆盖的像素组。
5.深度连贯性:各种多边形的位置分隔了深度的基础。计算一个点处的表面深度, 通常可以通过一个简单的差分方程来确定其余表面上的点深度。
6.扫描线相干性:先用一条扫描线然后再用第二条扫描线扫描对象。第一行的截距。
7.帧连贯性:用于动画对象。当图像从一帧到另一帧几乎没有变化时使用。
8.隐含边缘连贯性:如果一个面穿透另一个面, 则可以从两个相交点确定相交线。
用于隐藏线表面检测的算法
- 背面去除算法
- Z缓冲区算法
- 画家算法
- 扫描线算法
- 细分算法
- 浮动地平线算法
评论前必须登录!
注册