预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第33卷第2期大连海事大学学报Vl01.33No.2 2007年5月JournalofDalianMaritimeUniversityMay2007 文章编号:1006773612007}02—0124—05 模拟器视景系统中太阳及镜头光晕的绘制 任鸿翔,金一丞,尹勇 (大连海事大学航海动态仿真与控制实验室,辽宁大连116026) 摘要:为解决现有航海模拟器视景系统中对太阳及镜头光晕的模拟不完善、无法显示太阳、不能控制太阳及 镜头光晕效果等问题,提出基于OpenGL和Cg绘制太阳及镜头光晕的方法.讨论光晕分布、纹理及融合等技 术,并引入光晕边界的概念,实现光晕的淡入淡出.采用光线投射方法判断太阳与其他物体的遮挡关系,解决 了z缓冲区方法无法判断视见体外物体的可见性问题,并利用顶点着色器技术对该方法进行优化.结果显 示,该法简单,易于实现,绘制效果真实,满足航海模拟器对视景系统的实时性和逼真度要求. 关键词:航海模拟器;视景系统;镜头光晕;光晕边界;顶点着色器 中图分类号:TP391.41文献标志码:A 制物体的形状、外观和运动成为可能,并提供了一 0引言 个新的、可对图形硬件进行操作的抽象层,程序员 摄像机或照相机对准太阳时,一些光线在内不必再直接使用图形硬件汇编语言来编写程 部镜头和光学机构中散射折射,在摄像机中就会序. 看到美丽魔幻的光环、光点等,这就是镜头光晕. 1太阳位置的计算 光晕的幻影效果取决摄像机镜头及光学器械的类 型,常见的镜头光晕有圆环、六边形光斑和小光点太阳位置随时间变化,在航海模拟器中模拟 等.太阳,首先要准确计算出太阳的实时位置.本文利 对太阳及镜头光晕效果模拟是视景仿真中最用FK5星表数据-5通过基准历元的天体平位置 常用的特效之一,国内外学者对此进行了相关研推算得到太阳的位置,方法如下:(1)实时获取系 究-1].现有航海模拟器视景系统是基于统时间和视点经纬度等数据,将获取的时间转换 OpenGVS高级视景管理软件开发的,管理软件提到从基准历元时间起算的儒略世纪数T.(2)以 供的太阳及镜头光晕的模拟效果并不完善,最大T为参数根据星表数据计算太阳在赤道坐标系 的问题是无法显示太阳,也不能控制太阳及镜头中的坐标.(3)将太阳的坐标由赤道坐标转换成航 光晕.本文尝试采用OpenGL和Cg编程实现对太海模拟器场景的世界坐标. 阳和镜头光晕的仿真.OpenGL是在SGI等多家1.1时间的转换 世界闻名的计算机公司的倡导下,以SGI的GL太阳某时刻的位置可通过基准历元的天体平 三维图形库为基础制定的一个通用共享、性能卓位置推算得到.首先计算该时刻至基准历元的时 越的开放式三维图形标准-3j.Cg(Cforgraphics)间,由于FK5星表是以太阳系质心力学时(TDB) 是最早的为可编程图形处理器设计的高级编程语作为时间尺度,而航海模拟器场景系统使用的是 言.Cg的出现使得程序员利用可编程图形硬件绘协调世界时(UTC).为计算太阳的位置,必须将 *收稿日期:2006—10—09. 基金项目:国家“973”计划基金资助项目(2002CB312103). 作者简介:任鸿翔(1974一),男,黑龙江肇东人,副教授,E-mail:dmurhx@163.com; 金一丞(1944一),男,浙江上虞人,教授,博士生导师. 第2期任鸿翔,等:模拟器视景系统中太阳及镜头光晕的绘制125 实时获得的系统时间UTC转化为TDB.设JD为1.2太阳赤道坐标的计算 儒略日(TDB),计算公式为计算太阳的赤道坐标,可先计算太阳在黄道 JD=367×Y—INT(7×上的视位置:视黄经和视黄纬,然后经过坐标变换 (Y+INT((m+9)/12))/4)+INT(275×m/9)+转换成赤道坐标.太阳视黄经的计算为 d+1721013.5+t/24(1)s=L+△++△Ll+△L+△Lp+△Lg 其中:Y、m、d是从系统获取的年、月、日;t为协(3) 调世界时;INT为计算机取整运算.其中:L为对于观测当天平春分点的太阳几何平 FK5星表以JD2000.0作为基准历元,此时的黄经;为中心差;△L为太阳光行差的改正;太 儒略日为2451545.0.系统时间至基准历元的儒阳平黄经的主要摄动项包括长周期项△L、月亮 略世纪摄动项△L大行星主要摄动项△L.各变量的计 T一二:·r,,、 一算公式为 36525 L=280。2757".85+(100+0。4611.27)T一1"0.89T2 口=(2一4S3)sinM+(5S2一11s4)sin2Ms+13s3sin3Ms+3es4sin4Ms ALj=.4sin(251。.4+20。.2T)+1.9sin(207。.5+150。.3T) AL=.6sinD