数控仿真的快速消隐算法.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数控仿真的快速消隐算法 1. 前言 实时动态仿真需要很快的显示速度。消隐计算所耗费的时 间,在显示真实感图形过程中占有相当大的比重。 消隐问题又是 计算机图形学中一个十分重要的内容, 至今仍然在不断研究和完 善之中。提出的消隐算法很多,如画家算法, Z 缓存算法,扫描 线算法,等等 [1] ,但是这些消隐算法往往非常复杂。为特殊的 应用,人们也常常开发一些具有针对性的专用消隐算法 [2] ,[3] 。 我们研究了数控仿真的图形显示的特性, 发现通用的消隐算法用 起来,效率相对较低,难以达到实时动态真实感图形显示的要求。 本文根据数控仿真的消隐和图形显示的特点, 充分利用图形显示 中的缓存技术 [4] ,提出一种用于数控仿真的快速消隐算法。 2.通用的消隐算法 生成真实感图形, 消隐是必须解决的问题之一。 因此消隐是 计算机图形学的重要研究内容之一。 至今提出了非常多的消隐算 法如:深度缓存算法又称 Z 缓存算法、扫描线算法、多边形区域 排序算法、画家算法,等等。这些算法各有优缺点,因 OpenGL 采用的是深度缓存算法, 所有这里着重介绍深度缓存算法。 如图 1,在屏幕坐标系中, Z 轴的方向为观察方向。屏幕上任意一像 素点(i , j)作平行于Z轴的射线R,与物体表面上的多边形相 交于pl点和p2点。pl和p2为多边形屏幕上对应像素(i,j) 的点,pl和p2的Z值称为该点的深度值。 图1 深度缓存消隐 深度缓存法比较pl和p2的Z值,将最小的Z值存入深度缓 存,最小的Z值所对应的多边形颜色存入显示器的颜色缓存。 其 算法步骤如下: 初时化深度缓存ZB和颜色缓存FB,使ZB( i,j)=机器最 大值,FB(i,j)二背景颜色,FOR j=1,n,FOR k=1, m,令 Zi j=机器最大值,判断点(i,j)是否在多边形P在XOY面上的投 影多边形内;若是,则计算多边形 P在点(i,j )处的深度数值 Zij ;比较Zij与ZB (i,j )的大小,若ZijvZB( i,j ),则令 ZB (i,j)=Zij,FB (i,j)=多边形 P 的颜色。 深度缓存法是图像空间的消隐算法, 计算简单, 便于硬件实 现,速度快。虽然存在占用大量存储单元的缺点,但是,随着计 算机硬件技术的不断提高, 一些配置较高的计算机中除了帧缓存 外,还带有用于消隐的深度缓存, 因而占用大量存储单元的缺点 基本得到解决,所以深度缓存算法作为 Ope nGL图形系统采用的 消隐算法,得到了广泛的应用。 3.Ope nGL的模板缓存和深度缓存 屏幕是由象素的矩形阵列所组成, 每个象素在图像中显示一 个小方格的颜色。全部象素的存储器称为缓存( buffer )。存储 每个象素的显示颜色的缓存称为颜色缓存。 空间几何元素通过一 系列的变换在屏幕上显示出来, 屏幕上一个象素对应空间几何元 素上被显示的点。 存储象素对应空间几何元素上被显示的点的深 度信息的缓存称为深度缓存。 为了更好地控制空间几何元素的显 示,又增加了模板缓存。 深度缓存存储每个象素的深度值。这个深度值是利用眼睛 (观测点) 的距离来度量的, 所以有较大深度缓存数值的空间点 被较小深度缓存数值的点所覆盖。 在显示每一个象素前比较该象 素和深度缓存中原先象素的深度值, 如果当前象素的深度值小于 原象素的深度缓存数值, 那么显示当前象素, 并且用当前象素的 深度缓存数值代替原先象素的深度缓存数值。 这样深度缓存数值 大的象素不被显示。 模板缓存是将绘图局限于屏幕的某些部分。 如同我们用卡纸 模板来简化和加快喷涂标语或图案一样。 例如,要绘制一个由内 向外从行进中汽车窗口所看见的变动的场景, 因为汽车内部没有 变化,可以利用模板缓存使得显示的改变仅仅发生在窗口范围 内。这样可以大大加快显示的速度。方法是激活模板缓存,并设 置全屏幕模板缓存内容为 0。一次绘制汽车内部图像并且改变所 绘制范围内模板缓存为 1,以后每次仅仅显示汽车外部变化的场 景,并且绘图时检查模板缓存内容,只有在模板缓存内容小于 1 的范围才发生绘图。 4.快速局部消隐算法 数控铣削的加工代码少的有数百上千行, 多的则上万行甚至 数十万行代码, 铣削加工的零件形状也多种多样, 有些形状相当 复杂。用普通的消隐算法很难达到仿真显示所需要的运行速度。 数控加工过程仿真显示是动态显示刀具运动和毛坯的材料去除, 每一次切削, 显示图像仅仅是刀具切削的局部发生了变化, 所以 特别适合用局部刷新的方式进行真实感图形的显示。 本文提出的 利用OpenGL显示缓存、深度缓存和模板缓存机制的消隐算法是 一种适应局部刷新显示要求的快速消隐算法。 具体算法描述如下: 1. 用模板为 0画毛坯。 2. 启动深度缓存 检验,画刀具运动包络体。设置颜色缓存的内容

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档