船舶操纵模拟器视景系统中望远镜功能的实现

V ol. 17 No. 9系统仿真学报

Sept. 2005JOURNAL OF SYSTEM SIMULATION? 2295 ?

船舶操纵模拟器视景系统中望远镜功能的实现

孙腾达1,2,3,尹勇4,金一丞4

(1中国科学院地理科学与资源研究所资源与环境信息系统国家重点实验室, 北京 100101; 2中国科学院研究生院, 北京 100039;

3集美大学, 福建厦门 361021; 4大连海事大学, 辽宁大连 116026)

摘要:针对船舶操纵模拟器视景系统中的望远镜的实现的两个重要问题,提出了利用Z缓存完

成窗口裁剪具体的实现方法,并对视景系统中的LOD物体的显示进行了理论分析,进而给出具体

的算法。上述两种方法应用到船舶操纵模拟器视景系统中,获得令人满意的效果。

关键词:操纵模拟器;视景;望远镜;LOD

文章编号:1004-731X(2005)09-2295-02中图分类号:TP391.9 文献标识码:A

Realization of Telescope in Visual System of Ship Handling Simulator

SUN Teng-da1,2,3, YIN Yong4, JIN Yi-cheng4

(1 State Key Laboratory of Resource & Environmental Information System, Institute of Geographic Science & Natural Resources Research, Chinese

Academy of Sciences, Beijing 100101, China; 2 Graduate School of Chinese Academy of Sciences, Beijing 100039, China;

3 Jimei University, Xiamen 361021, China;

4 Dalian Maritime University, Dalian 116026, China)

Abstract: There are two important issues in the realization of telescope function in the visual system of ship handling simulator: telescope window clips and the display of LOD objects. A method using Z buffer to achieve window clips was proposed. Meanwhile, the display of LOD objects in the visual system was discussed in details before the algorithm was presented.

Key words: ship handling simulator; visual system; telescope; LOD

引言

望远镜是船舶航行值班时经常使用的设备。望远镜最基本的功能是放大功能。通过望远镜,船舶驾驶员可以获得指导船舶航行、避碰方面更加丰富的信息。根据挪威船级社(DNV)提出的船舶操纵模拟器认证标准(Standard for Certification of Maritime Simulator System),对于全功能船舶操纵模拟器(Full Mission Ship Handling Simulator),视景系统应能够提供望远镜系统供观察之用[1]。因此,在船舶操纵模拟器视景系统中实现望远镜功能是全功能船舶操纵模拟器的基本要求。

1 视景系统中望远镜的实现

1.1 望远镜功能实现原理分析

对望远镜放大功能的模拟,可以通过改变镜头的焦距来实现。但在视景系统中,更多地以视场角的形式来定义视见体,因此,可以通过改变视见体视场角的大小来获得与调整望远镜焦距同样的效果。这种方法更加方便、更加直接、更加容易实现。

在OpenGL下,视景系统视见体的定义可以通过定义其

收稿日期:2004-06-01 修回日期:2005-06-21

作者简介:孙腾达(1978-),男,福建惠安人,博士生,研究方向为计算机仿真、虚拟现实技术和地理信息系统;尹勇(1969-), 男, 湖北郧县人, 博士, 研究方向为动态仿真与控制、计算机图形图象技术和虚拟现

实技术;金一丞(1944-),男,浙江上虞人,教授,博士生导师,研究方向为交通信息工程与控制、动态仿真、计算机图形技术和虚拟现实技术。垂直裁剪面、水平裁剪面以及近深度裁剪面和远深度裁剪面的坐标值来实现,也可以通过定义视场角的大小、近深度裁剪面和远深度裁剪面的坐标值来获得。这两种方法使用的定义参数之间,存在一定的函数关系。

假设视景系统中望远镜的放大倍数为M,α、β为视景系统定义的视见体水平、垂直视场角的大小,对应的α′、β′为获得M倍放大效果重新定义的视见体的水平、垂直视场角的大小,则M可用公式(1)来表示:

(/2)(/2)

(/2)(/2)

ctg ctg

M

ctg ctg

αβ

αβ

′′

==(1) 1.2 望远镜的实现

望远镜的具体实现包括望远镜在视景中的实现和望远镜功能的实现。望远镜在视景中的实现要求当启用望远镜功能时,望远镜的视景模型应当显示在视景系统的相应位置;望远镜功能的实现是指视景系统对处在望远镜区域范围内的景物进行放大或者缩小以及调整望远镜观察方向等功能的实现。

1.2.1 望远镜在视景的实现

在航海实践中,当船舶驾驶员使用望远镜进行值班了望时,视野中的景物被类似两个相交的圆的区域范围包围着。这两个相交的圆定义了望远镜的观察范围。就象透视投影变换定义的视见体一样,望远镜对处在观察范围以外的景物进行“裁剪”不显示。望远镜的这种“裁剪”,由于定义的观察范围类似圆形,故可认为这是一种圆形窗口的裁剪。

圆形窗口的裁剪在工业产品的设计中经常用到。文献[2]和文献[3]提出把直线段的参数方程代入窗口圆的代数方程,通过分析一元二次方程组的求根判别式及解的范围来进行裁剪。这种算法在直线段与圆相交时,算法效率较高。但在直线段与窗口无交点时,仍需求解一元二次方程的根。在文献[4]中,提出了一种利用圆心到直线段所在直线的距离,直线段相对从圆心向它所引的主射线的位置关系及圆心到直线两端点的距离,即可迅速判断直线段与圆形窗口的位置关系。当直线段与圆形窗口相交时,用旋转矢量法求出待交交点[4]。

望远镜圆形窗口的裁剪,如果采用上述的几种裁剪方法,第一,必须已知望远镜圆形窗口的平面方程;第二,求交的问题将很难实现。因此,对于这个问题的解决办法显然不能考虑使用传统计算机图形学中圆形窗口的裁剪方法,必须采用其他的方法。

在计算机图形学中,Z缓存是帧缓存中的一种。它用来存贮画面上每个象素内可见表面采样点的深度,是一个独立的深度缓存器。绘制时,将待处理的景物表面上的采样点变换到图像空间,计算其深度Z值,并根据采样点在屏幕上的投影位置,将其Z值与已存贮在Z缓存上相应象素处的深度值进行比较。如果采样点位于Z缓存记录的可见点之前,则将该采样点处表面颜色值填入帧缓存相应的象素,同时用其深度值更新Z缓存存贮的深度值。否则,不写入也不更新[5]。

OpenGL中,投影平面定义成视见体的前裁剪窗,因此,位于前裁剪窗上的物体的深度值最小。如果我们在前裁剪窗的位置上绘制一个多边形,并且保证多边形的大小完全遮住整个屏幕窗口,而且多边形的中间挖出两个相交的圆形区域,当这个多边形显示在视景系统中时,由于该多边形的深度值最小,那么就能够保证一定画出,而屏幕上多边形中间两个圆形相交区域内,视景中的景物将按照原先的深度排序后的顺序进行绘制。这样由于多边形的的遮挡,多边形后面的景物不会在屏幕上绘制出来,而多边形中间两个圆形相交区域后的景物由于没有遮挡,将被正常地显示出来;从而完成了望远镜圆形窗口的裁剪。图1显示了视景系统中望远镜的显示效果。

1.2.2 望远镜功能的实现

从1.1的分析可以看出,通过改变视见体的参数可以获得对物体的放大效果。OpenGVS中相机对象通过设置取景视见体的控制参数(如视场角,前后裁剪面)来控制视景在屏幕上显示。图1显示当视见体的缩放比例因子M为1.0,5.0和15.0日照引桥在望远镜下的效果。

当视见体的缩放比例因子改变时,由于望远镜也是视景系统中的一个物体,其在屏幕上的显示大小也会因为视见体的改变受到影响。而实际中,望远镜区域的大小是不变的。因此,必须进行相应的校正。具体的校正方法是根据视见体的缩放比例因子的大小,对望远镜模型进行反比例变换,把原先由于视见体变化导致的望远镜模型的变比再做反变换到原先没有经过任何变比处理的望远镜模型。

(a). M=1.0 (b). M=

5.0

(c). M=15.0

图1 日照引桥在望远镜不同放大倍数的效果

2 望远镜下LOD的显示

对于实时的视景仿真系统,图形绘制技术本质上是一种限时计算技术,即要求算法在一定的时间内,完成对场景的绘制。由于目前图形软、硬件条件的限制,实时图形绘制算法往往通过采用简单的光照明模型和场景简化技术来达到快速绘制的目的。场景的简化技术是指通过降低场景的复杂度来加速画面的生成。LOD(Level of Details)技术则是场景简化技术中比较典型的一种[5]。

根据人的视觉原理,当物体到视点的距离越近,物体看起来越清晰且体积较大;当距离较远,物体看起来就越模糊且体积较小。同样在视景仿真中,同一物体在远处对应屏幕上的象素点个数较少,在近处时对应屏幕上的象素较多。文献[6]中对灯光在夜间的正常显示模型进行数学分析,得出结论:对于显示分辨率为800×600的设备,采用OpenGL的glFrustum(l,r,b,t,n,f)定义的视见体(其中r=7.2794,l=-7.2794,t=5.45955,b=-5.45955,n=20,f=38040),边长为1.0m的立方体当与视点的距离为1098.9m时,立方体经过透视投影变换在屏幕上投影为一个象素[6]。由此可推得,边长为M的立方体,当与视点的距离为M×1098.9m时,立方体在屏幕上的投影大小为一个象素;当与视点的距离为1098.9m 时,立方体在屏幕上投影为M×M个象素。也就是说,如果使用望远镜将物体放大M倍,物体在屏幕上的大小相当于把视点移近(M-1)×1098.9m时物体在屏幕上显示的大小。

因此,望远镜下LOD物体的显示,需要解决的主要问题是在视见体发生变化时,视景系统如何选择相应级别的层

(下转第2304页)

结果等相关信息,对被测设备数量、质量进行管理,完成数据查询、统计、存档、复查等工作,并能登记送检及检测有关事项,并完成打印数据表格、原始记录、检定证书及所有技术资料。在编程过程中,由于Labwindows/CVI无数据库引擎,因此在本系统中使用SQL语言,通过ODBC将其与数据库连接。图5为数据管理系统软界面。

图5 数据管理系统软界面

3 结论

为适应现代高新技术武器装备日益增长的计量保障的需要,该鱼雷专用测试设备自动计量系统按照“标准化、通用化、系列化”的思想设计,具有开放性、集成式、模块化的结构特点,能对鱼雷测试设备进行自动、半自动计量测试,完成数据采集、操作提示和测试结果处理等功能。实践证明,基于虚拟仪器技术的鱼雷专用测试设备自动计量系统能大幅度提高工作效率,使数据处理规范一致,维修检测迅速方便,同时能准确及时地掌握所测试仪器的质量情况,辅助排除故障,对鱼雷的测试和技术检查提供可靠的技术保障。该系统将现代测试技术与计算机技术融与一体[5],强化了测试功能,优化了人机界面,创造了可观的军事效益和经济效益,同时易于进行功能扩展,它将为新型鱼雷的专用测试设备的计量检定方式,开辟新的技术途径和支持。

参考文献:

[1] 杨乐平, 李海涛, 肖凯, 杨磊. 虚拟仪器技术概论[M]. 北京: 电子

工业出版社, 2003

[2] 张凤均, 等. LabWindows/CVI开发入门与进阶[M]. 北京: 北京航

空航天大学出版社, 2001

[3] 曹玲芝, 等. 现代测试技术及虚拟仪器[M]. 北京: 北京航空航天

大学出版社, 2004

[4] 寇琼月, 等. 鱼雷测试设备自动计量系统仪器驱动器设计[J]. 电

子与信息学报,2003, 增刊.

[5] 贾克斌. 计算机网络技术对测控技术发展的促进作用[J]. 测控技

术,1998,17(4):22.

(上接第2296页)

次模型用以显示。前已述及,对于显示分辨率为800×600的设备,使用望远镜将物体放大M倍,物体在屏幕上的大小相当于把视点移近(M-1)×1098.9m时物体在屏幕上显示的大小。根据这个结论,对于放大倍数为M的望远镜,视点与LOD物体之间的距离减少(M-1)×1098.9m。因此,当启用望远镜功能,视景系统使用视点与LOD物体之间的距离选择不同的层次模型时,选用的判断距离应当是在未启用望远镜时的视点与LOD物体之间的距离的基础上减去(M-1)×1098.9m,然后用该距离与模型定义的各个层次设置的距离阈值进行比较,根据比较的结果选择正确的层次模型。

算法的实现可以利用OpenGL提供的函数。但由于OpenGVS提供了对LOD物体显式的支持,因此,可以直接调用OpenGVS提供的动态改变LOD物体的可见距离函数GV_obi_lod_set_range()改变LOD物体的可见距离,在视景系统中加以实现。而实际上,通过测试,我们发现OpenGVS 提供的对LOD物体的支持不仅可以动态地改变其可见距离值,而且能够在视见体改变时,自动匹配相应的LOD物体的层次细节模型,而且选择的层次模型大致与理论推导的结果一致。

3 结论

望远镜功能的实现包括望远镜在视景中的实现和望远镜功能的实现。望远镜在视景中的实现可以利用Z缓存来简化窗口的求交算法,既提高效率又可以保证其遮挡关系的准确性;望远镜放大功能的实现可以则通过改变视见体的参数来获得对物体的放大效果。

对于视景系统中的LOD物体,当启用望远镜功能,视景系统选用的判断距离应当是在未启用望远镜时的视点与LOD物体之间的距离的基础上减去(M-1)×1098.9m,然后用该距离与模型定义的各个层次设置的阈值距离进行比较,根据比较的结果再选择正确的层次模型。

上述两种方法已经应用在大连海事大学“V.Dragon 2000”船舶操纵模拟器视景系统中并且取得令人满意的效果。

参考文献:

[1] DNV Standard for Certification of Maritime Simulator Systems[Z].

1999.

[2] 姚涵珍, 宋娜, 张国安. 圆形窗口裁剪算法的研究和实现[J]. 计算

机辅助设计与图形学报,1992,4(3):14-20.

[3] 刘勇奎. 圆形及椭圆形裁剪窗口[J]. 计算机工程与设计,1994,

(4),33-37.

[4] 沈庆云, 周来水, 周儒荣. 一种圆形窗口裁剪的新方法[J]. 计算机

辅助设计与图形学报,1997,(6): 539-542.

[5] 彭群生, 鲍虎军, 金小刚. 计算机真实感图形的算法基础[M].北京:

科学出版社,1999.

[6] 孙腾达. 航海模拟器中三维视景的实用化研究[D]. 大连:大连海

事大学硕士论文,2001,3.

相关文档
最新文档