欢迎来到天天文库
浏览记录
ID:14910602
大小:27.00 KB
页数:3页
时间:2018-07-30
《基于OpenGL的虚拟仓库系统的研究.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于OpenGL的虚拟仓库系统的研究 论文关键词:OpenGL虚拟现实虚拟仓库漫游ADO 论文摘要:简要介绍了虚拟现实技术及其相关技术的内涵,重点讨论了系统的设计思想、体系结构、三维模型的构建、ADO连接以及漫游的实现等。 1虚拟现实技术及其相关技术简介 随着计算机技术的迅速发展,虚拟现实与人们的日常生活13益密切,已成为当今计算机界广泛关注的一个热点。虚拟现实技术是一项涉及计算机图形学、人机交互、人工智能等学科的综合技术,它的目的是用计算机来生成一个逼真的三维感觉世界,给观众以如同真实世界的体验。
2、利用这一技术,我们可以足不出户游览风景胜地,可以漫游虚拟博物馆欣赏文物,可以游览虚拟校园欣赏校园景致等。 Delphi是全新的可视化编程环境,采用了弹性可重复利用的完整的面向对象程序语言(Object—OrientedLanguage),是当今世界上最快的编辑器和最为领先的数据库技术。Delphi不但为OpenGL渲染函数的调用提供了一个高性能的继承化开发环境IDE(IntegratedDevelopmentEnvironment).而且通过ADO方式连接SQLServer2000数据库作为后台数据库进行
3、数据调用。 MicrosoftSQLServer是一个关系数据库管理系统(RDBMS),可应用于各种专业组织及专业数据库和政府用开发环境巾。SQLServer2000在本软件中是作为后台数据库存放货物仓库的各种规格参数以备调用,Delphi是通过ADO(ActiveXDataObjects)方式与数据库进行连接的,这种连接方式易于使用、高速度、低内存支出和占用磁盘空间较少。 OpenGL是OpenGraphicsLibrary的缩写,它是SG1公司开发的一套高性能的图形处理系统,是图形硬件的软件接口,意
4、为开放的图形库。OpenGL不是编程语言,它是在Delphi平台上的一组绘图命令的AP1集合。基于OpenGL的三维可视化具有建模方便、实时的三维可视化和高度真实感显示的优越性。 2程序的实现 2.1设计思想 虚拟仓库系统以Delphi7.0为程序设计平台,以OpenGL函数库为工具进行图像渲染,通过ADO方式连接SQLServer2000数据库作为后台数据库进行仓库规格参数的动态调用,在一个三维可视化的空问中进行货物仓库的立体模拟,用户可以通过操作键盘和鼠标以第一视角在这个场景中漫游,还可以查看每垛
5、货物箱的各种规格参数。 2.2体系结构 本系统在结构上可分为3个模块:Delphi平台模块、数据库调用模块、OpenGL实现模块。其中OpenGL实现模块又可分为5个子模块:货物仓库库体渲染子模块,货物箱的渲染与纹理贴图子模块,灯管的渲染与光照、材质的处理子模块,货物箱规格参数的中文输出子模块,鼠标和键盘响应(漫游实现)子模块。虚拟仓库系统的工作流程见图1。 2.3ADO连接 系统是通过ADO(ActiveXDataObjects)方式与SQL3Server2000数据库进行连接的,主要用到Delp
6、hi的ADO组件页的ADOConnection组件和ADOQuery组件。我们通过ADOConnection组件连接数据库,通过ADOQuery组件进行SQL编程来调用数据库巾的关于货物仓库的各种参数。 我们用下面的语句调用货物仓库的参数存放到变量a中,其中a是用HuowuStorage定义的记录类型。 a[i].name:=DataModule1.ADOQuery1.fieldByName(‘货物名称’).asString;a[i].boxuint:=DataModule1.ADOQuery1.fie
7、ldByName(‘单箱发数’).aslnteger;IdI.]_boxwidth:=DataModule1.ADOQuery1.fieldByName(‘包装箱宽’).aslnteger;a[j].boxheight:=DataModule1.ADOQuery1fieldByName(‘包装箱高’).aslnteger;a[j].boxleng【b:=DataModule1.ADOQueryI.fieldByName(‘包装箱长’).aslnteger。 2.4三维模型的构建 仓库库体是由若干个四边形
8、组成的,包括墙壁、顶部、地板和若干标准线。仓库的顶部切面是折线梯形,是由一个个四边形叠上去的。以下是绘制库体顶部最上端部分的程序段。 glBegin(GL_QUADS): glNormal3f(O.0,一1.0,0.O);,般置法线方向glTexCoord2f(0,O);,/纹理坐标左下 glVertex3f(一sw/8,sh+sh,一(i-1)*sYscale);,,左前glTexCoord2f(1,0)
此文档下载收益归作者所有