计算机图形学-消隐算法

什么是消隐

全称是消除隐藏面或消除隐藏线
在这里插入图片描述
上图中绘制不同的线条会有不同的效果
消隐主要是消除二义性 在绘制时消除被遮挡不可见的线或者面

线消隐

消隐对象是物体上的边 消除物体上不可见的边

面消隐

消隐对象是物体上的面 消除物体上不可见的面

Roberts算法

每个物体先对自身考虑 找到被遮挡的面和线(自消隐)
再将没有被消除的边与其他物体进行比较 留下最终完全可见的部分
如果物体之间有贯穿 则要确定新的显示面 显示边
但是他主要考虑的都是凸面体

光线投射算法

求光线与场景的交点 这个光线就是视线
就是将这条线接触到的像素做一个排序 在前面的像素自然就是被看到的
缺点就是需要求交点 计算量特别大

Z-Buffer消隐算法(深度缓冲器算法)

简单来说就是先在Z-Buffer缓冲器中存储最小的深度值 屏幕上每一个像素点都有一个深度值 然后再将各多边形的深度值与其投影在屏幕上像素点的深度值进行比较 如果大于则保存该深度值 则说明该多边形的这一点是可以被看到的 那么就用该点的颜色值作为屏幕上该点的像素值
在这里插入图片描述

缺点

占用空间太大 因为要开辟一个和屏幕分辨率一样大的数组来存储z值
没有利用图形的相关性和连续性

相较于空间问题的改进

在这里插入图片描述
这个改进和上面那个方法的区别主要是
1.上面那个方法是遍历每个多边形内的像素和该像素在屏幕上的该位置的像素进行比较 所以需要屏幕上每个位置都需要存储一个z值
该方法是遍历屏幕上每个像素 将该点和多边形进行比较
2.不再创建一个和屏幕分辨率一样大的数组来存储z值 而是只用一个变量来存储z值

流程

从每屏幕左上角开始逐像素的 先让该像素和每个多边形进行用该点和每个多边形的每个像素进行比较了)比较(如果不进行比较就需要) 如果在多边形内 则和多边形内该点的z值进行比较 然后如果多边形的该点的z值大于原来的z值 则计算该点的光照等作为该点的颜色

缺点

需要计算是否在多边形内

关于计算多边形上某个(x,y)的深度值

首先我们是知道多边形每个顶点的深度值 然后通过平面方程求
如 平面方程为 ax+by+cz+d=0
depth = (ai + bj+d)/c

关于计算某点与多边形是否包含

射线法

在这里插入图片描述
在这里插入图片描述

弧长法

在这里插入图片描述
第一张图就是0 第二张图就是2π
代数和为0就在多边形外部
代数和为2π就在多边形内部
代数和为π就在多边形边上
缺点是计算弧长不容易

弧长累加法

就是上面方法的改进 以点p为坐标轴原点建立坐标系 同一个象限认为0 跨过一个象限就为π/2 跨过两个象限就为π以此类推
在这里插入图片描述

区间扫描线算法

在这里插入图片描述
红色的就是扫描线 求出扫描线和多边形的交点 如果计算出两个区间之间的一个像素为什么颜色 则该区间的其他像素都是这个颜色了

如果区间上没有多边形则显示背景色 如a4 a5
如果区间上只有一个多边形则显示该多边形颜色 如a1 a2
如果区间上右多个多边形则需要进行深度测试 判断那个多边形课件 如a6 a7

优点

将像素计算改为逐段计算

Warnock算法(区域子分割算法)

主要是采用了分治的方法和堆栈的数据结构

过程

把物体投影到窗口上 然后进行递归分割窗口(例如分成四个小窗口) 直到窗口内目标足够简单到可以直接显示为止
如果窗口分割到只有一个像素那么大了 还有两个以上物体则此时不必再分割 只取窗口内最近的颜色或者可见面的平均颜色作为像素的值
在这里插入图片描述

什么是足够简单可以直接绘制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
判断方法就是计算物体包围盒 然后与窗口进行比较

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 计算机图形学消隐是指在计算机图形学中,为了避免多个物体在同一位置上重叠显示而产生的遮挡现象,需要对这些物体进行处理,使图像显示更加真实和清晰。 具体来说,消隐技术可以分为物理消隐算法消隐两种方法。 物理消隐主要通过硬件方面的处理来实现,如使用深度缓冲区(Depth Buffer)来存储像素的深度信息,当物体被绘制时,会与缓冲区中的深度信息进行比较,如果当前物体的深度值小于缓冲区中对应像素的深度值,则将该像素绘制出来,否则进行遮挡。 算法消隐则是通过计算机算法来实现,常见的算法有扫描线算法、边缘表算法和光线追踪等。扫描线算法通过扫描每一行像素,检查每个像素与物体的交点,来确定需要绘制的像素。边缘表算法则是通过记录轮廓边缘的交点信息,进行边缘的连接和填充。光线追踪是通过跟踪光线的路径,计算出物体表面各点的颜色和亮度值,从而确定需要显示的图像。 计算机图形学消隐对于实现真实感和视觉效果至关重要,可以使得图像在显示过程中更加准确和逼真。不同的消隐方法适用于不同的应用场景,在实际应用中需要根据需求和性能进行选择和优化。 ### 回答2: 计算机图形学消隐是指对于三维场景中的隐藏面或者隐藏线的处理技术,以实现在计算机屏幕上绘制逼真的二维图像。在三维场景中,物体之间可能会相互遮挡,如何准确地确定哪些物体显示在前面,哪些物体被其他物体遮挡,是图形学中一个重要的问题。 消隐算法通常根据场景中物体的深度信息来进行处理。其中,深度缓冲是一种常用的技术。深度缓冲是一张与屏幕大小相同的二维数组,用于记录每个像素的深度值。在绘制三维物体时,会根据物体的深度信息将像素的深度值存储到对应位置的深度缓冲中。当绘制下一个物体时,会对比当前像素的深度值与深度缓冲中对应位置的深度值,若当前像素的深度值较小,则将其存储到深度缓冲中,并覆盖之前的像素值。 除了深度缓冲,还有其他的消隐算法,如后背面消隐和边界绘制算法。后背面消隐算法基于物体的投影面的法向量来判断物体是面朝观察者还是背对观察者,只绘制面朝观察者的部分。而边界绘制算法则根据物体的边界信息来决定哪些像素需要绘制,减少不必要的绘制过程。 计算机图形学消隐的概念是为了解决物体在三维场景中的遮挡问题,使得在计算机屏幕上呈现出逼真的二维图像。通过合理的消隐算法,可以提高图形渲染的效率和真实感,使得观察者可以看到视觉上连续和逼真的场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值