基于OpenGL的微观分子运动三维实时动画仿真系统设计和实现方法(实用应用文)
栏目:新闻中心 发布时间:2026-01-29
  属性: Doc-94AGCK,doc格式,正文6345字。质优实惠,欢迎下载!   适用: 作为内容写作的参考文案,解决如何写作、正确编写文案

  属性: Doc-94AGCK,doc格式,正文6345字。质优实惠,欢迎下载!

  适用: 作为内容写作的参考文案,解决如何写作、正确编写文案格式、内容摘取等相关工作。

  第13卷增刊系统仿线Suppl.型!竺!!旦!型坠竺!兰!曼些!竺坠竺!竺型!兰丝!文章囊号:1004-731X(2001)0B-0119_03

  (1北京理工大学计算机系ASIC研究所,北京100081;2山东大学计算机科学与工程学院软件教研室。山东250061)

  攮要:研究了微观分子运动的仿真问题,提出了一种利用分子运动三维坐标数据得到分子运动

  三维动画仿真系统的设计和实现方法.首先给出系统的分子动力学数学模型、基于OpenGL的坐

  标变换模型及光照模型等,然后给出系统的数据处理、图形仿真和人机交互三个主要模块的设计

  AnApproachto3DAnimatedSimulationSystemof

  ZHANGRul。HYH.chen2.zUoKai。。JlANGZhi-fang。

  (1ResearchCenterofASlCofBeijingInstituteofT∞h.B蜘in,c岫

  2ComputerScienceandEnghleel铀gIX'pt,ShandongUniv.250061,China)

  Abstract:1Wspaperstudiesdieproblemaboutmolecules’movement,andpms∞badesignandrealizationmadiodof3Danimatedsimulationsystemofmolecules’movememwith3Dcoordinatesofmolecllles.Itdescribesamoleculardynamicsmathematicmodel,811OpenGLmodeloftransformingcoordinates,andli曲ringmodel。eta.Then,itgiVeSdiesystem’sstructureanddierealizatlOllmediodofthreemainmodels—dataprocessingmodel,simulatiOilmodel,andhuman-eomputerinteractingmodel.Finally,itusesthismediodtorealizealiquidmetalmoleclllesmovementreal—timesimulatiOilsystem.

  Keywords:OpenGL;moieculatdynamics;real-time;animatedshnulatlon

  三维动画仿真技术已经在许多方面得到了广泛应用,但是在微观粒子领域还没有得到充分发展。长期以来,由于无法直观地观察,对于微观粒子的研究和教学要比宏观物质困难得多。在利用计算机来模拟微观世界方面,可以做许多有益的工作,推动微观世界研究的发展。但是目前的微观分子模拟软件较少,而且存在动态效果较差、生成速度慢、硬件要求高等缺陷【l,2】

  本方法是在研究山东省教委科技计划项目——液态金属结构演化的计算机模拟系统的基础上提出来的,适用于对任何微观分子运动的仿真。在该系统的开发过程中,我们运用分子动力学建立数学模型,采用了分布式结构较好的解决了大量数据并行计算和动画显示需要较快速度之间的矛盾,整个系统充分体现了实时分布协同工作的特点。

  作者筒舟t张茹0976-),女,山东省济南市人,博士,研究领域为网络安全、可视化技术:事玉忱(1946-),女,山东省济南市人,教授,研究领域为可视化、并行计算及数据库:左帆(1973-),男.山东省搴安市人.硬士.研究领域为并行计算及计算机仿真;蒋意方,男,剐教授。领域为计算机圈形学。

  本系统使用分子动力学方法建立数学模型。分子动力学方法是建立在分子运动的物理系统之上,每个粒子所处的位置用几何点表示且带有质量,它们满足牛顿动力学方程,作用于每个粒子上的力由粒子间的相互作用势来描述【4】。本系统沿用这种方法,模拟理想化的硬球模型,并假定粒子的恒定的过度运动,粒子问的碰撞。给分子硬球定义颜色、半径、各个时刻三维坐标等描述数据。

  微观分子的动画仿真需要解决的主要问题之一是如何在较小的屏幕上描绘大量分子运动。组成宏观体系微观粒子数的特征值是阿佛加德罗常数Ⅳ^=6.023x10丑,也就是说,只有模拟至少Ⅳ^个分子运动时才能观察到正确的分子运动规律。但这个数值是当前计算机的内存和计算能力无法承受的。因此系统只能采用少量粒子进行模拟,但是这种小体积粒子数计算的结果与实际宏观性质必然有误差。因为对于粒子数少的情况,边界上所占粒子数目是很可观的,而边界上的粒子所受力状态与中心处的粒子并不相同,因此要采用边界条件来克服由于粒子太少造成的影响。

  系统把整个微观分子世界划分成无数个立方单元,采用由Ⅳ个粒子组成的一个单元作为模拟的基本单元。对边界上的粒子运动使用这样的边界条件:即在模拟过程中,当一个分子i离开中心单元进入周围单元时,其像分子就在相

  反边界上移进这个中心单元。这样,对于中心单元来说,似乎无界面存在,并且中心单元内分子数始终守恒,这样我们只要观察中心单元内分子运动状况就能够描绘大量分子运动。

  c=摄㈣式中L为立方单元边长,.】lf为元素的原子量;Ⅳ^=6.023x10玎,P为研究对象的密度,N是单元内分子数。

  要实现系统中三维分子小球在二维屏幕上运动和交互控制。必须根据需求建立相应的数学模型。例如,为了确定绘制各个小球的位置,需要对坐标原点进行平移;为了观察前后左右各个位置上的分子运动,需要整个单元能够旋转,才能建立绕某个轴旋转的数学模型;为了在二维屏幕上跟踪三维分子必须取得所有分子二维窗口坐标,才能建立二维窗口坐标下的数学模型。原始数据坐标是世界坐标系下三维坐标,坐标变换采用齐次坐标变换。整个转换过程如图113]:指定的取景和模式变换被一起用来生成模式取景矩阵,此矩阵被应用于输入的对象坐标以形成眼睛坐标。接着如果已指定了任意一个剪贴板来从画面中去掉某些物体,或提供对象的剪切取景,这些剪贴板就会被应用。之后,应用投影矩阵来产生剪切坐标。此变换定义了一个取景体积;位于此体积之外的对象将被剪切,使得它们不会在最终的画面上被画出。这之后,将通过用Ⅳ除以坐标值来执行透视分割,以便产生归.化设各坐标。最后,通过应用视区变换,归.化设备坐标被变成窗口坐标。可以控制视区的维数,以使最终的图象被放大、缩小或延伸。

  考虑到只需描绘分子小球韵三维动态效果,对细节方面要求不高,而且要保证较高的绘图速度,系统在保证画面

  效果达到要求的前提下,尽量简化光照模型。光照模型应有三个组件:全局的环境光源密度;取景点位置应被看作是画面本地的还是距离画面有无限远;是否采用两面光照。因此系统光照模型设置为:单光源全局环境光,光源在无限远处,法向量沿z轴方向,不用两面光照。

  在颜色缓存区中存储的实际上就是每个象素的最终颜色值。场景中物体最终反映到人眼的颜色是光的红绿蓝分量的反射率相乘后形成的颜色。因此为了增强颜色效果,还应使用光合成技术。OpenGL对四种光照:辐射光、环境光、漫反射光和镜面光独立计算最后加到一起。例如,若光源颜色为(LR,LG,LB),材质颜色为(MR,MB,BG),忽略其它效果,则到达眼睛的光的颜色为(LRxMR,LGxMG,LBxMB)

  ifanabieat岫×anabien‘岫删+(max{/一n,0})×

  ambient岫×ambient~——环境项,即从光源来的被适当缩放的环境光;

  (max{lH,0})×diffuse岫×di施∞~——散射项,即从光源来的被适当缩放的散射光;

  (max{s-H,0】)蛐嘲×specul甄血潲pecul牡,l——反射项,即反射指数×光的反射×材质的反射;

  1是从顶点指向光源位置的单位向量;n是该项点处的单位法线向量:S是从顶点指向光源位置和从顶点指向视点的两个单位法向量和的被用每个组件除以向量的大小产生的归一化向量。.是向量的点乘符号。

  因此系统中,设材质的发散颜色为mat_emission,环境颜色为mat_ambient_color,散色为mat_diffuse,光的环境颜色为ambient,散色为di筋∞。备顶点颜色如式(4)所示,

  mat_arabientcolor+diffll¥e×mat_diffuse5分布并行实时系统

  a)数据处理。分子运动的数据计算系统要处理庞大的数据,计算速度极慢,这和动画仿真系统对CPU的高速要求相矛盾,如果将两个系统放在一台Pc机上,动画的速度势必慢得难以忍受,无法产生逼真的运动效果。以前的一些分子仿真由于受此限制而不得不在动画模拟之前预计算整个运动过程所需所有数据。因此为了实现系统的实时性,整个系统分成三维动画仿真子系统和分子运动状态计算子系统两部分。数据传输方式如图2所示:

  这种任务分离实现技术使应用程序具有最大的通用性,动画仿真模块和数据计算模块可以互不影响。工作流程如下:将两个子系统分布于两台相连的微机上,运动状态计算子系统计算各时刻分子运动状态原始数据,分别放在共享内存中供动画仿真系统读取,同时把数据保存在本地机上:动画仿真系统从共享内存中读取某时刻数据画图,并在画下一时刻图像的同时删除该组数据;如果共享内存满则暂停计算,如果共享内存空则暂停动画。

  b)图形仿真模块。该部分又分为两个模块,一个描绘分子运动三维实时动画,另一个描绘函数图形。实时动画模块主要负责初始化并调用OpenGL,根据数据描绘某一时间段内分子运动的三维动画等。函数模块主要负责调用Visualc++的绘图功能绘制二维函数曲线,以便于观察分子运动的统计规律。一般常见的动画技术有以下几种:异或运算法、块动画法、逐帻动画法和双缓存器显示法。异或运算法和块动面法的优点是前景的涂抹不影响背景画面,但是这两种动画法所产生的画面有明显的闪烁:逐帧动画法的画面如果较大则动蕊速度非常慢,如果数据文件事先形成链则内存开销大。因此这些动画技术都不适合本系统,采用双缓存技术是较理想的办法。其工作流程如下所示:

  c)机交互楱块。对本系统来说,要实现与三维图像的直接交互,必须考虑到以下三点:

  (1)图像应以可编辑的形式存储,对于用户来说,只需考虑对图像进行分析处理,而不必考虑如何得到图像。系统允许把图像保存成静态D1B图像,步骤如下:

  a)创建一个B1TMAPFILEHEADER结构bmfHdr,作为file的文件头;

  b)创建一个LPBITMAPINFOHEADER结构指针]pBi指向hDib;

  c)利用lpBi的头部所包含有关DIB的信息计算文件属性,如文件大小和hDib在文件中的位置(位移量)等,初始化bmfHdr;

  (2)应当把三维图像的几何表示与基本消息事件处理相结合。主要实现以下几种对系统的交互控制功能:选择手动或自动操作演示、跟踪标定单个分子,原子团运动、沿x、y或Z坐标轴转换观察角度、放大或缩小图像、循环演示、浮动标定分子坐标等。

  (3)系统应具有良好的可扩展性,允许开发人员根据应用需求定义新对象。系统允许选择分子类型,并自定义分子大小、颜色等。

  我们已经利用这种设计方法成功地实现了分子运动的三维动画仿真系统。该系统建立在带图形加速卡、64MB内存的Penfiumll上,可以达到高质量的三维实时动画仿真效果,具有低硬件要求、高质量的动画、可移植性、通用性、人机接口友好等特点。该系统利用可视化及虚拟现实的手段去观察、理解计算出的大量数据,发现其中蕴藏的规律。目前,该系统应用在对液态金属分子演化的分析中取得了一定的成果。