高程数字模型之地表可视化技术之拾取与缓存

高程数字模型之地表可视化技术之拾取与缓存


发布日期: 2016-06-01 更新日期: 2016-06-01 编辑:zhangxiang 浏览次数: 3879

标签:

摘要: 拾取 三维应用程序中,拾取算法的思想很简单:得到鼠标点击处的屏幕坐标,通过投影矩阵和观察矩阵把该坐标转换为通过视点和鼠标点击处的一条射入场景的光线,该光线如果与场景模型的三角形相交,则获取该相交三角形的信息。 缓存 一个设备对象至少包含两个显示缓存区:当前缓...

拾取

三维应用程序中,拾取算法的思想很简单:得到鼠标点击处的屏幕坐标,通过投影矩阵和观察矩阵把该坐标转换为通过视点和鼠标点击处的一条射入场景的光线,该光线如果与场景模型的三角形相交,则获取该相交三角形的信息。

缓存

一个设备对象至少包含两个显示缓存区:当前缓存区(FrontBuffer)和后备缓存区(BackBuffer)。当我们渲染图形时,实际上并不是直接在窗口上输出,而是在后备缓存区上绘图。渲染完毕后,交换两个缓存区,使原来的后备缓存区变成当前缓存区,从而实现窗口刷新,如上图所示。快速重复此过程,就会在屏幕上形成连续的动画。

Z缓存

在3D环境中,每个像素中会利用一组数据资料用来定义像素在显示时的纵深充(即Z轴座值)在ZBUFFER所用的位数越高,则代表该显示卡所提供的物体纵深感也越精确。一般的3D加速卡仅能支持到16位或24位的ZBUFFER,对于普通的3D模型而言也算是足够了,不过高级的3D卡更可支持到32位的ZBUFFER。对一个含有很多物体连接的较复杂3D模型而言,能拥有较多位数来表现深度感是相当重要的事情。例如一台500公尺长的飞机,其管线之间仅相距5公分的距离,2-bitZBUFFER将无法提供足够的精确性让我们从某些视角能清楚地辨别二条管线的前后顺序。当显示卡尝试要显示这二条管线时,它会试着一次将二个同时显示出来,因而产生令人讨厌的闪烁现象。若使用的32位的ZBUFFER就能避免闪烁现象发生。

在3D中,使用深度缓存区(DepthBuffer)来进行消隐处理(隐藏面消除),以确保实体被遮挡的部分不被显示。Z缓存是最常用的一种深度缓存,它因为用Z坐标作为判断深度(远近)的依据而得名。

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org