基于VC的图像水波动画系统的

点赞:23018 浏览:105459 近期更新时间:2024-01-14 作者:网友分享原创网站原创

摘 要 :以Visual C++6.0为开发环境,采用OpenGL编程,对图像进行动画处理,实现了使静态图像生成动态的水波涟漪效果.系统分两步实现:第一步,系统框架设计,系统需在基于单文档的OpenGL图形程序的基本框架下运行,需对OpenGL的绘制环境进行设置,设置完成后才开始进行水波涟漪的设计,第二步,水波动画设计.在基于单文档的OpenGL图形程序基本框架的基础上进行编程.

关 键 词 :水波动画;VC;OpenGL

中图分类号:TP317.4文献标识码:A文章编号:16727800(2012)009016503

1OpenGL处理流程与功能分析

1.1OpenGL的处理流程

(1)几何操作.①针对每个顶点的操作:每个顶点的空间坐标需要经过模型取景矩阵变换、法向矢量矩阵变换,若允许纹理自动生成,则由变换后的顶点坐标所生成的新纹理坐标替代原有的纹理坐标,再经过当前纹现矩阵变换,传递到几何要素装配步骤;②几何要素装配:不同的几何要素类型决定采取不同的几何要素装配方式.若使用平直明暗处理,线或多边形的所有顶点颜色则相同;若使用裁剪平面,裁剪后的每个顶点的空间坐标由投影矩阵进行变换,并由标准取景平面进行裁剪,再进行视口和深度变换操作.如果几何要素是多边形,还要做剔除检验,最后生成点图案、线宽、点尺寸的像素段.并赋上颜色、深度值.


(2)像素操作.内主机读入的像素首先解压缩成适当的组份数目,然后进行数据放大、偏置,并经过像素映射处理,根据数据类型限制在适当的取值范围内,像素最后写入纹理内存,使用纹理映射或光栅化生成像素段;如果像素数据由帧缓冲区读入,则执行放大、偏置、映射、调整等像素操作,再以适当的格式压缩.像素拷贝操作相当于解压缩和传输操作的组合,只是压缩和解压缩不是必须的,数据写入帧缓冲区前的传输操作只发生一次.

(3)像素段操作.当使用纹理映射时,每个像素段将产生纹素,再进行雾效果计算、反走样处理.接着进行裁剪处理、一致性检验(只在RGBA模式下使用)、模板检验、深度缓冲区检验和抖动处理.若采用颜色素引模式,像素还要进行逻辑操作;在RGBA模式下则进行混合操作.

根据着色模式不同,决定像素段采取颜色屏蔽还是指数屏蔽,屏蔽操作之后的像素段将写入到适当的帧缓冲区.如果像素写入模反或深度缓冲区,则进行模板和深度检验屏蔽,而不用执行混合、抖动和逻辑操作.

对于创建一个三维图形,大致可以包括以下3个主要环节:①建模:包括几何建模和行为建模,几何建模处理物体的几何和形状的表示,行为建模处理物体的运动和行为的描述;②设置观点:描述观察者的空间位置;③设置环境:描述环境的特征,如光源、空气能见度等.

1.2功能需求分析

图像的水波动画程序开发目的是对图像进行动画处理,实现使静态图像生成动态的水波涟漪效果.本系统将采用OpenGL图形应用程序设计界面编程,在Visual C++6.0环境下实现.

水波涟漪的模拟将实现以下功能:①系统界面是在基于单文档的OpenGL图形程序的基本框架下运行;②在程序中载入后缀为 .rgb的图片;③在程序运行时使用鼠标左键单击图片,此时屏幕上以鼠标单击的位置为中心,产生涟漪的发生点,并开始进行水波涟漪荡漾的效果.

1.3开发环境简介

(1)硬件环境.计算机的基本配置不低于P4 2.0G/80G/256M/52XCD.

(2)软件环境.Windows 2000/xp;Microsoft Visual C++ 6.0;OpenGL开发库.

2.1系统设计

图像的水波动画程序开发目的是对图像进行动画处理,使静态图像生成动态的水波涟漪效果.为实现这个目的,系统设计可以分为两步:

(1)系统框架设计.为了保证水波涟漪的实现,系统需在基于单文档的OpenGL图形程序的基本框架下运行,需对OpenGL的绘制环境进行设置,如逻辑调色板、像素格式、OpenGL初始化、场景绘制与渲染等,设置完成后才开始进行水波涟漪的实现.

(2)水波动画设计.在基于当文档的OpenGL图形程序的基本框架的基础上进行编程,依次完成对水波涟漪的定义、生成新的涟漪纹理、纹理的绘制等函数的设计,将静态图像从纹理图像空间映射到帧缓冲图像空间,系统运行时载入图像,通过点击图像实现水波涟漪的动态效果.

2.2系统框架设计思路

①在单文档窗口的创建过程中,设置好显示的像素格式,并按OpenGL的要求设置好窗口的属性和风格;②首先获得Windows设备描述表,然后将其与事先设置好的OpenGL绘制描述表联系起来;③调用OpenGL命令进行图形绘制;④退出OpenGL图形窗口时,释放OpenGL绘制描述表RC和Windows设备描述表DC.

2.3系统实现步骤

(1)在MyRippleView.h中添加成员函数.

(2)在MyRippleView.cpp中设置窗口类型、设置逻辑调色板、初始化OpenGL场景、设置像素格式、场景绘制与渲染.

此函数在256色模式下,把一个像素颜色的内部值按线性关系转换为8bit输出到屏幕上,其中红色占最低位的3bit,绿色占中间的3bit,蓝色占最高位的2bit,Windows将这个8bit值看作逻辑调色板的索引值.因此,生成调色板时,把索引值从低位到高位分成3-3-2共3个部分,将每一部分映射到0~255中去,这样3bit映射为{0,36,73,109,146,182,219,255},2bit映射为{0,85,170,255},最后把3部分组合起来成为一种颜色.

像素格式是OpenGL窗口的重要属性,它包括是否使用双缓冲、颜色位数和类型以及深度位数等.像素格式可由Windows系统定义的所谓像素格式描述子结构来定义4结语

基于VC的图像水波动画系统的参考属性评定
有关论文范文主题研究: 计算机动画类论文范文 大学生适用: 学院学士论文、电大毕业论文
相关参考文献下载数量: 28 写作解决问题: 学术论文怎么写
毕业论文开题报告: 论文提纲、论文目录 职称论文适用: 技师论文、职称评中级
所属大学生专业类别: 学术论文怎么写 论文题目推荐度: 免费选题

本文针对图像的水波动画展开研究,首先介绍了OpenGL的工作流程,其次对系统进行了详细的设计,最后给出了系统在操作过程中的核心代码.