太空场景的仿真及其应用效果

2014-08-28 08:17庄建东曾勇进
关键词:哈雷彗星行星太空

庄建东 ,曾勇进

(集美大学计算机工程学院,福建 厦门 361021)

太空场景的仿真及其应用效果

庄建东 ,曾勇进

(集美大学计算机工程学院,福建 厦门 361021)

利用Microsoft Visual Studio和OGRE图形资源,以太阳系行星运动为背景,开发一个行星运行模拟系统,探讨构建太空场景的计算机模拟方法.采用的方法有:对于三维对象的静态,利用模型制作软件(如3DMax)将实体对象制作出来;对于三维对象的运动,用适当的计算方法进行编程实现.天体运动的仿真方法均通过编程得以模拟实现,能够自行在3D空间中运转.实验表明所设计的仿真方法,利用3D图形资源易于实现.

计算机动画;三维仿真;面向对象图形渲染引擎

0 引言

近几年,随着计算机软硬件技术的不断发展,太空场景仿真发展迅速,科研工作者对太空场景的仿真进行了大量的工作.尽管如此,构建稍微复杂的太空场景还处于理论研究阶段,仿真方法和技术仍处于摸索之中,依然是一件非常耗时耗力的工作,许多计算机工作者为此费尽了不少心血[1-2].

从应用的角度来看,太空场景仿真方法需要解决的内容很多,已有一些报道,如太空场景的存储方法[3]、场景复杂度的简化技术[4]、太空环境模拟的逼真性[5-7]和场景绘制的加速技术[8]等.虽然在简化场景的复杂度方面和场景绘制的加速方面,文献[4]和文献[8]分别做了一定的工作,但还可以做进一步的研究工作,如缩减仿真的复杂度,提高运行效率等.本文在参考文献[5,7]的基础上,以太阳系行星运动模拟为背景,力求用简单的仿真方法和实现技术简化太空场景复杂度,快速完成场景的绘制.

1 太空场景的仿真及设计方法

太空场景十分复杂,本文主要从行星、卫星和哈雷彗星的仿真及设计方法去研究和实现太空场景的仿真.

1.1 行星的运转仿真

1)行星的构建

为设计方便,利用模型制作软件如3ds Max 或网上资源下载将各个实体对象如行星的模型制作出来,并贴上纹理,加上效果,便于程序设计者可以将主要精力放在实体的运动环境设计上.对于制作出的模型,可以将其导出,以便在程序开发中得以应用[9].

以OGRE为例,首先通过 Ogre::Entity* entity = mSceneManager->createEntity(name, mesh);将实体进行声明,然后创建Ogre::SceneNode用于后续的操作.主要代码如下:

Ogre::SceneNode* Demo::createStar(String name,String mesh) {

Ogre::Entity* entity = mSceneManager->createEntity(name, mesh); // 实体进行声明

Ogre::SceneNode* node = mSceneManager-> getRootSceneNode()->createChildSceneNode(name);

// 创建Ogre::SceneNode

node->attachObject(entity);

return node;

}

2)行星公转的设计

在实体加载之后,通过修改实体在OGRE局部坐标系下的位置来实现其移动.为达到技术的简单性以及仿真的真实性,可将其运动的过程仿真编写为圆环.由于八大行星绕太阳运动的偏心率较小,因此可以近似看成他们在同一水平上进行运动,坐标y可以为零(如图1所示).此运动的算法为:x=r*cos((2π/T)*time),z=r*sin((2π/T)*time),其中T为运行周期,time为运行参数.

通过间断地改变时间time,计算出某一时刻行星的所在位置,再通过node->setPosition(x,0,z),修改当前行星的位置,从而使之运转起来.

3) 行星自转的设计

由于行星在进行公转的同时,自身还绕行星的转轴进行自转,因此,需要采用相关代码去实现这一过程.在编程中加入node-> yaw(Ogre::Radian(0.1)),这样行星就能绕着y轴进行自转.行星最终的运动结果就是行星公转和自转的组合变化.

1.2 行星的卫星的运转仿真

考虑到行星除了做公转和自转外,其卫星还要绕其旋转.卫星的运转应包括两部分,卫星绕行星的公转和卫星的自转,最终结果是两者的组合变化.

由于月球绕着转的不是坐标原点而是某一个移动中的行星,因此需要记录行星当前的坐标,并通过平移变换、旋转变换的组合变换来完成.其主要过程为:将移动中的行星的坐标位置通过平移变换改变为坐标原点的位置,然后进行绕坐标原点(行星的位置)进行旋转变换,将旋转变换后的结果再通过平移变换反方向平移到行星原来的位置.其主要算法代码为:

x=(r*sin(2*π*time/T))+SatelliteR*sin(2*π*SatelliteTime/SatelliteT),

y=0,

z=(r*cos(2*π*time/T))+SatelliteR*cos((2*π*SatelliteTime/SatelliteT),

其中:r为月球绕着移动中的行星旋转的半径,time为月球绕着移动中的行星旋转的时间,T为月球绕着移动中的行星旋转的周期,SatelliteTime为行星公转运行的时间,SatelliteT为行星公转运行的周期,SatelliteR为行星公转的半径.

1.3 哈雷彗星的运转仿真

对于太阳系中的哈雷彗星,可以采用基于OGRE的粒子系统,通过OGRE脚本,将哈雷彗星的粒子效果编写成粒子脚本,并通过mSceneManager-> createParticleSystem(“halei”,“Examples/halei”)); 调入粒子脚本[10].由于调用粒子脚本后的只是一个不动的粒子发送器,因此需要设计哈雷彗星运动的轨迹[11].

主要算法为:

再添加图形变换:

使其在3D的坐标轴里绕y轴顺时针旋转.

为使其运行的观赏视角更好一些,本文在实现上利用几颗微小粒子形成轨道图,使这些行星在相应轨道进行公转.

1.4 太阳发光的仿真

由于太阳是一个发光体,其行星应该是一面被照亮,一面处于阴影状态.并在行星的背光区域出现阴影,面对着光区有光照表现.为简单实现起见,本文对于太阳运转的区域设为长方体,如图2所示,太阳位于其内部,在长方体的顶点位置设立一个个LT_POINT型的电光,光向四周发散将全场照亮[12-13].

2 计算机仿真的实验结果

实验中,首先使用Autodesk 3ds Max 2010建立了天体运动中各个行星的模型,并贴上纹理,加上诸如光照等效果.为了避免所建立的模型效果不佳,实验中部分采用了通过网上资源下载相应的模型,并细致地分析和研究下载的模型,揣摩其技术上的实现,并将有关技术方法应用到本系统,以便达到逼真的效果.在绘制星空视景时,为了解决实时更新的纹理不协调和纹理衔接不够好的问题,在具体实现设计时采用了自行构造纹理的方法,并通过实验,验证了该方法实现的效果良好.然后重点研究行星公转与自转模拟、行星的卫星运转模拟、哈雷彗星运动模拟和太阳发光的设计方法及其利用图形资源实现的方法.最后使用Microsoft Visual Studio和OGRE,架构整个程序系统,避免了系统可重用性差和可维护性差等不良因素.实验结果如图3—图5所示.图3是利用画椭圆的方法实现的哈雷彗星的运动截图,图4是利用图形变换实现的八大行星的运动截图,图5是太空场景运行模拟的截图.

3 结束语

太空场景的模拟是计算机图形学中最具有挑战性的研究方向之一,其绘制方法是建立天空虚拟场景的关键技术.本文以太阳系仿真及运行的设计为背景,从计算机仿真的角度,探究天体运动的仿真与运动算法设计、天体运动轨道的算法设计、哈雷彗星的制作及其运行轨道的算法设计.最终通过编程实现了如图5所示的太空场景仿真系统.实验表明文中所述的仿真方法得当,易于利用3D图形资源编程实现,仿真效果良好,具有一定参考价值.在太空场景仿真理论研究及技术实现方面,本文仅做了一些初步的研究,有许多问题尚待进一步研究.

[1]段雪峰.浅谈3D Studio Max中的粒子系统[J].计算机时代,2002(11):36.

[2]甄杰,郑力明.基于OGRE的动漫制作引擎设计与实现[J].微计算机信息,2011,27(2):160-162.

[3]宋毅军,杨格兰,田尊华.太空环境建模研究与实现[J].计算机仿真,2010,27(1):40-43.

[4]邹海,徐军,褚维翠.基于OpenGL的三维地形的模拟[J].计算机技术与发展,2011,21(6):239-241.

[5]刘相君,晁建刚,何宁.太空场景光照仿真方法研究[J].计算机仿真,2011,28(11):82-87.

[6]戴国俊,刘玉庆.近地太空环境的建模与仿真[J].计算机仿真,2011,28(11):26-30.

[7]王成,戴树岭.实时仿真中的逼真虚拟地球实现[J].北京航空航天大学学报,2011,37(8):1034-1038.

[8]许列,韦群,王珏.基于OSG的三维场景管理及实时绘制技术研究与实现[J].装备学院学报,2011,22(3):100-104.

[9]戴唐云.基于3DSMAX/OGRE的火箭视景仿真系统的研究与实现[D].成都:电子科技大学,2007.

[10]周海波,陈福民,李莉娅.基于OGRE粒子系统的烟花模拟[J].计算机应用与软件, 2008,25(10):18-20.

[11]Ogre粒子编辑器教程[EB/OL][2009-08-02].http://hghhe.blog.163.com/blog/static/3237756820097282715118/.

[12]三维图形渲染库OGRE 3D[EB/OL][2013-05-07].http://www.oschina.net/p/ogre3d/similar_projects?lang=22&sort=time.

[13]杨波.基于OGRE图形渲染引擎的视景仿真技术的研究与实现[D].成都:电子科技大学,2006.

(责任编辑 朱雪莲 英文审校 黄振坤)

Space Scene Imitating and Its Application Results

ZHUANG Jian-Dong,ZENG Yong-Jin

(Computer Engineering College,Jimei University,Xiamen 361021,China)

Based on planetary motion in the solar system as the background, this paper is to do some theoretical discussions for computer simulation method of space scene construction.Based on the Microsoft Visual Studio and OGRE (Object-Oriented Graphics Rendering Engine) graphical resources,a planet running simulation system is developed.The method is using model making software such as 3DMax to produce entity object for static three-dimensional objects and using the method for calculating the appropriate programming implementation for 3D movement of objects. In this paper, the imitating method which is describing the object movement through programming to simulate implementation can work in 3D space on its own. Experiments show that the imitating method of design has been applied in space scene simulation.It is shown that the method is proper, easy to implement using 3D graphics resources.

computer imitating; three-dimension imitating;Object-oriented Graphics Rendering Engine(OGRE)

2013-05-21

2013-11-25

庄建东(1963—),男,副教授,从事计算机图形学、计算机辅助设计研究.

1007-7405(2014)02-0157-04

TP 391.414

A

猜你喜欢
哈雷彗星行星太空
上太空,安个“家”
流浪行星
追光者——行星
行星呼救
难得一见的哈雷彗星
行星
太空遇险
哈雷与哈雷彗星
畅游太空
迷失在太空深处