基于OpenGL和OpenCV建模在Flash游戏中的图形实现研究

2016-03-22 00:52韩忠伟冯长宝孙沫丽佟鑫
科技传播 2016年1期

韩忠伟+冯长宝+孙沫丽+佟鑫

摘 要 本文应用的技术采用OpenCV技术提取主要三维,运用OpenGL功能强大且适用于所有的主流操作系统平台应用三维图形信息构建三维图形;将全部图形信息运行在flash平台构建游戏三维场景实现三维游戏的框架搭建。

关键词 OpenGL;OpenCV:flash平台;三维游戏

中图分类号 TP3

文献标识码 A

文章编号 1674-6708(2016) 154-0059-02

Flash的游戏制作中对于三维游戏的插件应用一直以来存在质量及速度的不足,基于OpenGL和OpenCV技术进行图形的三维构建应用flashCC建立Flash三维游戏优势明显,首先是可以应用C++语言进行图形建模这样就在构建及渲染的速度上占有优势,其次应用该技术建模不依托于3D绘制软件经验,再次呈现出来的flash三维游戏更具有游戏的沉浸性。本文所做的研究既有利于建模又有利于移动端Flash三维游戏的扩展。

1 方案设计

1) OpenCV识别技术:通过OpenCV的LBP分类算法实现x,y轴坐标及半径极限求导,逼近柏邻点坐标进行修正指导遍历出无限逼近所识别图形的外围,实现坐标的数值获取回传给OpenGL函数。如果单纯考虑分类算法的实用性,那么该算法中所分类的只是一个小的区域的范围,不能够将所要识别的区域全部的归纳出来,这显然不符合要进行测试的要求。为了适应不同规模及周边颜色及范围的干扰需要将原有的算法进行改进,LBP分类算法改进中,将原有的局限性的范围扩张到无限大,这也是一个局限性的因为摄像的范围有限制,所以应用圆形的区域进行扫描,改进后的LBP算子允许在半径为R的圆形邻域内有任意多个像素点。从而得到了诸如半径为R的圆形区域内含有P个采样点的LBP算子;

2)特征提取:霍夫变换(Hough Transform)是图像处理中的一种特征提取技术圆是在三维空间有下面这3个参数来表示了,其对应一条三维空间的曲线,那么与二维的霍夫线变换同样的道理,对于多个边缘点越多这些点对应的三维空间曲线交于一点那么经过的共同圆上的点就越多,采用设置阈值的方法来判断一个圆是否被检测到,运用HoughCircles函数可以利用霍夫变换算法检测处出灰度图中的圆。

3) OpenGL重建模型:OpenGL是一款消耗内存极低的图形加速接口,应用类库中的函数可以直接绘制出基础的图形,尤其是三维图形的绘制。在获取物体坐标值后应用自带类库及改进对于物体建模的算法可以实现三维图形的绘制,同时加入高斯函数及贝叶斯公式改进对于三维建模的基础算法可以使得坐标的转换更加的精准,可以生成更为复杂的图形。

2 程序设计

1) OpenCV的图形特征提取编写

实验过程中尽量采用霍夫函数变换来解决图形识别的问题。基于图形的识别过程中由于识别的图形有的简单有的十分的复杂,本文在研究过程中采用将图形切割成集中简单的图形进行识别。经典Hough变换的实质是对图象进行坐标变换,使变换的结果更易于识别和检测。

2)边缘检测

Canny算子用作边缘检测与hough相结合对边缘降噪有很好的影响性;canny算法主要是从高斯函数中获取如下公式1:

canny算法主要是从x,y坐标来归一化图形边缘。设x,?表示两维高斯函数表示图像,算子中的参数可以在横轴及纵轴进行逼近求导,在两个方向进行求导可以大大降低边缘噪点的干扰,

识别公式设计

公式中的r为要识别物体的圆周逼近半径,h为物体高度,w为宽度,x,y为圆点坐标

将x,y方向带入canny算法得出计算的公式。

K值为递归条件,节点矢量。

3) OpenGL模型重构:构建三维图像的方法主要是应用二维坐标映射到三维模型,这样的设计主要是依托于反映射。公式的变换主要有NURBS曲面构建公式(4)

K值为递归条件,节点矢量。

OpenGL的移植性可为构建模型到Flash平台提供良好的底层支持。渲染的高效性为建构物体提供纹理映射当OpenGL图形接口调用到OpenCV所识别到的图形属性后,将所得到的值按照图形的固定属性进行参数传值。当程序简单执行图形建构后为使图形在场景中显示出现实的效果,这样的正交投影会使得图形矩阵更具有逼真效果。

4)在flash平台上实现三维场景。本文通过研究Flascc这个编译器将flash软件与C++编译下的OpenGL图形模型链接在一起。Flash c++编译器(FlasCC)提供了一个完整的基于GCC C/c++开发环境,可以把C/C++代码编译到指定的Adobe Flash Player和Adobe AIR中。

3 实验结果

4 结论

本文利用OpenGL和OpenCV技术实现了识别图形并将图形的属性传值给OpenGL程序,由C++编译OpenGL处理的数据,将数据的全部内容与构建三维图形,在构建后将图形进行纹理映射使图形更具有增强现实的视觉感。实现了三维图形的效果。在加载图形效果测试后,运行FlashCC编译器,将Flash平台下的AS代码层调用C++编译好的OpenGL图形处理类,这样融合了三维图形的场景及构建的物体结合了AS调用的Flash本身的类库形成和了具有Flash网页独特平台的三维游戏场景。在实验的识别过程中分类准确率达到70%,测试样本只需平均9秒钟时间即可得到结果反馈。本研究有效的总结了识别技术与建模技术的融合,并最终实现C++编译三维效果呈现在Flash平台上,在flash三维构建领域取得了一些研究的成果。在下一阶段工作中,将增加粒子效果的真实性,同时将考虑在移动终端进行渲染的预处理功能来提高系统运行效率。