利用OpenGL技术实现网格波动效果界面_第1页
利用OpenGL技术实现网格波动效果界面_第2页
利用OpenGL技术实现网格波动效果界面_第3页
利用OpenGL技术实现网格波动效果界面_第4页
利用OpenGL技术实现网格波动效果界面_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用 OpenGL 技术实现网格波动效果界面摘要:为模拟波涛汹涌的波浪的动画,设计与开发网格 波动效果界面;借鉴余弦函数以及相应的变换建立问题解决 模型;利用C+的OpenGL开发动画程序;程序实现网格随 机摆动。关键词:网格波动;余弦函数; OpenGL技术;C+;程 序开发中图分类号: TP37 文献标识码: A 文章编号: 1009-3044 (2016)12-0220-02Abstract : To simulate the roaring waves animation , design and achieve the grid fluctuation effect interfac

2、e ; Refer to cosine function and some transformations about cosine function to construct the problem solving model ; Using of OpenGL of the C+ to develop animation program ; The program achieve random fluctuation grid .Key words: Grid fluctuation ; Cosine function ; OpenGL technology;C+;program deve

3、lopment1 概述 网格波动界面的探索可以应用于影视、广告以及科研领 域的仿真研究上,是一个值得探索的问题。文献 1描述利用海浪频谱和方向函数生成每一张海面 图片的高度场。 文献 2研究工作中涉及了波浪和浮体联合作 用的研究。 文献 3研究内容涉及对波浪扭曲时的建模方式的 探讨。文献 4 研究的内容涉及对海波使用纹理映射的讨论。2 问题提出利用C+勺OpenGL渲染技术,通过在事先定义的三维 空间的若干顶点上增加随机运动方式算法可在之后程序画 图时实现网格波动,利用C+的窗口界面程序的开发方法和引入相关后缀名为“ .h ”的文件的语法以及 OpenGL技术, 可实现所开发的界面播放 Ope

4、nGL动画程序。将这两点有机 结合后,提出开发带有网格波动虚拟影像的播放界面。3 建立运动方式模型 倘若定义若干行三维空间中的顶点,可把行数定义为变 量n,各行顶点数目与行数相等,则可以在OpenGL程序每回画出一张图画前通过使用循环语句执行算法的途径让各 个顶点的空间位置发生变化或者不变。当每次画出图片前顶 点可组成多条波动曲线的形状时,则可让这些图片在因为程 序执行引起的连续放映形成网格摇摆的动画。本次 n 取 80 循环语句所表达的初始顶点在任意单位循环时刻应具 备的运动方式模型抽象为如下内容: (1)所有顶点的初始位 置都保证它们在三维坐标系中的 y 为零,第一行第一个顶点 处在( 0

5、, 0, 0)点位置,之后的此行中,各顶点与上一顶点相隔长度为 m,第二行相隔上一行距离的长度是 m,第二 行各个邻居顶点间隔都是 m,此后各行与上一行间隔是 m并 且本行邻居位置的顶点间隔也为m,所有顶点构成长宽等距的矩形网格并与负 z 轴、坐标为( 0, 0, 0)的点和正 x 轴接 壤;(2)假定在单位循环时刻图片画出前都从各行的前m 个顶点中随机选取一个顶点放一个带指针的圆形纸片,各指针 尾部按在各纸片中心,各针尖最前端与各纸片边缘某处重合, 各纸片和坐标轴 x 平行;(3)各纸片的指针与顶点构成的长 宽等距的矩形垂直,各纸片的指针和整个正 y 轴和负 y 轴组 成的连线平行,指针所指

6、方向所表示的向量和沿着y 轴的正无穷远延伸的方向所表示的向量构成的角度为零,并且各纸 片的中心位置与选取的随机顶点重合; (4)各纸片以数值一 样的转速围着纸片中心匀速原地旋转并且都沿着正x 轴朝正无穷远延伸的方向做着相同速度的加速度为 0 的直线运动; (5)各纸片在每次画出图片前都按相同的规定时间运动; (6) 当长宽等距的矩形上某个顶点被某个纸片中心经过时,把指 针的针尖与纸片的重合位置的y值作为此刻顶点的y值,这个值可用余弦函数以及相应的三角函数变换根据本次循环 中运动开始后当前纸片在此时旋转产生的角度计算;(7)当各行的纸片在规定时间内运动结束,使用OpenGL的语法连线、渲染和画图

7、; (8)下一张图片(也就是下一个单位循环 时刻)依然按照前七步绘制。这里 m 为 30。4 网格波动界面关键内容介绍网格波动界面使用 C+与用户界面程序开发有关的开发 技术进行搭建。在利用C+语法加入OpenGL有关的文件后, 将运动方式算法和每一时刻的与画图有关的语句放到合适 的位置进行使用。由此,可以实现网格波动界面的动画。网格波动界面程序逻辑上分为三大部分,第一部分为网 格波动界面的处理用户与界面交互主函数,第二部分为网格 波动界面的交互信息处理函数,第三部分是与画每一张图片 有关的函数。建立三部分之间联系的方法是在处理用户与界 面交互主函数中利用 while 循环去检测预先定义的交互

8、信息 结构体有无内容,有就用 C+自带的处理交互信息的函数发 送到交互信息处理函数处理,处理后,程序将继续执行处理 用户和界面交互主函数的那个循环,这由运行该波动界面的 电脑自身控制,没有交互发生就执行画图函数的调用语句。 在处理用户与界面交互主函数中,涉及的内容从上到下接连 为:初始化网格波动界面语句块,加载波动界面画图设备函 数体的调用语句,循环检测(这是之前提到的 while 循环), 界面销毁句块。交互信息处理函数使用C+的分叉条件判别语法编写,它处理用户按下键盘、按紧和松开鼠标、手握鼠 标滑动、网格界面大小变化、 销毁网格波动界面的交互信息。网格波动界面的关键部分起到的作用的阐述如下

9、:(1)处理用户与界面交互主函数的初始化网格波动界面语句块包含对波动界面的属性的定义、交互信息结构体的定义以及 注册波动界面和与建立波动界面相关的操作。其中,波动界 面的属性和交互信息的定义都是通过声明拥有与网格波动 界面程序中的界面执行相关联属性的结构体的变量来在程 序中使用它们。 (2)处理用户与界面交互主函数的加载波动 界面画图设备函数体的调用语句调用的是开发波动界面时 编写的与向系统申请画图环境有关操作的函数,它的内容概 括起来是利用 windosws 用户界面开发中需要的相关描述表 去在一个操作系统的存储区域内分配一个用于进行 OpenGL 画图动作的工作区。 ( 3)当处理用户与界

10、面交互主函数的循 环检测发现交互信息结构体有内容,如之前所说,交互信息 处理函数使用的C+勺分叉条件判别语法会根据判别条件到 相应的位置去操作预先定义的全局变量或执行C+自带的会最终通知系统结束波动界面运行的语句。比如,当判定交互 信息是销毁波动界面时,程序就会执行这个最终将结束波动 界面运行的语句。交互信息处理函数中的全局变量被执行后, 并且当循环检测执行到相应的画图函数时,画图函数根据它 们的某些元素影响这个函数中相应分叉判别语句内部的 OpenGL函数的生效,这实现了用户和波动界面的交互产生 时应当引发的内容。当没有交互信息时,循环检测执行相应 画图函数的调用语句,这个调用语句所关联的函

11、数体也是波 动界面的开发中自行编写的。它解释OpenGL在波动界面每一张图片绘画时起到怎样的作用,就是说怎样利用该技术提 供的函数来刻画图片呈现给用户的效果。不仅如此,这个自 行编写的函数体还将上一节的模型通过程序实现。( 4)循环检测的终止条件是当交互信息结构体的 message 属性收到离 开循环的信息。 当离开循环检测, 程序就执行界面销毁句块。 它包含释放界面和绘画的工作区工作时所占的存储空间。5 效果展示6 结束语1)如图 1 所示,在波动界面的运行场所中点击启动调 试后,可看到网格的波浪随机摆动的动画;2)如图 2 所示,由于用户按下相应键盘,切换效果;3)如图 3 所示,用户利用鼠标改变网格波动界面大小;4)如图 4 所示,网格波动界面的画面可以随着用户鼠 标的滑动而变换视角;5)虽然实现了波涛汹涌的效果,但是,图2 效果不够美观,这是不足之处,可通过改进 3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论