APP下载

基于OpenGL的三维景观动态仿真

2011-06-12

武汉工程大学学报 2011年7期
关键词:样条插值纹理

刘 琪

(安徽工程大学, 安徽 芜湖 241000)

0 引 言

三维可视化技术是当今一个十分活跃的研究领域,已广泛应用于地质、房地产、医学、娱乐与游戏、气象数据等多个领域.此技术的核心是在虚拟环境下如何实现三维真实感图形的模拟仿真[1-2].

目前OpenGL (Open Graphics Library)是三维/二维图形构建领域中最被广泛接纳的专业图形接口,它是一个与硬件无关的软件接口,包含120多个图形韩式,可大量减少编程工作量,并且可在不同的平台间支持相互移植,提供了处理光照和物体材质、纹理等众多通用功能的强大底层图形库.结合OpenGL的众多优点,本研究借助OpenGL软件包实现了三维自然景观的可视化控制系统,从而更直观地表达虚拟环境下的三维景观真实效果,便于众多领域的可视化应用借鉴,具有一定的价值.

1 开发环境设置

本研究以Visual C++ 6.0可视化编程工具为平台,借助OpenGL图形库来设置开发环境.具体的开发环境设置步骤如下[3-5]:

a.首先建立工程,并将OpenGL相关头文件和链接库分别加到Visual C++的Include和Lib的目录中;

b.在视图类的PreCreateWindow函数内设置窗口类型;

c.在视图类的OnCreate函数下面进行OpenGL的初始化工作;

d.在OnSize 函数中定义视口和观察坐标;

e.在OnDestroy函数中释放绘制描述表RC和Windows设备描述表DC;

f.在OnDraw 函数中加入绘制场景的代码.

2 自然景物的模拟及其关键技术

2.1 随机插值地形的模拟

本研究在地形可视化过程中采用了随机插值地形模拟的方法,设计思想如图1所示.

图1 随机插值法模拟地形设计思想

2.1.1 随机地形网格生成算法 地形模拟中涉及到的一个核心值就是高程值.所谓高程值,在测量学中定义是某地表点在地球引力方向上的高度,也就是重心所在地球引力线的高度.通俗的理解,高程也即是地面点到高度起算面的垂直距离,它是确定地面的一个重要因素.根据高程值的大小来模拟地形的高低起伏的效果.本文采用取随机值的方法获得某点高程值.核心算法描述如下:

在程序中首先分别定义出随机地形的最大高程值m_max和最小高程值m_min变量,利用m_min+(m_max-m_min)*(float)(rand( )%10 000/10 000获取生成地形网格所需某点高程值.

2.1.2 地形绘制——Catmull-Rom多阶样条曲线插值法 Catmull-Rom三次样条插值算法是一种在已知点进行插值的一种有效算法,具有较强的稳定性和光滑性.结合Catmull-Rom三次样条插值的特性和优点,本研究采用Catmull-Rom三次样条曲线插值的方法[6-7]模拟三维地形.Catmull-Rom三次样条简单示意图如图2所示.

图2 Catmull-Rom样条曲线

图2中P0、P1、P2、P3是控制点,定义一个浮点坐标u,u∈[0.0,1.0],当u=0.0时为P1点,当u=1.0时为P2点,当u在[0.0,1.0]之间变化时,所描绘是3次分段插值Catmull-Rom样条曲线,该样条曲线基本方程如下所示(保持C1连续).

p(u)=0.5×[1uu2u3]·

(3-1)

最后,采用三角形近似、纹理贴图和显示列表技术,绘制出比较平滑和逼真的三维随机地形,效果如图3所示.

图3 曲线插值法生成的地形和纹理生成后的地形

实现地形的可视化核心步骤为:

a.利用Catmull-Rom样条公式(3-1)求出三维地形的随机插值点;

b.设置在控制系统中显示三维地形的大小;

c.调用网格列表函数实现地形网格的绘制;

d.利用纹理技术对随机地形进行渲染;

e.通过调用OpenGL中SwapBuffers函数进行相关处理,实现交互系统三维景观的动画效果.

2.2 天空模拟[8-9]

本研究采用纹理映射技术模拟天空.首先从OpenGL三维图形库中调用gluSphere函数绘制一定大小的球体用球体模型绘制天空,然后采集天空真实数据,经PhotoShop处理后转换成位图文件,装入程序中,将其作为纹理图通过调用OpenGL 纹理函数进行设置纹理参数、绑定纹理、设置纹理坐标等步骤纹理映射[10-11]到球体模型上,从而使天空模型更加逼真地接近自然景观,而且还能消除文本锯齿.同时为增加动态感,实现了纹理按照一定的方向运动的效果.天空生成的流程图如图4所示,效果图如图5所示.

图4 天空生成的流程图

图5 采集的真实天空图片和纹理生成后的模拟天空

3 结 语

本研究采用OpenGL软件包开发工具,在Visual C++ MFC建立的友好界面下,实现了三维自然景观可视化控制系统的模拟.此控制系统实现的功能有:

a.通过工具栏上的菜单,随机生成不同的三维地形和天空.

b.键盘的上、下、左、右键,对整体景观实时漫游控制,从而更接近真实效果.

效果展示图如图6所示.

图6 整体效果图

参考文献:

[1] 刘慎权,李华,唐卫清,等.可视化技术及其发展前景述评[J].CT理论与应用研究,1995,4(1):7-9.

[2] 华庆一,房鼎益.三维可视化对于认知的作用[J].计算机工程与科学,1998, 20(3):38-40.

[3] 汪日伟,韩其睿,吴晓青. 如何在MFC中利用OpenGL实现三维图形的绘制[J]. 天津工业大学学报,2004(6):65-68.

[4] 胡伟,王弘.如何在VC++中用MFC进行OpenGL编程[J].计算机应用,2001,8:88-89.

[5] 李长春,戴国洪.基于VC++与OpenGL的三维图形环境的构建[J].电脑开发与应用,2004,17(6):11.

[6] 华才健.非真实感绘制相关技术的研究与实现[D].绵阳:西南科技大学,2005.

[7] 高鹰.基于为Catmull-Rom几何样条曲面的过渡曲面构造[J].广州师院学报:自然科学版,2000(9):64.

[8] 杨健,张敏.基于OpenGL的纹理贴图技术[J].软件导刊,2011,10(3):169-171.

[9] 杨刚.基于OpenGL的2D纹理映射技术研究[J].吉林建筑工程学院学报,2011,28(1):85-87.

[10] 孙家广.计算机图形学[M].北京:清华大学出版社,1998.

[11] 陈应松,胡汉春,肖世德.基于OpenGL纹理映射技术实现动态图像的应用[J].计算机仿真,2004,21(5):60-65.

猜你喜欢

样条插值纹理
一元五次B样条拟插值研究
基于BM3D的复杂纹理区域图像去噪
基于Sinc插值与相关谱的纵横波速度比扫描方法
使用纹理叠加添加艺术画特效
三次参数样条在机床高速高精加工中的应用
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
TEXTURE ON TEXTURE质地上的纹理
基于样条函数的高精度电子秤设计
一种改进FFT多谱线插值谐波分析方法
基于四项最低旁瓣Nuttall窗的插值FFT谐波分析