news 2026/3/4 3:57:09

计算机图形学·25 消隐2 区域子分算法-光线投射算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计算机图形学·25 消隐2 区域子分算法-光线投射算法

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

1、区域子分算法的由来:①Z缓存器算法,将像素孤立来考虑,未利用相邻像素之间存在的属性的连贯性,即区域的连贯性,所以算法效率不高;②区间扫描线Z缓存器算法仅利用了扫描线的连贯性。实际上,可见多边形至少覆盖了绘图窗内的一块区域,如果能将这类区域找出来,则避免了在每个像素处计算深度值,消隐问题也就解决了。
基本思路:
首先,将场景中的多边形投影到绘图窗口内(假设它为边长为k的正方形)
然后,判断窗口/多边形关系是否足够简单:
若是足够简单,则按简单关系来处理,并且算法结束;
否则将窗口进一步分为四块(左上,右上,左下,右下)。对此四个小窗口重复上述过程,直到窗口仅为一个像素大小。
此时可能有多个多边形覆盖了该像素,计算它们的深度值,以最靠近观察点的颜色显示该像素即可。

何谓“窗口/多边形关系足够简单?”
存在下列情况之一,即可称为窗口/多边形关系足够简单:
①窗口为空,即多边形与窗口的关系是分离的——取背景色,图中(a)
②窗口仅内含一个多边形,或者一个多边形与窗口相交——此时先对多边形投影进行裁剪,再对裁剪结果进行分别上色,图中(b)和(c)
③有一个多边形的投影包围了窗口,并且它是最靠近观察点的——,以该多边形颜色上色,图中(d)

如何判别多边形与窗口的分离与包围关系?可以使用例如编码方法——区域编码:多边形顶点的编码/多边形边的编码/多边形的编码。
2、光线投射算法(Ray casting)基本思路:
①将通过绘图窗口内每一个像素的投影线与场景中的所有多边形求交。
②如果有交点,用深度值z最大 (视点最近/小的) 的交点所属的多边形的颜色显示相应的像素;
③如果没有交点,说明没有多边形的投影覆盖此像素,用背景色显示即可。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/2 13:49:05

Windows系统文件spinf.dll丢失损坏问题 下载修复

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/3/1 14:48:43

[Agent] ACE(Agentic Context Engineering)和Dynamic Cheatsheet学习笔记

x00 概述前几天,斯坦福的ACE(Agentic Context Engineering)非常火。只看论文感觉还是理解不深,但是该论文并没有释放对应的源码。不过,ACE是基于Dynamic Cheatsheet完成,且两篇论文有共同作者,于…

作者头像 李华
网站建设 2026/3/2 22:11:36

网络安全和信息安全有什么区别?

网络安全和信息安全是一个专业吗?很多人会把网络安全和信息安全混为一谈,甚至误以为是同一专业,但二者其实是包含与被包含的关系,接下来通过以下内容为大家详细介绍一下。‌网络安全和信息安全不是同一个专业,但两者密切相关且存…

作者头像 李华
网站建设 2026/3/2 19:34:51

Linux如何测试端口开放情况?

在Linux运维中,测试端口开放状态是必备技能——排查网络故障、验证服务部署、检查防火墙规则都要用到。那么Linux怎么测试端口是否开放?接下来请看下文。查本机端口是否在监听用ss或netstat查本地有没有程序正在等连接:ss -tuln——显示所有TCP/UDP监听…

作者头像 李华
网站建设 2026/3/3 0:32:16

Python和C语言有什么区别?

新手入门编程,绕不开Python和C语言的选择 —— 二者难度、学习路径和应用场景天差地别。Python语法简洁像伪代码,C语言贴近底层,那么Python和C语言哪个好学?一起来探讨一下吧。Python和C语言哪个好学?如果你想系统的学习,并且想…

作者头像 李华
网站建设 2026/3/3 5:47:35

《零基础学 PHP:从入门到实战》·PHP Web 安全开发核心技术与攻防实战演练-威胁认知与安全开发生命周期

第 1 章:Web 安全基石——威胁认知与安全开发生命周期 章节介绍 欢迎开启"筑牢防线:PHP Web 安全开发核心技术与攻防实战演练"的第一章.本章将作为您 Web 安全知识体系的奠基石.在急于编写防护代码之前,我们必须首先建立正确的安全世界观:理解我们所面临的威胁是什…

作者头像 李华