当前位置: 首页 > news >正文

计算机图形学·24 消隐1 深度缓存-扫描线深度缓存-区间扫描线深度缓存

本文为记录专业课计算机图形学的部分笔记,参考教材为Angel的第八版交互式计算机图形学——基于WebGL 2.0的自顶向下方法。

1、我们先来考虑基本Z-Buffer算法,基本由来:颜色帧Buffer ,保存各像素颜色值;深度Z-Buffer ,保存各像素处对应物体深度值;深度Z-Buffer中的单元与颜色帧Buffer中的单元一一对应。思路:
①先将Z-Buffer中每个单元的初始值置为-1
规范视见体的最小z值,最大深度值
Z方向(指向纸面外)与视点方向(指向纸面内)相反
②当要改变某个像素的颜色值时,首先检查当前多边形的z值(-深度值)是否大于该像素原来的z值(-深度值) (保存在该像素所对应的z-Buffer的单元中)
如果z值大于,说明当前多边形更靠近观察点,用当前多边形的颜色替换像素原来的颜色;
否则说明在该像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色值不改变。

优点是简单稳定,利于硬件实现。缺点是需要一个额外的Z-Buffer及其存储空间,在每个多边形占据的每个像素处都要计算深度值(计算量大)。
2、接下来我们考虑扫描线Z-Buffer算法。由来:Z-Buffer算法中所需要的Z-Buffer容量较大,如
何克服这个缺点?可以将整个绘图区域分割成若干个小区域,然后一个区域一个区域地显示,这样Z-Buffer的单元数只要等于一个区域内像素的个数就可以了。如果将小区域取成屏幕上的扫描线,就得到了扫描线Z-Buffer算法。


3、最后我们考虑区间扫描线算法,它主要避免了逐点计算。区间扫描线算法是扫描线Z-Buffer算法的进一步改进,使得在一条扫描线上每个区间只计算一次深度值。如何做到的?把当前扫描线与各多边形在投影平面的投影的交点进行排序后(连贯性),使扫描线分为若干区间。因此,只要在区间上任一点处找出在该处z值最大的一个面,这个区间上的每一个像素就用这个面的颜色来显示。
将区间分为三类:
① 区间为空、无多边形,如下图(a)所示的区间 [0, a1],此时只要按背景属性显示即可;
② 区间中只包含一个区段,即一条交线或交线的一部分,如下图(a)中的区间[a1, a2]和[a3, a4]。此时,按该区段所在多边形的显示属性进行显示;


经过分割之后,再按照A情形处理即可。

http://www.cnnetsun.cn/news/17555.html

相关文章:

  • 计算机图形学·25 消隐2 区域子分算法-光线投射算法
  • MinerU升级终极指南:避坑技巧与实战解决方案
  • Archery数据库管理平台:5大核心功能深度解析与实战配置指南
  • 学Python有用吗?
  • Onekey终极指南:3分钟学会Steam游戏清单自动下载
  • 程序员:微软的面试流程探讨
  • 爆款!国产开源公众号AI管家ChatWiki全解析
  • 2、Linux 操作系统基础与 Bash 命令行使用指南
  • 网闸厂家排行:安全隔离技术迭代下的选型指南
  • 单北斗变形监测在水库安全中的应用与维护该如何实施?
  • Win11Debloat:终极Windows系统清理优化完整指南
  • 第一季影响设计可靠性的第一性原理(2)
  • 2025年软件工程/计算机科学与技术专业毕业设计选题推荐
  • NTFSTool:在macOS上实现NTFS磁盘完整读写的终极解决方案
  • Qwen3-Reranker-8B:重新定义文本检索效率与精度边界
  • PingFang SC woff2字体:网页中文排版的终极解决方案
  • ModernWMS开源仓库管理系统终极配置与功能详解
  • MPV播放器macOS硬件解码色彩异常终极修复指南
  • Flink自定义函数实战:从入门到精通的完整开发手册
  • 哔哩哔哩漫画下载器技术指南
  • 目标检测数据集 - 穿着服饰检测数据集下载
  • Windows系统终极清理工具:快速免费释放C盘空间
  • Spring AOP场景3——接口防抖(附带源码)
  • 黑客技术水深!普通人不要随便碰
  • AI建议的C++基础入门顺序
  • 35、使用 Ansible 部署脚本化服务器环境
  • 13、文件操作与命令全解析
  • 第32课 PCB布局的常用操作命令介绍
  • 终极修复指南:彻底解决Atmosphere固件2168-0002启动错误
  • 第一章——办公自动化之Word报告自动生成:解放双手,高效创作