




已阅读5页,还剩72页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘摘 要要商品房装修方式,目前主要采用样板房或平面图方式,作为设计和菜单选择的工具,在选择后的实际组合效果上不能得到及时有效的检验,一些缺陷在装修完成前也不易被发现。因此本文设计了菜单式全装修的虚拟漫游与交互操作系统。虚拟现实技术是利用计算机技术和相关设备创建一个虚拟环境,当使用者沉浸到该环境中可得到如同真实世界般的感受,并可与虚拟环境进行互动的交互。论文对全装修的过程进行分析,从解决实际问题的角度提出了虚拟系统的构想,通过对虚拟系统实现技术进行分析比较,选择在VC 编程环境下,利用 OpenGL 与 3DS MAX 实现系统功能。对OpenGL 的编程和工作原理,三维图形的渲染流程,绘制图形的方式以及光照、材质和纹理等功能进行了分析。在系统概念与功能分析的基础上,对系统的总体框架和漫游和物品库的建立及浏览等主要功能进行了研究分析和开发实现。关键词:关键词:虚拟现实,菜单,全装修住宅,OPENGL,3D STUDIO MAX目目 录录 1 绪论41.1 研究背景41.2 虚拟现实技术41.2.1 在国内外发展现状41.2.2 虚拟现实技术在住宅设计中的应用61.3 本文研究目的及意义71.4 本文主要研究内容82 相关理论及技术分析92.1 虚拟现实技术的适用性92.2 虚拟现实技术的局限性102.3 虚拟现实与图形建模的结合机制112.4 三维虚拟场景的显示技术122.4.1 场景中的坐标系122.4.2 OpenGL 简介132.5 三维模型添加技术222.5.1 三维模型的分类222.5.2 显示列表技术222.5.3 3DS 模型文件的分析242.6 模型交互控制技术272.6.1 选择机制272.6.2 使用鼠标进行拾取282.7 物体表面材质、颜色的切换技术282.7.1 纹理映射技术282.7.2 多种纹理与模型的绑定303 系统分析与设计313.1 系统分析313.1.1 菜单式设计方式313.1.2 虚拟技术在全装修菜单式商品房中应用的可行性313.1.3 基于虚拟技术的菜单式全装修商品房运作过程323.1.4 系统的主要功能333.2 系统功能的 UML 描述与设计353.2.1 UML 建模语言概述353.2.2 用例分析(用例图)363.2.3 对象之间的交互分析(顺序图)373.2.4 选择对象活动过程分析403.3 漫游及场景的实时绘制413.3.1 场景的漫游413.3.2 实时绘制424 系统主要功能的实现434.1 编程环境简介434.2 开发工具的选择444.3 建模工具的选择454.4 基于 OPENGL 的单文档功能框架的建立464.5 住宅模型的调入存储514.6 漫游界面及功能实现534.6.1 推荐设计方案的界面菜单534.6.2 推荐套型菜单对应的功能函数544.6.3 漫游功能实现函数564.6.4 漫游功能运行实例图584.7 物品模型浏览对话框及其功能的实现634.7.1 界面菜单设计634.7.2 对话框中控件功能的实现634.7.3 对话框中 Opengl 窗口的显示664.7.4 对话框功能运行图例685 总结与展望715.1 总结715.2 展望71参考文献731 1 绪论绪论1.11.1 研究背景研究背景中国的住宅室内装饰装修设计是在改革开发后,人们对居住环境追求舒适和审美的需要而发展起来的,过去的十年,是中国房地产去的飞速发展和巨大成就的 10 年,而住宅是房地产的一个最主要的构成部分,随着社会的进步和个人财富的增加,人们处了购买住房外,同时对室内装饰装修的要求越来越高,在住宅装饰装修中投入时间周期、金钱和花费的精力也越来越多。另一面,却是现代人的工作和生活的节奏越来越快,没有时间。目前,我国住宅室内设计公司仍然全部都是采用实体办公,沿用的基本流程为:客户提供住宅室内图纸或现场丈量室内空间;与客户面谈沟通确定设计方案;设计施工图和彩色室内效果图;确定报价和预付款;采购建材(大部分材料由客户采购或指定) ;施工及监理;验收;付清尾款。需要特别指出的是,以上流程都需要客户耗费大量的时间亲身参与,住宅装饰装修是一件非常累人劳心的事情。因此,如何节约时间,节省成本,提高效率,开发设计一套住宅室内设计信息管理系统,能在网络上解决上述的流程问题,对现代人来说十分需要。现今,我国尚无一套住宅室内设计信息管理系统,还是在用传统的实体办公形式,住宅室内设计信息管理系统现已成为许多室内设计公司考虑发展的方向。针对上述问题,在对厦门市若干室内设计公司进行调研的基础上,针对厦门的经济和区域优势,论文对室内装饰装修设计系统业务需求进行了分析,并根据需求报告进行了住宅室内设计信息管理系统的模块设计,并尝试将多种程序整合进行部分系统实现。1.21.2 虚拟现实技术虚拟现实技术.1 在国内外发展现状在国内外发展现状近二十年来随着计算机硬件软件的飞速的发展,三维虚拟现实技术的应用也有了长足的进步,从原来的航空航天和军事应用等不断拓展到面向人们的日常生活,其中三维虚拟实现技术在房屋设计和装修中的应用越来越广泛。由于虚拟实现技术可贵的“3I”1特性-沉浸(Immersion) ,交互(Interaction) ,构想(Imagination),虚拟实现技术特别适合建筑设计行业的需求,在这个行业中发展飞速。具体的应用可以分为:设计应用,检测应用和市场促销应用。在建筑行业的应用中,它突破了传统平面,二维和模型的束缚,使用户在设计过程中随时可以进入建筑当中,身临其境的感受环境,空间,光照等等使得用户和设计者能不断的交互意见。在虚拟环境中用户还可以用自然的方式和环境重的事物进行交互。所以虚拟实现技术在建筑设计包括其分支家装行业应用非常广泛2。在国外,德国 1991 年就开始将虚拟仿真系统用于建筑设计装修行业中来,北美和欧洲很多设计公司,房地产开发商很早以前就将虚拟仿真系统用于建筑设计,并成为他们一项很重要的营销手段3。德国 Damastadt 的 Fraunhofe 计算机图形学研究所开发一种名为“虚拟设计”的组合工具,可使得图像伴随声音实时显示。瑞士苏黎世联邦理工大学计算机图形实验室研究的课题有:COVIN,协同的虚拟环境;VIDAS,采用音频帮助的视频编码与表示;MIAS,具有最小浸入的外科手术;VISTA,将网络超级计算机用于电视的虚拟摄影室人机交互;PAVA,动画与虚拟现实平台;运动俘获:应用于文化娱乐的电子场所3。日本也是当前虚拟视景仿真技术的研究与开发上领先的国家之一,主要致力于建立大规模虚拟现实知识库的研究。NEC 公司计算机和通信分部的系统研究实验室开发了一种虚拟现实系统,它能让操作者都使用“代用手”去处理三维 CAD 中的形体模型,该系统通过 VPL 公司的数据手套把对模型的处理与操作者手的运动联系起来。东京大学的广漱研究室重点研究虚拟现实的可视化问题,开发一种虚拟全息系统。现在他们已经有了 4 项成果:一个类似 CAVE 的系统、用 HIMD 在建筑群中漫游、人体测量和模型随动、飞行仿真器。另外,日本在虚拟现实的游戏方面的研究也做了大量工作。我国的虚拟现实技术相对起步较晚,但是也到了高度重视。比如,国家高技术研究发展计划(863 计划)、国家科委重点科技项目攻关计划和北京航空航天大学“211”工程建设项目,共同资助建立了分布式虚拟环境网络(Distributed Virtual Environment Network,DVENET)4。国内有关虚拟现实技术的实验室主要有:国防科技大学多媒体实验室于 1994 年研制成我国第一个基于图像的虚拟信息空间生成平台 HVS,在几十家部队与地方单位得到很好的应用。1995 年又成功的研制了协同虚拟现实系统虚拟空间会议系统 VST5。北京航空航天大学虚拟现实实验室为虚拟现实国家重点实验室,主要负责开发军用、工业用虚拟现实系统,并负责国内虚拟现实软件技术评测工作。该实验室开发了直升机虚拟仿真器、坦克虚拟仿真器、虚拟战场环境观察器、计算机兵力生成器。为我国军事模拟训练与演习研究一个多武器协同作战或对抗的战术演练系统。他们进行基础知识的研究,并着重研究了虚拟环境中物体物理特性的表示与处理;在虚拟现实中的视觉接口方面开发出了部分硬件;实现了分布式虚拟环境网络设计,建立了网上虚拟现实研究论坛,可以提供实时三维动态数据库,提供虚拟现实演示环境,等等6 。浙江大学 CAD&CG 国家重点实验室开发出了一套桌面型虚拟建筑环境实时漫游系统。另外,我国的中科院软件所、西北工业大学 CAD/CAM 研究中心、哈尔滨工业大学计算机系、杭州大学工业心理学国家专业实验室等单位也进行了一些相关内容的研究和尝试。以北京中棠大地科技有限公司和北京嘉士维技术研究所为代表的民营科技企业,主要研究发展方向是工业、民用领域的虚拟现实技术开发以及设备一体化工作。中视典数字科技有限公司从事虚拟现实与仿真、多媒体技术、三维动画研究与开发,成功开发出拥有自主知识产权的虚拟场景浏览器软件 VR-Platform。.2 虚拟现实技术在住宅设计中的应用虚拟现实技术在住宅设计中的应用虚拟现实在建筑设计领域的应用,可以简单地归纳成如下几方面:设计手段、设计检测手段和市场促销手段7 。在建筑设计中突破了“平面、立面、剖面和三维模型”的模式,建筑师和业主可以在设计过程中实时“走进”所设计的作品中,身临其境地感受空间、尺度、环境、光线甚至声音的变化,并不断交换意见和设计思想,从而使设计更完善和完美。通过设计检测,可以对建筑及周围环境的声光效果进行检测,建立建筑结构的三维 CAD 模型和有限元模型(虚拟模型),形成基于计算机的具有一定功能的仿真系统,对系统中的模型进行参数化设计和动态分析,并根据动态分析的结果,在人机交互的可视化环境中对结构设计进行修改。从 1991 年起,德国就开始将虚拟仿真系统应用于建筑设计中。在 20 世纪的最后十年中,欧洲和北美的许多设计、房地产公司也开始广泛使用仿真系统辅助设计和房地产的销售,并逐渐取代电脑表现图和模型等传统手段,成为主要的销售和设计辅助手段之一。房地产开发商和建筑装修工程机构通过建筑虚拟漫游技术,将设计方案及理念直接地呈现在客户面前,在房屋真正建立之前,给客户一个更加直观的感受,帮助开发商在网上及发布现场招揽顾客。家装设计软件大体上可以分为两大类,一类是国外厂商生产的大型的专业图像图形处理软件,如 AutoCAD、Lightscape 和 3DS Max 等。这些软件功能比较完善,在设计软件市场占主导地位,这些软件建模精美,但是价格也非常的高,而且这类软件面向的是专业的家装设计师,普通用户使用起来还有相当大的困难。另外一类是一些软件厂商在这些软件基础上所进行的二次开发,以及自己独立开发的设计软件,如园方家居设计软件、中望装修设计软件等。该类软件比较容易上手,但价格较昂贵,而且主要还是提供给专业的家装设计师使用,因此目前使用的人还比较的少。国外著名的 3D Home Architect Deluxe 通常简称 3DHome,目前开始在国内广泛被使用,而且该软件使用简单,普通用户很容易上手。不过该类软件目前在国内仍然处于起步阶段。1.31.3 本文研究目的及意义本文研究目的及意义随着我国经济的发展和人们对住宅条件要求的提高,人们对室内装修也有了更高的要求。由业主分别对毛坯房进行装修既费时费力,还不一定能够保证质量,因而较受欢迎的菜单式全装修商品房开始出现,并有了一定的发展。但是目前住宅装修商品房的设计和展示过程中,在设计上采用 CAD,展示上采用平面效果图或现场样板房。前者局限于二维、静态的表达方式,不能充分地向人们展示和表达设计成果。样板房也由于难以进行调整,不能够充分体现“菜单”的选择功能的灵活性,因而也没有满足购房者的个性化需求。虚拟技术具有强大的三维可视化和交互功能。研究基于虚拟技术的菜单式全装修商品房漫游与编辑系统,作为供求双方装修信息的沟通平台,可以使开发商、室内设计师向业主生动地展示其设计方案和可供选择的菜单内容。业主也可以方便地从菜单中选择所満意的选项,进行组合和验证其实际的效果,从而达到沟通双方信息,充分发挥菜单的功能,促进全装修商品房的推广和建筑业信息技术的应用,提高行业生产力。另一方面,随着科技的进步和生产力的发展,计算机硬件的成本大幅下降,而图像效果极大改善、功能日益丰富。个人微机的硬件配置性能已经可以满足一般非沉式的虚拟现实系统的要求,而房产开发企业有实力进行高级的系统配置。因此,在全装修商品房设计与展示方面应用虚拟现实技术已具备充分的物质能力,在经济上也可行。开发全装修商品房虚拟漫游系统进行装修的设计与展示已具有现实需要,也具备物质条件。而目前针对菜单式全装修商品房的虚拟技术的研究还未有开展。在推广全装修商品房的过程中,建立基于全装修商品房虚拟技术的买卖双方的信息沟通平台,对于促进全装修住宅有着促进作用。1.41.4 本文主要研究内容本文主要研究内容通过对全装修商品房的概念、菜单式全装修商品房的发展状况、运作过程及其优缺点的分析,提出了基于虚拟技术的菜单式全装修商品房漫游与编辑信息系统。对系统需求和系统功能进行了分析,并对部分系统功能采用 UML 建模语言进行了描述。比较并选择系统实现工具。对系统实现的编程环境 Visual C+、三维图形开发图形库 OpenGL 和 3DStudioMAX 进行了分析。研讨了系统实现过程中需要的关键技术,并建立了程序基本框架,开发实现了系统模型显示和场景漫游等主要功能。除了系统中的场景因为没有读入材质贴图的功能,因此有些失真外,系统进一步的工作,一是研究和实现全部的三维浏览与编辑功能,包括三维场景的保存、系统中物体模型删除和碰撞检测等。二是与实际的全装修商品房项目结合,进行验证和更深入的探讨。2 2 相关理论及技术分析相关理论及技术分析虚拟现实系统虽然是多学科的综合体,但本质上仿真技术是它的核心,所以也可以把虚拟现实看作是一种类型的仿真,或者作为仿真系统的一个重要组成部分。但是虚拟现实并不能代替仿真,而是应该找到其应用于仿真的切入点。本章将详细论述虚拟现实与仿真的关系、虚拟现实应用于仿真的适用性与局限性以及如何将图形建模作为虚拟现实应用于仿真的切入点与结合点。2.12.1 虚拟现实技术的适用性虚拟现实技术的适用性虚拟现实侧重表现形式,而系统仿真侧重对于复杂系统的科学抽象并真正反映出目标系统的运动形式。系统仿真技术可以作为解决虚拟现实环境中对象行为的动力学方法,可以认为是虚拟现实的基础技术之一。而虚拟现实技术可以作为仿真可视化和人-机交互的先进工具,利用虚拟现实技术可以更好地帮助系统仿真验证模型的有效性,可以更加生动的表现仿真系统,使用户对仿真模型有更加直观与感性的认识,便于从更深的层次理解目标系统,从而更好地达到仿真的目的。所以,虚拟现实和系统仿真是紧密相关和相辅相成的两个领域。 从计算机诞生至今,人-机交互界面大致经历了命令行界面、图形用户界面和多媒体界面等几个阶段。图形交互技术的飞速发展充分说明了对于应用来说,使处理的对象易于操作并直观形象是十分重要的问题。人们的生活空间是本身就是三维的,虽然图形用户界面(GUI)已经提供了一些“仿三维”的界面元素,但实质上它们都属于一种静态的、单通道的人-机界面。虚拟现实技术具有实时的三维空间表现能力,能够实现以人为中心的人-机交互方式,虚拟现实环境能够给用户带来身临其境的感受,这些都改变了人与计算机之间枯燥、生硬和被动的现状。它不但为仿真系统中的人与计算机开创了新的交互形式,为仿真过程以及结果的数据可视化提供了新的描述方法,同时,它还为人们探索宏观世界和微观世界,或由于种种原因不便于直接观察的事物的运动变化规律,提供了极大的便利。总之,虚拟现实技术为建立起方便、自然、直观的人与计算机的交互方式创造了极好的条件。从理论上讲,把虚拟现实技术与仿真技术结合起来就可以得到一个虚拟现实仿真系统。但是,这种结合并不是简单的相加,而是融合了两种类型系统的特点的有机体。虚拟现实系统是基于仿真的,对于虚拟现实系统来说,其核心是仿真引擎。虚拟现实系统依赖仿真引擎来推动虚拟世界中时间的流逝,处理交互事件、对象的行为、模拟自然规律并决定虚拟世界的状态。而对于系统仿真来说,无论是对真实世界还是虚构世界的仿真,都可以利用虚拟现实技术作为仿真模型以及仿真结果数据的三维表现形式,实现仿真系统中的高级人-机界面。2.22.2 虚拟现实技术的局限性虚拟现实技术的局限性虚拟现实技术的应用确实可以带来很多好处,尤其是虚拟现实系统带来的沉浸感和交互性使用户可以在虚拟世界中自由的移动和浏览;可以控制虚拟世界中的物体从而影响虚拟世界的状态;能够直接观察到问题并着手解决等。但虚拟现实技术并不能解决所有问题,并不能代替仿真过程中的所有方法与手段。虚拟现实的沉浸感、交互性和想象力三大特点说明它更适合于去具体的描述事物,解决微观、细节上的问题,但是不适合从宏观抽象层次表现系统的逻辑机理模型。所以,虚拟现实技术在具有强大优势的同时,也具有其局限性。虚拟现实技术在仿真中到底适用到什么程度?是否仿真过程中的一切,包括搭建仿真模型、运行仿真系统、分析仿真结果等都适合利用虚拟现实技术来实现?目前作者所看到的大部分资料都只是概括性的列举了一系列虚拟现实技术可能或者已经应用到的领域,但却很少探讨虚拟现实技术的适用度问题。一般的应用问题可以分为宏观问题和微观问题两大类1,从实际应用的角度来看,虚拟现实技术并不一定适用于解决所有的问题。而从目前虚拟现实技术的应用情况来看,基本上是将其应用于微观决策问题一类,作者认为虚拟现实技术不太适合于宏观决策问题。注意这里所说的宏观和微观与事物的物理规模大小无关,而是从观察与解决问题的角度出发的。例如将虚拟现实技术应用于制造业仿真而产生的“虚拟制造” ,其目的是在计算机上模拟产品的制造过程,以便发现并解决该产品在制造过程中可能出现的各种问题,这是一个微观决策问题。在作战仿真模拟中,对于士兵来讲,他要观察周围的环境,配合战友取得最好的战果,是个人的微观决策问题。而对于司令员来说,他要调兵遣将,是整体的宏观决策问题。如果把司令员也放到虚拟战场上去观察火力,则无法纵观全局,从大局出发来制定战略决策,必定会导致失败。再例如,在过程工业的系统仿真中,搭建仿真模型时,建模人员关注的是设备之间的搭接关系是否正确,整个流程是否符合逻辑,这是一个宏观决策问题,此时建模人员并不关心与现实世界的设备的外观是否相似等微观决策问题。因此在这种情况下没有必要,也不适合利用虚拟现实技术表现仿真建模过程,而二维图形建模方式由于直观、简单以及便于从抽象的逻辑层次上把握目标系统的仿真模型等特点具有更大的优势。虚拟现实系统不适用于宏观决策问题的主要原因在于宏观问题不易建立三维模型,而且宏观决策关注的不是感觉上的直观与细节问题,即便能建立抽象化的三维模型对于解决问题的意义也不大,或许只是增加一些趣味性,倒不如利用二维模型比较直观、快捷。所以,相对抽象的二维图形方式的优越性,也正是虚拟现实一个比较大的局限性,即“迷失” 。在虚拟现实中游走、浏览的时候,经常容易产生“不知身在何处”的感觉,正所谓“不识庐山真面目,只缘身在此山中” ,正因为虚拟现实的沉浸感,也使用户无法从抽象的概念层次对所研究的对象整体进行把握。用户沉浸在虚拟现实中的时候,更多感受到的是系统的局部细节。因此在虚拟世界里也经常需要二维地图的导引。例如,很多三维电脑游戏在屏幕的下方都会有一个显示总体概貌的地图,该地图即是起到导航的作用,游戏玩家可以通过地图上的标志了解自己所处的位置,也可以通过操作地图将自己转移到想去的地方。由此可见,在不同的应用场合以及在仿真过程的不同阶段,虚拟现实也需要与其它类型的表现形式加以配合,才能发挥出最佳的效果。2.32.3 虚拟现实与图形建模的结合机制虚拟现实与图形建模的结合机制实际系统往往都是宏观、微观决策相混杂的,有时候不易区分,而且宏观、微观问题有些情况下也是可以相互转化的。在过程工业的仿真系统中,操作人员观察设备的状态,以便决策如何调节各种参数,这是个微观决策问题;在仿真建模过程中如何组合一个工艺流程,利用各种设备模型来搭建一个工厂的仿真模型,这又成了宏观决策问题。虚拟现实在仿真系统中主要是以表现和参与为目的的1。在仿真模型的展示阶段,我们希望用户对仿真对象有一个直观的感性认识,希望用户能够看到仿真环境中对象的外形特征,也希望用户知道有些事件发生时的现象。在这种情况下,应该利用虚拟现实产生的具有逼真性、动态性和交互性特点的三维虚拟场景,使用户身临其境、生动形象的感受其他媒体形式所无法表达的信息。在仿真建模阶段,用户需要从概念层次上了解一个工厂的工艺流程,需要从抽象的概念层次对仿真模型进行把握,建模人员首要关注的并不是外观上的相似,而是逻辑层次的正确性,上述属于宏观上的决策问题。这种情况下应该利用图形建模方式,能够更加简洁、直观的表达仿真模型。所以,在本课题中,根据虚拟现实技术与图形建模技术各自的优点与弱点,将它们结合应用于过程工业的系统仿真过程,相互配合并弥补对方的不足。对于仿真建模阶段,采用图形建模方式,而在仿真模型的展示阶段,则采用虚拟现实技术。将两者有机的结合起来,达到了很好的应用效果。当然,这两者在仿真中的应用并不是相互孤立的,它们之间是相互联系,并存在数据依赖关系的。2.42.4 三维虚拟场景的显示技术三维虚拟场景的显示技术.1 场景中的坐标系场景中的坐标系要建立三维场景,首先需要解决场景坐标系的建立技术问题。在虚拟三维场景中最常用的基本坐标系是直角坐标系,即笛卡尔坐标系。在构造和显示一个场景的过程中需要用到三个不同的笛卡尔坐标系:世界坐标系(World Coordinate)、建模坐标系(Modeling Coordinate 或局部坐标系)和视点坐标系。世界坐标系在建立了物体的模型后将它放到场景中,这时需要用一个坐标系来确定和表示该物体的位置,这就是世界坐标系。世界坐标系是相对固定的,是其他所有坐标系建立和运动的参考。局部坐标系场景中每个对象以世界坐标系为参考建立自身的、各自独立的坐标系,即局部坐标系。该坐标系在物体建模时定义,也可以说是每一对象在各自的坐标系统中建立。视点坐标系视点变换在视点坐标系中进行,视点的变化直接影响到三维视景体的定义,三维视景体用来进行目标裁减和投影变换。目标裁减是为了确定三维场景中的一部分体积,只把所确定体内的物体显示出来,视景体外多余的部分被裁减掉,而投影变换则是把三维图形变换为二维图形。视点坐标系与一般模型用到的世界坐标系不同,是由视点位置和视点向量决定的。在 OpenGL 中,这三种坐标系统均采用右手坐标系。当观察一个三维场景时,视点坐标系就成为描述这个三维场景的最佳选择,以 Wx,Wy,Wz 表示世界坐标系,Ex,Ey,Ez 表示视点坐标系,Ox,Oy,Oz 表示局部坐标系,那么在观察坐标系下,这三种坐标系的典型关系如图 5.1。EyEyEyWzWyWxOzExOy图 5.1 三种坐标系的位置关系因为各坐标系的不同特性,在场景的建立过程中,需要在不同的坐标系统中确定不种类对象的物体模型,对它们之间的关系进行描述。房型调入后在系统中的位置应该是对固定的,对系统中物体模型位置调整的都是相对于房屋模型的相对移动。因此,系统的房型的位置的确定可以在世界坐标系中建立。每个具体物体模型在其各自局部坐标系中进行定义。在浏览场景时将坐标系从场景坐标系转换到观察坐标系。在观察坐标系中定义观察参数,包括投影平面(观察平面)的位置和方向。.2 OpenGLOpenGL 简介简介OpenGL(即开放性图形库 Open Graphics Library)是一个三维图型函数库,也是一个与硬件无关的优越的应用程序设计界面接口(API)。OpenGL 在三维图形编程、科学数据可视化、实体仿真、军事、娱乐、艺术造型、国际互联网和企业内部网的 3D WEB 可视化、三维动画乃至虚拟现实等多方面有着广泛的应用。它对硬件要求不高,目前个人微机的主流配置和工作站的的计算机都能够满足它的应用要求。本文针对 OpenGL 下述几个特点进行介绍。1)OpenGL 的特点OpenGL 是唯一真正开发的、跨平台的图形标准,其特点如下:可靠度高,利用 OpenGL 技术开发的应用图形软件与硬件无关,可以运行在支持 OpenGL API 的任何硬件上。可扩展性好,OpenGL 是低级的图形 API,能够紧跟最新硬件发展和计算机图形的发展。可伸缩性好,基于 OpenGL API 的图形应用程序可以运行在许多系统上,包括各种用户电子设备、PC、工作站以及超级计算机。容易使用,OpenGL 的核心图形函数功能强大,带有很多可选参数,这使得源程序显得非常紧凑。它可以利用已有的其他格式的数据源(比如 3DS MAX)进行三维物体建模,大大提高了软件开发效率。灵活性好,尽管 OpenGL 有一套独特的图形处理标准,但各平台开发商可以自由地开发适合于各自系统的 OpenGL 执行实例。由于它具有以上的特点,许多在计算机界具有主导地位的计算机公司都采用了 OpenGL 作为三维图形应用程序设计界面。比较著名的三维产品包括动画制作软件 SoftImage 和 3D Studio MAX、仿真软件 Open Inventor,VR 软件 World Tool Kit,CAM 软件 ProEngineer,GIS 软件 ARC 等等,都是以 OpenGL 为基础开发的产品。因此现在已成为高性能图形和交互式视景处理的标准。2)OpenGL 的基本功能(1)基本图形的绘制OpenGL 提供了点、线、多边形等基本形状的函数,也提供了绘制复杂的三维曲线、曲面(Bezier,Nurbs 等)和三维形体(如球、锥体和多面体等)的函数。应用这些建模函数,可构造出各种需要的三维模型。因此许多大型三维建模软件正是利用它进行的高级开发。但直接用 OpenGL 的函数去构建复杂的物体则是相当艰巨的,需要极高的空间想象力与大量的工作。(2)变换变换是顶点、法线和纹理坐标生成图型的必要过程,也是简单图元变为复杂图型的必要过程。OpenGL 的变换分为取景变换、模型变换、投影变换和视口变换四种变换。取景变换相当于照相时改变相机的位置和方向,以确定所要拍摄的景物或物体。模型变换相当于确定被拍摄物体在场景中的摆放方式,使用模变可以对模型进行平移、旋转及缩放。投影变换相当于选择相机的镜头,以决定观察范围的大小和物体以及物体投影到屏幕上的方式。视口变换相当于确定照片的大小,指定计算机在屏幕上所占的区域。另外 OpenGL 也支持用户自定义的各种变换。(3)光照和材质设置场景中的物体的景象效果是通过光照与物体自身材质特性的共同综合结果决定的。有四种光可供设置:辐射光(Emitted Light)、环境光(Ambient Light)、镜面光和漫反射光(Diffuse Light)。对光的颜色、光源位置等相关参数也可根据需要进行选定,还可以像控制几何体一样地控制光源的位置。物体的材质参数也分为三种:环境光反射、漫反射和镜面反射。通过对两者参数的设定可以使绘制的物体具有现实世界中的光照。(4)着色OpenGL 提供了两种着色方式:RGBA 和颜色索引模式。在显示硬件功能足够强大的条件下,OpenGL 最多可以提供 1600 万种颜色,基本上可以完全模拟自然界所有的颜色。(5)反走样OpenGL 使用位图绘图的过程中,图像边缘会呈现锯齿型状的走样,反走样可以消除位图所产生的走样缺点。(6)雾化在场景中加入雾化,可以使图像更逼真,在视觉模拟方面很重要。雾化是描述相似的大气效应形式,是薄雾、烟、污染等的通称。使用雾化效果时,距观察点远的物体就变成雾化颜色,用户可以控制雾化的浓度和颜色。(7)位图和图像OpenGL 通过一系列的函数来实现图像操作功能,除了基本的拷贝和放缩以及图像数据的转换、映射和存储,还提供融合(Blending)、反走样(Antialiasing)和雾化(fog)的特殊图象的效果处理。(8)纹理映射在三维模型制作完成后,在模型表面映射真实物体的纹理,可以十分生动真实地表达物体表面。(9)动画通过双缓存动画(前台缓存和后台缓存) ,实现后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面,使动画效果连续逼真。(10)交互技术OpenGL 提供了方便的三维图形交互接口,提供三种工作模式:绘图模式、选择模式和反馈模式,可以进行人机交互操作。3) OpenGL 函数的基本组成从绘制任何简单的 3D 物体到生成三维场景交互式的动态场景,OpenGL 都是利用其强大的函数库来完成的。函数库大致可分为六类:(1)核心函数库前缀为“g1,共有 115 个函数。提供了基本的绘图命令,用来描述几何体形状、矩阵形状,可以进行光照、纹理、雾化和反走样处理等功能。(2)实用函数库前缀为“glu,共有 43 个。这些函数是比核心函数具有更高级功能的函数,为开发者提供相对简单的方法来实现较为复杂的操作,如绘制复杂椭球、茶壶、多边形分割、坐标变换和纹理映射等。(3)辅助库前缀为“aux,包括 31 个辅助函数。它们是一类特殊的 OpenGL 函数,其功能为窗口管理、事件处理和绘制一些简单的三维物体等。(4)OpenGL 工具库包含大约 30 多个函数,前缀名为“glut”的这部分函数主要提供基于窗口的工具,如定时器、多窗口绘制和空消息,并且可以绘制复杂物体的函数。(5)Windows 专用函数库包括 16 个前缀为“wgl”的函数,用来管理显示列表,字体位图,绘图描述表等。(6)Win32API 函数共有 6 个 Win32API 函数,无前缀名。主要用于处理像素格式及双帧缓存,替换 Windows GDI 中原有的同名函数。这类函数应用范围仅限于Windows95/98NT 环境中。4)OpenGL 的工作结构OpenGL 指令的解释模型是客户/服务器模式,即客户(试图用 OpenGL 进行绘制工作的应用程序)向服务器(OpenGL 内核)发布命令,这些 OpenGL 命令则是服务器来解释的。在大多数情况下,客户和服务器是运行在同一台计算机的。基于客户/服务器模式,在网络环境中则很容易使用 OpenGL,且在不同计算机上的多个客户可以得到在其他计算机上服务器的服务。这样 OpenGL 就具有网络透明性。OpenGL 的库函数被封装在 OpengL32.dll 动态链接库中,从客户应用程序发布的对 OpenGL 函数的调用首先被 OpengL32.dll 处理。在传给服务器后,被Winsrv.dll 进一步处理,然后传递给设备驱动接口 DDI(Device Drive Interface),最后传递给视频显示驱动程序。5)OpenGL 的绘制原理作为具有独立图形硬件的软件接口,OpenGL 可以在具有不同图形能力和性能的图形工作站平台及微机上运行。OpenGL 最主要的工作就是将二维及三维物体描绘至帧缓存。在 OpenGL 中物体由一系列的描绘物体几何性质的顶点(Vertex)、描述图像的像素(Pixel)组成。OpenGL 执行一系列的操作把这些数据最终转化成像素数据并在帧缓存中形成最后的结果。OpenGL 并不让每个函数立即通过处理通道,而是把它们累积在一个显示列表中,稍后一次性进行处理。处理管道的求值阶段,通过输入数据的求值多项式,提供了一种高效的方法来近似绘制几何曲线和曲面。下一阶段进行对每个顶点的操作和图元组合。对顶点进行变换和光照处理,对图元进行裁剪以适合视区大小,这样便为下个阶段的处理做好了准备。在光栅操作中,通过点、线段、多边形的二维描述,产生一系列的帧缓存地址和相关数值。这样产生的每一个片元都传入最后的处理阶段“逐个片元操作” ,对数据进行最后的处理,然后将它们作为像素存储在帧缓存中。这些操作包括:基于输入和先前存储的 z 值对帧缓存进行有条件的更新、混合输入像素颜色与存储颜色、屏蔽等其他对像素值的逻辑操作。输入数据也可以是像素形式,而不是定点形式。这类数据(可以描述用于纹理映射中的一幅图像)将跳过上述处理的第一阶段“求值程序” ,作为像素值直接在像素操作阶段进行处理。这一阶段的处理结果,或者存储为纹理内存以用于光栅操作阶段,或者采取同几何数据一样的形式进行光栅化,并将结果片元融合入帧缓存中。光栅化包含几何和物理映射两部分。几何操作足将图元转化成二维图像;物理操作是计算图像每个点的颜色和深度等信息。因而,光栅化一个图元由两部分操作组成。第一是决定窗口坐标(Window coordinates)中一个整数栅格的哪些方块由图元占有;第二是为每个这样的方块计算它们的颜色值和深度值,计算的结果将被传递到 OpenGL 的下一过程,并用此信息更新帧存中的适当单元。在 OpenGL 中,栅格方块不一定是方形的,光栅化的规则不受实际的栅格方块的宽高比的限制。当然,非方形栅格的显示必然会引起光栅化的点和线段在一个方向比在另一个方向显得宽些,方形的基片可以简化反混淆和纹理的难度。光栅化后,最终得到可见的图像。他的所有绘图对象(包括几何图元和图像)既可以存储在显示列表中(延迟模式),也可以得到立即处理(立即模式)。OpenGL 支持分布处理,在这种情况下图形的创建和显示工作可以在不同的机器上进行。在分布环境下,运行 OpenGL 程序的机器成为客户,接收绘制命令并完成绘图工作的机器成为服务器。传输 OpenGL 命令的数据格式是一样的,因此即使在不同类型的机器上运行客户端或服务器端程序,OpenGL 都能正确地工作。如果 OpenGL 程序在单机上运行,则该机器既是客户也是服务器。运用 OpenGL 进行图形操作以及最终在计算机屏幕上绘制出二维场景的基本步骤是:(1)设置设备环境的像素格式,像素格式告诉 OpenGL 绘制风格、颜色模式、颜色位数、深度位数等重要信息。(2)建立“绘制描述表” ,并选定设备环境为当前的“绘制描述表。(3)建立模型。根据基本图元建立三维模型,并对模型进行数学描述。(4)舞台布置。把景物放置在三维空间的适当位置,设置三维透视视觉体以观察场景。(5)效果处理。设置物体的材质,加入光照和光照条件。(6)光栅化。把景物及其颜色信息转化为可在计算机屏幕上显示的像素格式。(7)绘制物体。在屏幕上绘制并显示三维模型。6)OpenGL 中的变换OpenGL 在三维的空间中建立场景模型,通过在三维空间中定位和定向,选定一个观察点来确定具体要显示的模型,最后在二维的屏幕上显示出三维图像。从三维到二维的转换要经过一些变换,包括视点变换、模型变换、投影变换和视见区变换,最终将三维坐标系中的点在二维平面上表现出来。这些变换的本质是对矩阵的操作。其过程可以用照相机拍摄物体和印出照片的过程来进行比喻和理解。(1)视点变换视点变换相当于在照相时,移动相机或改变拍摄方向,以确定所要拍摄的具体景物。在 OpenGL 中是移动虚拟环境中的视点,确定要投射到二维平面上的场景中的景物。视点平移函数 glTranslatef(x,y,z),其中参数分别表示相机或观察者在场景中沿 x,y,z 方向进行平移量的大小。视点旋转函数 glRotatef(x,y,z),改变相机或观察者的方向。综合性的视点函数gluLookAt(eyex,eyey,eyez,centerx,centery,centeryz,upx,upy,upz)。是一个组合变换,其中封装了 glTranslate*()和 glRotate*()等多个 OpenGL 命令。它有三组参数:eyex,eyey,eyez 为视点或相机的位置,centerx,centery,centerz 为相机所对准或观察的物体模型所在的点位置坐标,upx,upy,upz 为相机向上的方向。利用此函数,可以通过不断改变视点的坐标,从空间的任意一点看场景,在对场景的实时游览中有很强的功能。在系统的虚拟漫游功能中将用到这个函数。(2)模型变换模型相当于调整被拍摄物体在场景中的摆放方式。在系统的虚拟场景中对物体模型位置的调整即可以通过模型转换来实现,将物体模型调整到场景中的合适位置和方向。模型变换包括平移、旋转和缩放操作。平移使用函数glTranslatef(x,y,z)、旋转使用函数 glRotatef(x,y,z)、缩放使用函数glScalef(x,y,z)。变换物体模型是通过矩阵相乘,将物体模型的点(x,y,z)从场景中变换到新点(x,y,z),变换方法为用新的矩阵乘旧点坐标。11xxyyTzz7)场景中的光照现实世界中,没有光线的时候是看不到物体的,有光照的情况下在黑色的背景中不反光的黑色物体也不易被发现。同样在虚拟场景中,仅有光源是不能够进行光照处理的,同时需要设置物体的材质属性。场景中光照处理包括光源的设置和物体表面材料的设置两个方面。对光源的定义是场景中光照的前提,对物体表面的特性进行设定可以决定三种颜色光沿各种方向的反射比例。只有物体表面也定义了吸收、反射光线的属性时,光源才起作用,物体所表现的效果也是光照与物体共同作用的结果。由于 OpenGL 的缺省光源为环境光源,因此要绘制具有逼真效果的三维场景,必须为场景另外加上光照,进行光照处理。(1)光线的四个成份光线分为四种不同类型的光的照射:辐射光、环境光、散射光和镜面光组成。辐射光是最简单的一种光,它来自发光体,并且不受其它光源的影响,例如灯光和太阳光。环境光也称泛光,并不来自任何特定的方向,也可以说来自各方向,它在场景中到处都存在。环境光环境下的物体的所有部分都是被均匀照亮的。所以物体总是可见并均匀着色。OpenGL 的缺省光源为环境光源,漫反射光是由一个特定的方向光在照射到物体表面后,向各个方向进行均匀反射形成的光。镜面反射光是由某一方向射入的光,在经过物体表面沿另一个方向反射出去所形成的光。比如镜子和金属的表面对太阳的的反光都是反射光。现实世界中的光,基本上是由以上几种类型不同、强度不同的光所组成的混合光,所以虚拟场景中为使得场景更具有真实感,一般要同时设定这几种类型的光源或物体材料特性。(2)光源的创建光源的创建过程中要分别指定光源的各种属性:位置、方向、颜色等。光源的创建和属性的设置都是通过调用函数 glLight(light,pname,param)来实现的。函数中参数 light 为定义光源的名称,OpenGL 最少可定义 8 个光源,名称也是固定的,分别为 GL-LIGHT0、GL-LIGHT1.GL-LIGHT7。(3)材料特性的定义在 OpenGL 中,材料的定义与光源的定义很相似。它是通过定义材料对红、绿、蓝三色光的反射率来近似定义材料的颜色。像光源一样,材料颜色也分为环境、散射和镜面反射成分,它们决定了材料对环境光、散射光和镜面光的反射率。定义材料的函数是 glMaterialf(face,pname,param)。其中参数 face 指定所设置的是多边形的正面、背面还是双面材料属性,它的值可以是GL_FRONT,_GL_BACK 或 GL_FRONT_AND_BACK。参数 param 用于为将被更新的面指定一个单值的材料参数,一般可以取 GL_AMBIENT,GL_DIFFUSE 或GL_SPECULAR,分别表示对环境光的反射系数、对散射光的反射系数或对镜面光的反射系数。(4)物体光照的处理的步骤在 OpenGL 中光照处理即要对光源作出设置,也要对物体的参数进行设置。对物体进行光照处理可以分为以下四个步骤:首先要定义物体各顶点的法线矢量,OpenGL 借助这些法线可以确定物体与光源的相对方向,由此计算每个顶点接受来自光照的光强度,并用于像素点的颜色计算。光源的创建、定位和打开。光源最多可以有 8 个,位置可以在无穷远或场景内部。选择光照模式。光照模式的内容包括:全场环境光的强度的设定、本地视点与无穷远点的选择以及双面光照模式选择。定义物体的材料属性。材料的属性决定了物体的反光的属性,将与前面的设置共同决定场景中的光照处理。2.52.5 三维模型添加技术三维模型添加技术.1 三维模型的分类三维模型的分类对于由开发商提供的,系统界面菜单中所提供的物体的模型及部分推荐设计方案,因为在使用中会频繁地调用并要求快速显示,可以将建立好的 3DS 模型转换为 OpenGL 格式文件,封装在系统中,采用显示列表技术进行快速的调用和显示。如开发商或客户在系统建立并运行后,又要求临时添加三维模型,可以在系统中增加读入外部 3DS 模型的功能。这要求对 3DS 的文件格式与读入方法进行分析。.2 显示列表技术显示列表技术OpenGL 绘制场景有两种模式:一种是立即模式,即程序中所有的 OpenGL命令都是按照它所发出的顺序执行的;一种是显示列表模式。OpenGL 基本默认的绘制命令的执行模式是立即模式。这种模式在纹理控制、光照参数改变等简单且常需改变的交互式应用程序中非常方便和灵活,但在对象需要被反复调用或命令的参数为常量时其执行效率却比较低。OpenGL 的显示列表(Display List)技术可以解决这个问题,它通过预先存储起来的一组经过编译的 OpenGL命令,就可以在任何地方调用和按顺序执行这些命令,执行效率也比较高,还可以简化程序的设计流程。显示列表实质上是把一组 OpenGL 命令放置在一个高速缓冲存储器里,不必进行内存管理,所以可实时方便地调用。显示列表的创建。显示列表的创建是由一对函数 glNewList()和glEndList()实现的,分别标志一个新显示列表的开始和结束。在两个函数之间的命令就被定义为一个显示列表。函数 glNewList(Gluint list,Glenm mode)中的前一个参数 list 为新创建显示列表的名字,后一个参数 mode 指定显示的编辑模式,可选选项有编译但不立即执行的 GL_COMPILE,或编译并立即执行的GL_COMPILE_EXECUTE。使用显示列表需注意:(1)每个显示列表必须使用一个正整数作为其唯一的标识值,不能为不同的显示列表指定同一个正数,否则正数原来所对应的显示列表将被覆盖。因此,在一般情况下创建一个新的显示列表时,通常使用函数 g1GenLists()产生一个或多个未使用的显示列表的指数,或者用函数 g1IsList()判断一个正值是否已被其它显示列表占用。(2)一个显示列表创建后,就不能再对它的内容进行修改,也不能在显示列表中调用函数。因为当存储坐标、颜色或别的变量时,显示列表存储了具体的数值。(3)在调用显示列表后,在显示列表中对 OpenGL 状态的改变会使显示列表外的状态同样发生改变。可以使用glPushAtrrib、glPopAtrrib、glPushMatrix 和 glPopMatrix 存储和恢复当前矩阵,保存列表外的状态。显示列表的执行和删除。可以在程序中通过函数 g1Ca11List(Gluint list)执行显示列表,参数 list 为要调用的列表的名字。可以用函数 g1Ca11Lists()执行多个显示列表,在调用该函数之前要先使用函数 glListBase()指定显示列表索引的偏移量。使用函数 glDeleteLists()删除一个或多个显示列表。显示列表可以嵌套操作使用。通过在函数 glNewList()和 glEndList()中使用显示列表调用函数 g1Ca11List(),实现嵌套调用。子显示列表前要先于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DMG-PEG-SH-MW-5000-生命科学试剂-MCE
- 丽声拼读课件公开课
- 丽声-the-big-matc教学课件
- 予与盾的结合课件
- 应急期间运力调配与调度调整预案
- 厂内道路交通事件应急预案
- 危险化学品(溶剂、酸碱、气体)泄漏应急预案
- 乡镇食品安全巡回培训课件
- 2025年四川省阿坝马尔康市事业单位工勤技能考试题库及答案
- 临淄区安全员培训课件
- 2025年浙能集团甘肃有限公司新能源项目(第二批)招聘17人笔试历年参考题库附带答案详解
- 高二物理第一次月考卷【测试范围:第11~12章】(考试版A3)
- 2025年大一上学期java期末考试题及答案
- 团校考试试题及答案浙江
- 2025-2026学年湘美版(2024)小学美术二年级上册(全册)教学设计(附目录P208)
- 法国方言政策的沿袭与变革
- 2025年“学宪法讲宪法”知识竞赛题库含答案
- 机关事业单位工人《汽车驾驶员高级、技师》考试题(附答案)
- 2025年新高考1卷(新课标Ⅰ卷)语文试卷(含答案)
- 烟酒店经营许可合同模板
- 机动车驾驶培训理论科目一完整考试题库500题(含标准答案)
评论
0/150
提交评论