3D游戏引擎

2024-05-27

3D游戏引擎(精选7篇)

3D游戏引擎 篇1

1 引言

国外对三维游戏引擎的研究主要集中在几个大公司,如3DRealms,Id Software,Valve等等,它们研究开发了一批优秀的三维引擎,如QuakeⅠ,QuakeⅡ,QuakeⅢ,Half-Life等。是它们推动了三维游戏引擎的发展。

在国内,北京航空航天大学计算机系是国内最早进行VR(Virtual Reality,虚拟现实)研究、最有权威的单位之一,它们首先进行了一些基础知识方面的研究,并着重研究了虚拟环境中物体物理特性的表示与处理;针对虚拟现实中的视觉接口,开发出了部分硬件接口并提出了有关算法及实现方法;实现了分布式虚拟环境网络设计,建立了网上虚拟现实研究论坛,可以提供实时三维动态数据库,提供虚拟现实演示环境,提供用于飞行员训练的虚拟现实系统,提供开发虚拟现实应用系统的开发平台,并将要实现与有关单位的远程连接。北京航空航天大学虚拟现实与可视化新技术研究室开发了虚拟北航校园项目,并设计实现了虚拟环境漫游引擎。在配置VOODOO2图形加速卡的Pll266微机平台上,漫游引擎驱动了一个由10万个三角形构成的北航校园模型,其交互仿真率保持在25帧/秒以上。为了验证漫游引擎的通用性,还先后将漫游引擎用于房地产项目虚拟恒昌花园及虚拟珠穆琅玛峰等漫游应用中。

浙江大学CAD&CG国家重点实验室开发出了一套桌面型虚拟建筑环境实时漫游系统。该系统采用了层面迭加的绘制技术和预消隐技术,实现了立体视觉,同时还提供了方便的交互工具,使整个系统的实时性和画面的真实感都达到了较高的水平。另外,它们还研制出了在虚拟环境中一种新的快速漫游算法和一种递进网格的快速生成算法。浙江大学开发的虚拟紫禁城项目就是虚拟环境漫游的研究成果。

四川大学计算机学院开发了一套基于OpenGL的三维图形引擎Object-3D。该系统在微机上使用Visua1C++5.0语言实现,其主要特征是:采用面向对象机制;与建模工具如3DMAX、Mutagen相结合,对用户屏蔽一些底层图形操作;支持常用三维图形显示技术如LOD等;支持动态剪裁技术;保持高效率渲染。

中国地质大学分析了基于微机的三维应用程序的结构特点,提出了一个基于OpenGL和Direct3D两种3DAPI(应用程序编程接口)的三维图形引擎结构框架。该框架己经成功应用到其开发的系统“三维城市景观浏览器Map3DViewer中”,收到了较好的效果。

2003年,国家863计划正式将游戏引擎的研发纳入了国家高科技发展计划,并将研发的任务交给了金山公司。据金山负责人说,他们已经开发了一套较为完整的引擎,并将使用于新开发的游戏中。另外据报道一个成都的大学生彭海涛与三个志同道合的朋友,历时两年研发出了国内第一款真正意义上的原创3D网络游戏《传说online》。这是一款有完全自主知识产权的3D游戏。

2 研究内容及工具

2.1 研究内容

本文研究的主要内容是游戏引擎的架构,以RPG类型为例,研究如何为一个游戏合理设计各个模块(不考虑网络应用)。系统所应具有的模块如下:

1)渲染子系统(Graphics Sub-System):渲染、光影等。

2)输入子系统(Input Sub-System):把需要的各种不同输入装置(键盘、鼠标、游戏板,游戏手柄)的输入触发做统一的控制接收处理(透明处理)。

3)声音子系统(Sound System):负责载入、播放声音。

4)时间系统(Time)。

5)支持系统(Support System):数学成分(点,面,矩阵等),(内)存储管理器,文件载入器,数据容器等。

6)脚本系统(这里只预留实现接口)

7)物理系统:碰撞检测等

2.2 工具

考虑DirectX只能使用在Windows中,程序开发使用Microsoft Visual Studio 2005,本次使用的DirectX开发包为Dxsdk_aug2007,为最新的Direct9开发包,使用的显卡为ATI9550/128b/128M。

3 Direct 3D概述

Direct 3D是一种低层图形API(Application Programming Interface,应用程序接口),它能让我们利用3D硬件加速来渲染3D世界。可以把Direct3D看作是应用程序和图形设备(3D硬件)之间的中介。通过利用Direct3D API编程,能够屏蔽许多底层实现的技术细节,缩短开发周期。

图1显示了Direct3D、HAL(Hardware Abstraction Layer,硬件抽象层)及硬件之间的关系。其中HAL即硬件抽象层,是一组指示设备执行某种操作的特殊设备代码的集合,由设备制造商实现,Direct3D不能直接作用于图形设备,通过使用HAL与硬件图形设备协同工作。

如图1所示,Direct3D应用程序最终通过图形卡的设备驱动程序访问图形硬件。由于HAL存在,Direct3D将可以不需要了解某个设备的具体硬件特性,使它能够独立于硬件设备。Direct3D提供了相应的方法在运行时检查设备是否能执行某项操作。

4 Direct3D重要概念

4.1 顶点

一个场景是多个物体或模型的集合。一个物体可以用三角形网格来近似表示,3D世界中最基本的图元就是三角形,一个多边形的两边相交的点叫做顶点。为了描述一个三角形,我们通常指定三个点的位置来对应三角形的三个顶点,这样我们就能够很明确的表示出这个三角形。3D物体中的三角形经常会有许多共用顶点。为了解决复杂精细场景重复顶点占用更多的渲染带宽,我们在创建一个顶点列表的同时也创建一个索引列表。顶点列表包含所有不重复的顶点,索引列表中则用顶点列表中定义的值来表示每一个三角形的构造方式。通常每个顶点都包含如下信息:x,y,z坐标值、颜色值、用于计算灯光的法线和纹理坐标(u,v)。

4.2 表面

是一个像素点阵,主要用来存储3D图形数据。表面数据就像一个矩阵,像素数据实际上是存储在线性数组里面。

Direct3D里面的IDirect3DSurface9接口用来描述表面,这个接口提供一些方法来直接操作表面数据:

LockRect方法:可以获得一个指向表面内存的指针,通过此指针可以对表面上任一个像素点进行读、写操作;

UnlockRect方法:给表面解锁;

GetDesc方法:通过填充D3DSURFACE_DESC结构来返回表面的描述信息。

4.3 多重采样(Multisampling)

由于使用像素来表示图像,在显示时会出现锯齿状。Multisampling就是使图像变得平滑的技术。它的最普通的用法就是全屏抗锯齿。D3DMULTISAMPLE_TYPE枚举类型能使我们制定全屏抗锯齿的质量等级。

4.4 交换链和页面交换

Direct3D通常建立2~3个页面组成一个集合,即为交换链,通常由IDirect3DSwapChain接口来表示。交换链和页面交换技巧被用在使两帧动画之间过渡更加平滑。通常由Direct3D自己去管理。

4.5 深度缓冲

深度缓冲是一个表面,但它不是用来存储图像数据而是用来记录像素的深度信息。深度缓冲为每一个像素计算深度值,并进行深度测试。通过深度测试我们可以知道哪个像素离摄像机近从而把它画出来。这样就可以只绘制最靠近摄像机的像素,被遮住的像素就不会被画出来。

4.6 顶点处理

顶点是3D图形学的基础,它能够通过两种不同的方法来处理,第一种:软件顶点处理(software Vertex Processing),第二种:硬件顶点处理(Hardware Vertex Processing)。前者总是被支持而且永久可用,后者要显卡硬件支持顶点处理才可用。使用硬件顶点处理总是首选,因为它比软件方式更快,而且不占用CPU资源。如果一块显卡支持硬件顶点处理的话,也就是说它支持硬件几何变换和光照计算。

4.7 设备能力

Direct3D支持的每一种特性都对应于D3DCAPS9结构的一个数据成员,初始化一个D3DCAPS9实例应该以用户的设备实际支持的特性为基础。因此,在我们的应用程序里,我们能够通过检测D3DCAPS9结构中相对应的某一成员来检测设备是否支持这一特性。

5 Direct3D初始化

初始化步骤:

1)获得IDirect3D9接口指针。

2)检查设备的技术特性,确定显卡是否支持硬件顶点处理。

3)初始化一个D3DPRESENT_PARAMETE结构实例,这个结构包含了许多数据成员,它允许我们指定将要创建IDirect3DDevice9接口的特性。

4)创建一个基于己经初始化好了的D3DPRESENT_PARAME-TER结构的IDirect3DDevice9对象。

6 游戏引擎架构

3D游戏引擎通常由以下几个部分组成:图形处理、染器、碰撞检测、声音处理、网络连接以及必要的游戏逻辑,因为引擎基于Direct9.O,故大部分底层实现需要Direct3D支持,具体架构如图2所示。

3D游戏引擎架构其中的游戏逻辑模块主要起着衔接引擎各模块工作、引导控制流数据流的作用,它加载游戏中的模型文件,接受并处理用户在游戏过程中输入控制请求,处理用户设定的游戏参数,将各种操作指令送到相应模块进行处理并将最后显示结果送至渲染管线。通常图像的渲染处理、光栅化在显卡的GPU(Graphic Processing Unit,图像处理单元)中实现。

7 游戏主程序

7.1 游戏主程序的流程

一个典型的3D游戏主程序的伪代码如下:

Direct3D初始化:

初始化游戏中所需要的设备;

处理消息;

while(1)

{

处理用户的输入;

更新物体的位置;

渲染处理;

}

}

其中更新物体位置信息的伪代码如下:

保存物体的当前位置;

根据控制输入或者已有逻辑计算新的位置;

if(新位置不可用或者发生碰撞)

将新位置设置当前位置;

}

}

7.2 框架模块

Windows是一个消息(Message)驱动系统。Windows的消息提供了应用程序之间、应用程序与Windows系统之间进行通信的手段。应用程序想要实现的功能由消息来触发,并且靠对消息的响应和处理来完成。由于游戏编程对处理速度的要求,在D3D编程中通常不使用Windows提供的消息,也就是说忽略Windows的消息(窗口关闭的消息通常会处理),针对这一特点,几乎所有的游戏的窗口的创建具有共性,因此设计一个用于创建窗口的类CGameEngine_app,其声明如下:

8 结束语

本文论述了基于Directx9对3D游戏引擎开发的过程,对图形渲染管线,资源管理等方面进行了深入的研究,设计并实现了一个简单的3D游戏引擎的主要部分

参考文献

[1]刘祎玮,张引,叶修梓.3D游戏引擎渲染内核架构及其技术[J].计算机应用研究,20006(8).

[2]樊翠,王丽芳.基于D3D的三维游戏引擎的设计与实现[J].科学技术与工程,2006(10).

[3]惠志,李春富,刘心雄.一个基于3D游戏引擎的虚拟展示方案[J].微机发展,2005(4).

[4]刘小丹,付丽梅.一种个性化人脸游戏引擎设计[J].辽宁师范大学学报(自然科学版),2007(1).

[5]曹阳,梁华,蔡宣平.基于DirectX的音频视频无线传输系统设计与实现[J].现代电子技术,2007(15).

[6]岳望,李根,王钲旋,等.教学用三维游戏引擎的层次结构分析与初步实现[J].大连民族学院学报,2007(5).

[7]周新春,昂海松,罗东明.基于DirectX的微型飞行器飞行仿真系统[J].系统工程与电子技术,2007(7).

[8]王其东,阳凤生.基于DirectX的汽车虚拟实验场的建立[J].计算机应用与软件,2007(5).

为游戏营销引擎注入“活”力 篇2

历经12年的发展,网络游戏在互联网营销领域仍是一个新兴而活跃的行业。虽然年轻,但是其面对的营销环境却极富挑战性:网游行业竞争激烈,据统计, 2008年市场上共有 220款网游产品亮相, 2009年迄今为止有将近 400款游戏在运营中。而这些游戏在类型、题材、风格等方面的同质化现象也愈发严重,如何在纷繁复杂的网游市场中脱颖而出是营销面临的巨大挑战。

除了来自同行的竞争,网络营销和产品本身的性质决定了网游营销并不轻松。一方面,网游营销对实效的要求非常严格,无论营销手法有多创新、多花哨,都必须有严谨的数据作为验证;另一方面,网游产品是文化、娱乐、互动三位一体的体验型产品,要求其营销手段必须要呈现很强的话题性、趣味性和互动性,才能够吸引玩家的注意和兴趣从而形成用户转化。同时,网游产品的市场营销对网络媒体的依赖度极高,网络全线承载了网游产品的品牌塑造、口碑传播和用户转化。

在这样的市场环境和营销需求下,网络游戏营销效果的可衡量性显得尤为重要,由北京创世奇迹广告有限公司所创建的网游营销引擎在这方面做出了积极的探索和实践,利用以实效为导向的各类营销手法来实现游戏产品、用户、媒体三者的最优互动。

比广告更生动比公关更互动

在广告、公关稿件、活动三大手法中,活动是为网游营销引擎注入“活”力的重要手段,主要体现在用户引导和营销周期这两个方面。

从用户的引导路径来看,网络媒体上的传播活动引发受众的关注、参与,成为引导用户进入游戏的重要途径。游戏官网和游戏内部的互动活动则源源不断地为提升用户粘性和消费提供动力。

从营销周期来看,由游戏封测、内测期到游戏运营、收费和版本升级,全程需要配合活动以保证用户始终处于一种非常“活动”的状态,从而才能够保证一款游戏产品持久的生命力。可以说,活动比广告更生动、比公关更互动,使得这种营销手段越来越受到客户和用户的青睐。

“活”之有趣

在各类不同目标的活动中,代理广告公司的工作主要聚焦在以传播网游文化、拉动用户转化的媒体活动。落实到各网络媒体的推广活动则有所不同,需要重视传播媒体的多样性和活动的互动性,紧扣“活”和“动”两字。“活”意味着媒体的选择要多样,不同媒体活动的形式要灵活;“动”则代表着与用户的沟通要互动,对玩家的转化要推动。

游戏本身就是一种娱乐产品和潮流文化,注定了在策划过程中不必遵循条条框框,可以变得更加天马行空。在创世奇迹广告公司的合作伙伴中,国内领先的网游运营商腾讯游戏所取得的成绩以及在活动方面的探索无疑是令人瞩目的。腾讯互动娱乐旗下的产品借助于腾讯平台本身强大的传播力以及庞大的用户群体,游戏营销活动具备“活”的最大资本。 Q版网游活动可以走可爱路线,比如《寻仙》号召大家一起来谱写水墨画弘扬中国风;写实的可以走硬派路线,《穿越火线》活动时不时带领用户玩一把生化狂潮,体验恐惧的感觉;中型休闲游戏活动则可以玩得很悠然,而大型网游则可以玩得很高雅。前者如《 QQ炫舞》的秀舞 技晒恩爱活动,后者如《地下城与勇士》周年品牌活动。对产品风格的把握和对媒体的选择是基础,别出心裁的活动形式和丰富的互动内容则是活动效果的保障。

“动”之有效

在这些形式多样的活动背后,结案数据所呈现出来的效果才是最终检验。简言之,就是过 程要有趣,而结果要有效。《战地之王》是腾讯2009年最为重视的一款新产品之一,同时也是主打高品质的次世代FPS大作。在封测和内测期间举办游戏账号发放活动以及大型视觉盛宴活动受到了用户的推崇。区别于传统的激活码发放内容过于平淡、形式比较生硬,《战地之王》策划了与用户互动、玩趣味测试的形式。通过一个名为“性格测试”的Flash游戏,让用户在进行性格测试的同时了解到《战地之王》产品的四种职业角色特征,将用户现实性格与虚拟角色巧妙捆绑在一起,让用户不自觉地产生认同感和带入感,使得在小规模的封测推广中就吸引了超过 2000名玩家的参与。内测后,针对《战地之王》在画面和操作感等方面大大领先同类型产品的特质,创世奇迹协助腾讯游戏联合八大媒体举办了“视觉盛宴”活动,借鉴了传统电视选秀的形式,以游戏官方为主办方,以媒体为协办方,一个主赛场,八个分赛区,最大程度地挖掘目标用户资源。而选秀产生的作品为活动二次传播提供了素材,以视频作品为例,其用户转载总量超过 25万次。

对于已经处于成熟运营阶段的网游来说,游戏营销引擎同样适用。以《地下城与勇士》周年庆为例,当时该产品已经发展成熟,最高在线用户突破百万。针对这款格斗网游的王者之作,创世奇迹策划的媒体活动主要以情感营销为主,通过回忆游戏与用户一路走来的点点滴滴来传达腾讯一直用“心”在做游戏、提供最优质的“心”服务这一运营理念。用户参与热情被极大地调动起来,其中单个视频的点击最高达到 7,501,387人次。丰富多样的怀旧形式的活动推动了在线游戏人数的持续性增长。而在另一款游戏《穿越火线》公测期间,利用视频类媒体为主要传播渠道,直观地展示该产品的优秀游戏品质,得到用户极大认可和支持,单个媒体活动页面 PV最高达到 9199484次,有效地推动了该产品在公测阶段赢得广大的在线玩家。

3D游戏引擎 篇3

关键词:AI引擎,3D,角色游戏,场景设计

i Phone平台游戏、Android平台游戏及网页游戏等在近些年迅猛发展, 并逐渐成为对发展游戏具有带动作用的新生力量。但是, 当今很多游戏都处于宣传攻势重于游戏内容品质的境况, 而且玩家在游戏体验过程中, 会逐渐提升对游戏操控性与沉浸感需求。基于这种现象, 使得3D游戏逐渐成为国内游戏主要发展方向。

1 游戏场景的设计

在开发游戏时, 贴图和模型的合理搭建能够将炫丽的游戏场景提供给玩家, 以此提升游戏本身意境, 并将游戏主题突出出来。所以, 怎样快速搭建贴图和模型, 确保游戏运行畅通是在设计游戏过程中亟待研究与解决的重要问题。

1.1 搭建游戏场景规范

一般通过Unity3D技术对场景中像地形、草木等基本对象进行直接搭建, 但对于游戏中装饰性物品与主要角色等, 必须从3D建模软件中导入。对游戏场景进行搭建时, 首先要对游戏环境予以创建, 然后放置物品或者角色。Unity3D在默认状态下的单位为1, 一般会通过修改应用程序以与该比例相匹配, 由此在资源放置时就会比较简单。

本游戏通过Maya建模, 面片数要保证为32500个Polygon面片, 若大于该数量, 那么物体就无法显现, 所以应该对模型与多边形数量进行合理分布。在制作完成一个三维模型后, 其内容主要包括单位、场景尺寸、节点编辑、命名、纹理、模型归类、纹理格式及尺寸、坐标及材质等一定要与相关制作规范相符。

1.2 优化游戏贴图

作为游戏开发平台, Unity3D模型材质通常会有很多特殊性需求, 并非Maya中所有材质球Unity3D都支持, Unity3D只支持像Lambet、Blin等标准材质, 且还要保证贴图尺寸为2n, 贴图尺寸最大值要在1024×1024以内, 烘焙过程中, 对TGA格式纹理贴图进行设置。渲染优化时, 应该对遮挡剔除技术进行选用, 也就是说, 如果其它物体遮挡该物体, 且在摄像机镜头外, 那么不会对其实施渲染。运行遮挡剔除是用虚拟摄像机在场景中将物体潜在可视状态创建出来, 以此进一步提升游戏运行质量。

2 基于3D角色游戏中AI引擎的设计研究

2.1 构建游戏AI引擎框架

2.1.1 游戏中非玩家角色的动作控制

非玩家角色在游戏中的主要行为包括巡逻、待机、逃跑及攻击等, 每个行为下的动画表现都有所不同, 以程序的方式对游戏角色动作进行控制。依照游戏引擎本身特性, 于游戏角色模型中绑定角色动作。此外, 角色模型导出设置中, 对游戏动画选项进行设置后, 再在3D引擎中导入, 在一定条件下, 采用程序控制的方式对动画剪辑进行播放, 以此控制角色动作。

2.1.2 状态机反应机制

首先对AI引擎智能进行分析:在一定范围内, 游戏AI角色巡逻, 对周边环境进行扫视, 以观察周边有玩家入侵与否, 有时可立于原地, 若无外界条件触发则为空闲待机状态, 但若在其可视范围内有玩家, 则会主动攻击, 围攻玩家, 以此对玩家造成伤害, 如果其生命力比较低, 则会自动逃跑。根据AI角色表现, 能够获得AI角色的状态及其相互转换。

Idle状态:该状态为空闲状态, 在平静状况下的基本状态。如果无条件触发, AI角色在一段时间后就会自动转入Idle状态。

Attack状态:该状态为攻击状态, 具体是攻击出现在其视野中的玩家, 对其造成伤害。如果AI角色生命力比较低, 就会自动向Escape状态 (即:逃跑状态) 转换, 如果玩家在其可视范围外, 则会自动向Patrol状态 (即:巡逻状态) 转换。

2.2 基于3D角色游戏的AI引擎寻路算法

通过特定寻路算法帮助游戏角色寻路, 也就是说, 根据某种规则对从起始点到终点的路径进行计算。本文主要分析Way Point寻路算法, 并具体应用于角色游戏中。该寻路算法具体是将若干个路径点 (waypoint) 进行标记, 采用矢量线连接各路径点, 确保游戏AI角色可以在某种规律下沿路径线自动寻路。可手工设置这些路径点, 也可程序自动生成。路径点寻路时, 游戏场景中, 需要获取任意两点路径, 可以从目标点与起始点各取一个路径点, 对这两个路径点最短距离进行计算, 以此将目标点与起始点最优路径计算出来, 这就是角色行走路径。游戏角色在到达目标点后, 必须在其视野中可看到下一最优路径点, 由此就能够在最优路径中进行自由活动。

3 总结

本研究分析与探讨了基于3D角色游戏的游戏场景布置与AI引擎的设计与优化。采用三维建模软件实施建模后, 对游戏场景于Unity3D中进行优化, 结合AI引擎关键技术、制作过程及游戏半身, 确保能够在游戏中将游戏玩家与职能角色对抗效果充分体现出来, 整个游戏主线是任务关卡形式, 因此要合理设计游戏非玩家角色, 必须通过程序对个性化敌人进行设计, 以确保游戏具有真实性、挑战性以及可玩性, 这对3D角色游戏的设计与实现极具重要参考价值。

参考文献

[1]JACOBS, S.Game programming gems7[M].北京:人民邮电出版社, 2010:191-151.

[2]MARK DELOURA.Game programming gems1[M].北京:人民邮电出版社, 2010:208-219.

[3]倪乐波, 戚鹏, 遇丽娜等.Unity3d产品虚拟展示技术的研究与应用[J].数字技术与应用, 2010 (9) :54-55.

3D游戏引擎 篇4

变电站虚拟场景主要由虚拟的变电站设备组成, 这些虚拟设备可以被虚拟的操作, 可视化的反映电力仿真的结果, 然而基于传统虚拟现实技术 (如VRML、Cult3D) 实现的变电站虚拟设备, 逐渐暴露出了真实感不高, 速度缓慢及交互性不强等问题, 很大程度上削弱了仿真的功能, 不同程度上降低了技能培训的效果。

为了解决基于传统虚拟现实技术实现变电站虚拟设备所存在的问题, 提出了基于3D引擎实现变电站虚拟设备的思想, 对引擎实现变电站虚拟设备概括出了“几何特性+行为特性+交互特性”的实现方法。

2、变电站虚拟设备实现方法

基于3D引擎的变电站虚拟设备实现是指以3D引擎的虚拟现实技术为基础展现出逼真、动态、实时、可交互的变电站设备。变电站虚拟设备实现方法基本思想是设计基于3D引擎实现变电站虚拟设备的实现框架, 该框架用于实现相关的VR技术的协调和集成。并以此为基础, 通过建模技术及引擎脚本技术实现变电站虚拟设备, 变电站虚拟设备的实现这里主要体现在, 实现变电站虚拟设备的几何特性、行为特性及交互特性。

3、变电站虚拟设备实现过程

变电站虚拟设备实现过程利用建模工具构建变电站设备外观, 在将建模工具生成的模型数据转换为引擎定义的数据结构。通过3D引擎使引擎各相关VR技术协调工作, 形成一个多技术联动的引擎框架, 虚拟模型管理器存储静态及运动变电站设备模型, 是虚拟现实的数据来源。引擎内核与操作系统进行通信交互, 负责虚拟设备的初始化、更新。脚本控制模块定义及调用3D引擎中的各个函数库来完成虚拟设备的信息模型及信息交互。变电站虚拟模型展示界面结合3D引擎渲染技术实现变电站设备虚拟显示, 最终展示出具有“几何特性+行为特性+交互特性”的变电站虚拟设备。

4、变电站虚拟设备几何特性实现

变电站虚拟设备几何特性的实现是将真实的变电站中使用的主要设备进行几何建模。

针对变电站设备多数外形不规则, 结构相对复杂的特点, 这里采用分割重组法来生成设备模型, 即将复杂的设备分解为许多相对独立子部分, 实现各个子部分的建模, 然后再集成为整体设备。

在实际几何建模过程中, 结合变电站设备的特点, 利用3Ds Max高级建模技术分类实现变电站设备的几何模型, 具体的4类分别为: (1) 对变压器等设备的外壳进行物理建模时, 采用拉伸建模技术, 通过为二维截面增加厚度, 从而生成三维模型。 (2) 对断路器的开槽和缺口建模时, 采用布尔运算建模技术, 通过几何形体间的布尔运算来构造更为复杂的三维几何模型。 (3) 对绝缘子串建模时, 采用旋转建模技术, 选一条曲线为母线, 绕旋转轴旋转形成一个三维模型。 (4) 对变电架构建模时, 采用放样建模技术, 创建模型截面和路径, 把路径作为一个主干把不同截面图形连接在一起而形成三维模型。

5、变电站虚拟设备行为特性实现

实现变电站虚拟设备行为特性的核心是结合引擎的脚本, 采用面向对象语言建模技术对变电站设备进行抽象定义。使用引擎脚本语言对变电站设备进行抽象的一个基本思路是通过触发设备内部的活动事件, 以及设备对这些活动的反应, 调用相应的行为动画。这首先需要定义设备的属性, 本文将设备属性分为以下几类:

(1) 几何属性:包含了设备形体的几何信息和拓扑信息

(2) 管理属性:包含了设备的管理信息, 如设备的名称、编号等。

(3) 技术属性:用于描述设备在线路中的约束关联, 它反映变电站设备的“五防”操作, 或设备所处线路的位置约束或设备的操作行为模式。

(4) 状态属性:用于描述设备在操作前后的状态, 如隔离开关的“断开”、“闭合”等。

6、变电站虚拟设备交互特性实现

交互算法是提高虚拟设备交互特性的核心, 针对目前3D引擎的包围盒树交互方法作为一种整体交互方法, 交互性不强、不适于应用在变电站虚拟设备的问题, 本文提出了基于变电站虚拟设备的交互算法。

当视点处于变电站设备节点网格外时, 如果有处于设备包围盒以内的零件 (叶子节点或子树) , 则在包围盒碰撞检测前将叶子节点或子树从遍历过程中删除, 遍历完成后恢复为保留的树型结构。当视点位于当视点处于变电站设备节点网格内时, 则在包围盒碰撞检测前将设备从遍历过程中删除但保留设备的叶子节点和子树, 并将设备节点用一个空节点, 空节点不含任何几何实体, 遍历完成后恢复为保留的树型结构。修改后的算法可以只处理视点相关的设备或零件, 减少了求交的实体数, 有效的提高了变电站碰撞检测的效率, 同时基于设备的碰撞检测技术, 可以根据视点对设备作出多种处理, 有效的增加了模型的交互性。

7、结束语

本文提出了基于3D引擎技术生成变电站虚拟设备的方案, 概括出了“物理特性+行为特性+交换特性”的实现方法, 进一步提高了变电站虚拟模型的真实感和交互性, 解决了传统培训软件变电站设备虚拟展示的弊端, 有效的提高了培训效率。

参考文献

[1]张照彦, 段新会, 王兴武等.虚拟现实在变电站仿真中的应用.计算机仿真, 2008, 25 (2) :252-256

[2]张炳达, 张瀑.虚拟现实开发平台在变电站仿真系统中的应用.高电压技术, 2008, 34 (2) :338-341

[3]贺庆, 龚庆武.变电站仿真中虚拟现实场景与实时监控的连接.系统仿真学报, 2006, 18 (5) :1406-1410

[4]单业才, 朱传柏, 郭创新等.城市电网空间三维可视化信息平台技术构架.电网技术, 2007, 31 (3) :29-34

3D游戏引擎 篇5

1 基本思想

根据楼层地形的不同, 组织路网点, 并在路网数据文件中记录路网点的位置坐标信息以及连通信息。 搜索路径时最多只有两个辅路网点参与, 大大减少了搜索路网点的数量。

2 路网构建与寻路方法

前面介绍了同层寻路的基本思想, 下面将介绍室内同层寻路的路网构建方法与寻路方法。

2.1 室内同层寻路的路网构建

(1) 构建主路网点数据列表, 主路网点数据列表每行表示一个主路网点, 以 “v” 开头, 后面跟着点的地平面X、 Z坐标, 以 “M” 结束, 表示为主路网点。

(2) 构建辅路网点数据列表, 辅路网点数据列表每行表示一个辅路网点, 以 “v” 开头, 后面跟着点的地平面X、 Z坐标, 以 “F” 结束, 表示为辅路网点。

(3) 构建连通性信息列表, 连通性信息列表每行表示一条连通性信息, 以 “p” 开头, 后面跟着词条连通性信息相关的两个路网点标号, 中间用 “—” 相连, 每行最后的数值为此条信息相关的两个路网点之间的距离权值。

2.2 室内同层寻路

(1) 将指定楼层的主路网点都放到一个集合A中。

(2) 首先根据起点终点的坐标确定与起点、 终点距离最近的路网点, 找到的路网点既可能是主路网点也可能是辅路网点。

(3) 若起点路网点是主路网点则跳过此步骤, 若起点是辅路网点则将辅路网点添加到集合A中。

(4) 若终点路网点是主路网点则跳过此步骤, 若终点是辅路网点则将辅路网点添加到集合A中。

(5) 在集合A所表述的含有所有本楼层主路网点和仅含有相关辅路网点的路网中搜索从起点路网点到终点路网点的路径。

(6) 在路径的开始增加从起点到起点路网点的直通路径。

(7) 在路径的最后增加从终点路网点到终点的直通路径。

(8) 将f, e, g合成为最终路径。

所述路网点包括主路网点和辅路网点; 主路网点连通至少两个其他路网点, 辅路网点仅仅连通一个其他路网点。 路网为两个路网点的路径, 记录着两个路网点标号和路网点之间的距离权值。

所述搜索依据路网点之间的距离权值取最小值, 大量辅路网点中每次最多有两个辅路网点参与路网搜索。

3 具体实施方式

下面结合附图和实施案例做进一步说明。 楼层地图和最终路径图如图1, 图2 所示。

层内数据文件组织以行为单位进行存储, 一个示例如下:

上述文件第一部分为主路网点列表, 每行表示一个主路网点, 以 “v” 开头, 后面跟着点的XZ坐标, 最后的 “M” 表示为主路网点; 第二部分为辅路网点列表, 每行表示一个辅路网点, 以 “v” 开头, 后面跟着点的XZ坐标, 最后的 “F”表示为辅路网点; 第三部分为联通性信息列表, 每行表示一条联通性信息, 以 “p” 开头, 后面跟着此条联通性信息相关的两个路网点编号, 中间用 “-” 相连, 每行最后的数值为此条信息相关的两个路网点之间的距离权值。

从图1 可以看出此次路网搜索的起点和终点都位于同一个楼层, 则执行层内搜索。 执行层内搜索时步骤如下:

(1) 将指定楼层的主路网点 ( 图1 中小矩形节点) 都放到一个集合A中。

(2) 首先根据图2 中起点终点的坐标确定与起点、 终点距离最近的路网点, 本次搜索找到的与起点终点最近的路网点都是辅路网点。

(3) 本次搜索起点路网点是辅路网点, 将其添加到集合A中。

(4) 本次搜索终点路网点是辅路网点, 将其添加到集合A中。

(5) 在集合A所表述的含有所有本楼层主路网点和仅含有相关辅路网点的路网中搜索从起点路网点到终点路网点的路径, 搜索结果为路径1。

(6) 在路径的开始增加从起点到起点路网点的直通路径3。

(7) 在路径的最后增加从终点路网点到终点的直通路径2。

(8) 将路径3, 路径1, 路径2合成为最终路径, 如图2粗线标注。

4 结语

将路网中仅仅连通一个其他路网点的路网点标识为辅路网点, 大量辅路网点中每次最多有两个辅路网点参与路网搜索, 求解的搜索空间大大缩小, 因此比传统的所有路网点都参与搜索的方法效率有很大提高。

摘要:介绍了一种室内同层寻路的路网构建和寻路方法, 尤其是一种应用在移动终端的室内同层寻路的路网构建和寻路方法。该方法缩减了层内每次搜索中的无关路网点数量, 大大提高了层内搜索的效率。

关键词:室内同层寻路,路网构建

参考文献

[1]【美】Thomas H.Cormen, 【美】Charles E.Leiserson.算法导论.北京:机械工业出版社, 2014.

[2]【美】Ronald L.Graham, 【美】Oren Patashik.具体数学.北京:人民邮电出版社, 2013.

3D游戏引擎 篇6

本文提出了基于开源代码的Web3D引擎,开发交互式产品展示系统的方法,并以陶瓷产品为例,开发了一款基于开源Web3D引擎idx3D,具有交互功能的三维陶瓷产品展示系统,该系统的运行无需下载特定的插件。

1 开发步骤

根据Web3D引擎idx3D中经修改后的各类的属性和方法,总结了以下的开发步骤:

(1)为所开发的系统建模。系统需要先建立模型,才能对相应对象进行交互式处理。由于idx3D引擎中没有建模的功能,需要借助其他建模工具实现建模。

(2)构造场景。系统中,摄像机、光源以及物体等各类对象都要置于场景中予以管理和操作,因此首先要构造场景。

(3)加入材质和灯光。在场景中需要加入相应的材质和灯光。

(4)将模型文件导入程序中。导入的物体模型添加到场景中。

(5)重构场景,以及场景规格化。由于场景中添加了材质、灯光以及物体模型等内容,需要将这些对象重构成新的场景,并对场景进行规格化操作。

(6)初始化渲染状态。对重构后的场景进行渲染,此时是静止状态,并没有交互式的操作。

(7)设置旋转和缩放矩阵,实现旋转和缩放。对步骤(6)的场景进行旋转和缩放的交互式操作的实现。

(8)进行渲染得到具有三维效果的交互式系统。将步骤(7)所完成的能缩放和旋转的场景进行渲染最终实现交互式三维展示系统。

2 应用案例开发

2.1开发系统的简介

应用基于JAVA技术的Web3D开源引擎idx3D,开发了一款陶瓷产品———茶壶的三维展示系统。所开发系统的功能如下: (1) 可以根据用户的需求建立茶壶的模型; (2) 可以自由设置茶壶的花纹和材质; (3) 通过鼠标的移动,可以实现对茶壶对象的旋转操作; (4) 通过键盘的操作,可以实现对茶壶对象的缩放操作。具体来说,按动键盘上‘w’字符,茶壶对象会放大,按动键盘上‘s’字符,茶壶对象会缩小。

2.2具体实现

2.2.1 3D建模

用Autodesk的3D’s Max工具,为茶壶进行建模,再进行贴图建模和贴图完成时的截图如图1所示。建模完成后,生成.max文件。由于Web3D引擎idx3D的要求,需要导出一个.3ds文件,和一个用于贴图的.png图像文件。

2.2.2代码的实现

本节中主要介绍开发流程的实现,以及主要部分的方法调用等内容,代码的流程如图2所示。主要介绍了4个函数:init()、update()、mouseDrag()和keyDown()。从功能上看init()函数主要实现了对整个系统的构建,update()函数实现对场景的渲染以及描画到显示器的相应窗口即applet中mouseDrag()函数主要实现了鼠标操作的功能即对物体旋转的操作,keyDown()函数主要实现了键盘操作的功能即缩放功能。

在public void init()中,主要进行了该系统的初始化处理,即3中介绍的开发步骤的具体实现,包括:

(1)构建场景:用new idx3d_Scene()语句创建场景对象,参数为场景的大小尺寸。

(2)为场景添加材质和灯光: (1) 调用addMaterial()方法,为场景添加材质。根据材质的不同指定不同的参数; (2) 调用setAmbient()和setBackgroundColor()这两个方法,为场景添加灯光和背景颜色。

(3)导入建好模型的.3ds文件:用new idx3d_3ds_Importer().importFromURL()语句创建导入文件对象,参数为所建模型.3ds文件的路径和场景的对象。

(4)重构场景和场景的规格化: (1) 重构场景时,场景对象scene调用rebuild()方法,将材质(Material)和对象(Object)生成对象数组; (2) 对场景规格化时,场景对象scene调用normalize()方法来实现规格化。

(5)重置场景矩阵:由于场景和对象都在本地空间下建模,在规格化之后需要将场景和对象在本地空间下的坐标转化为世界空间下的坐标,进行重置场景矩阵的计算,具体实现通过语句scene.matrix.reset()。

(6)设置摄像机的位置,建立视图空间:将摄像机的位置设为点(0,0,-100),设置摄像机位置的语句为场景对象scene调用相应方法,scene.defaultCamera.setPos(0,0, -100) 。

修饰类型为public、无返回值的同步方法update,其参数为Graphics类型的对象g,即public synchronized void update(Graphics g)中,进行两个操作:

(1)将连同对象在内的整个场景渲染到一张图片中,场景对象scene调用render()方法。render()中是调用了renderPipeline中的render(this.defaultCamera)方法,参数为默认摄像机。

这一部分是将连同三维图形在内的三维场景,转化为具有三维效果的二维图像,下一步是将这个图像描画在applet上。

(2)将渲染好的图片画到屏幕上,此处实例化Graphics对象g,调用drawImage()方法在applet上进行描画。

在public boolean mouseDrag (Event evt, int x, int y) 中,场景对象scene调用rotate()方法,进行旋转处理。rotate()方法在Scene.java继承自的CoreObject.java中定义,rotate()方法实现旋转的具体思路为:分别计算绕x轴,y轴和z轴旋转时的变换矩阵,再相乘而得到一个变换矩阵,再进行渲染。

在public boolean keyDown(Event evt,int key)中,场景对象scene调用scale()方法,进行缩放处理。scale()的参数分别是zoomIn()方法和zoomOut(),放大时参数为zoomIn()方法,缩小时参数为zoomOut()方法。zoomIn()与zoomOut()的作用类似,都是用来计算缩放比例的方法,zoomIn()用来计算大于1的比例,zoomOut()则用来计算小于1的比例。scale()方法实现缩放的具体思路是:通过zoomIn()方法或zoomOut()方法计算出来的缩放比例计算相应的变换矩阵,再进行渲染。

图3是这个三维展示系统的运行结果,若需要将该系统在浏览器上运行,只需将该applet加载在HTML网页上即可。图4是用鼠标对三维图形进行旋转操作的截图,图5是按键盘的‘w’键对三维图形进行放大操作的截图,图6是按键盘的‘s’键对三维图形进行缩小操作的截图。

3 结束语

本文在对比了几种3D技术的基础上,介绍了开源Web3D引擎idx3D的具体实现,以及对原引擎的优化。在此基础上,明确了基于开源Web3D引擎开发系统的流程,以及具体开发方法。最后,提供了一个茶壶展示系统的开发实例,该实例的运行无需下载特定插件。

摘要:应用Web3D引擎开发的计算机仿真系统或虚拟现实系统均需在Web浏览器上运行, 需要其能快速下载和运行, 并且尽量不需下载特定插件。采用基于JAVA技术的开源Web3D引擎开发的三维系统可以满足上述要求, 开发的展示系统可以实现三维图形的旋转、缩放等交互功能。此外, 在系统开发过程中对引擎中不完善的部分进行了必要的修正。

关键词:计算机应用,Web3D引擎,三维系统,交互,JAVA技术

参考文献

[1]罗立宏, 谭夏.几种Web3D技术及比较[J].甘肃科技, 2007 (5) .

[2]朱珊虹, 李彦.几种Web3d技术的比较研究[J].内江科技, 2010 (4) .

[3]罗立宏, 谭夏梅.基于ShockWave3D的Web虚拟现实技术研究[J].科技资讯, 2007 (4) ,

[4][美]Frank D.luna.DirectX 9.0 3D游戏开发编程基础[M].北京:清华大学出版社, 2007.

[5]李春雨.计算机图形学及实用编程技术[M].北京:北京航空航天大学出版社, 2009.

[6]姚继权, 李晓豁.计算机图形学人机交互中三维拾取方法的研究[J].工程设计学报, 2006 (2) .

3D游戏引擎 篇7

1 Unity3D引擎虚拟场景搭建

Unity3D引擎版本选择动画编辑能力和渲染能力完善的4.3版本, 为真实展现战场环境, 模型导入采用由中低精度建模的3ds Max集装箱货船模型。模型以FBX格式导入, 对其添加刚体属性, 保证其正确的物理逻辑。在全局灯光和局部灯光处理上, 对船体添加方向光 (Directional lights) 和投射光 (Spot lights) , 尾楼舱室添加点光源 (Point lights) , 并利用Light Probe动态光探头, 使动态人物在烘焙好的场景里面受到光的照射效果。

2 Mecanim动作融合

战术仿真的人物动作处理主要应用Mecanim动画系统来完成, 将Unity3D引擎官方“大兵”动作模型进行动画分割, 建立基本的“走”“跑”“蹲下”和“跳跃”动作片段, 分割其他动画模型动画, 选取左手持盾、双手持枪动画作为融合动画。动作融合采用增添Right和Left动画层来实现, Base Layer层作为基础层影响全身动作, Right和Left层分别为右手和左手动画层, 建立Right和Left两个Avatar Body Mask来分别指定分别左手、右手受动画影响的骨骼, 双手操作武器和开门动画比较复杂, 牵连身体躯干和头部, 将双手和躯干、头部骨骼一并指定;持盾动作, 只指定左手和左手臂骨骼。持枪动画选择覆盖Base层, 持盾动画做叠加Base层处理, Right和Left层权重设为0.5 (如图2) 。为实现连贯人物战术动作, 建立角色控制器, 添加多段动画混合树Blend Tree, 对于持枪动画idle2设置Blend=0.27来控制动画混合的影响权重, 各层动画连接, 主要用时间控制和布尔控制, 跑步和站立动画的切换的转换条件用Speed来控制, 用Fire来控制武器攻击动画, 用Shield来控制是否使用盾牌, 其中开门动画用盒状碰撞检测机制实现。

3 Navmesh群组控制

海警查缉战术仿真的群组路线主要应用Unity3D4.x版本新增的Navmesh寻路系统来实现。战术小组分为警戒组、支援组和突击组, 每组队员4人, 战术演示为搜捕推进队形, “T”型、“L”型路口协同战术, 入室搜捕等战术。为解决多组寻路路线冲突问题, 通过划分单一人物单层路线来解决, 设置Nav Mesh Layer为Red、Blue、Green、Yellow四层, 为角色添加Nav Mesh Agent组件, 将其Nav Mesh Walkable设置在不同层。在解决小组整体推进问题上, 在行进路线关键位置设置多个Box Collider碰撞检测器, 对人物行进速度、战术动作进行改变。为实现交替掩护动作, 在队员交替掩护路线上通过为不同人物设置多个拾取位移点empty Gameobject来实现人物“蛙跳式”交替掩护位移, 在尾楼侧楼梯路线上, 每层设一个拾取位移点, 通过生成Off Mesh Link指定Start和End位置。

交互控制上应用GUI按钮调用人物每一段动画过程, 通过标签获取游戏对象, 使用Find Game Object With Tag () 方法把将相应的标签名称作为参数传入。

4 NGUI系统

Unity3D的NGUI系统拥有强大的页面编辑能力, Unity GUI控制是利用一类被称为On GUI () 的函数, 只要在控制脚本激活的状态下, On GUI () 函数可以在每帧调用。使用NGUI Text和Buttom控件创建基本菜单, NGUI Texture动态加载贴图, 对于教学模块添加Scrollview控件, 实现文本纵向阅读, 在战术演示界面, 使用NGUI Content () 方法设置提示信息, 并使用NGUI Skin设置界面风格。

5 系统优化与测试

我们将Unity3D引擎工程发布到Windows环境下, 测试仿真平台运行效果, 整体画面相对流畅, 但场景载入运行较慢, 我们对系统做进一步优化。场景优化, 我们替换了舱室部分中精度模型, 改用低精度模型, 通过法线贴图来满足场景需要, 并对模型船体构架去除网格中的额外多边形。代码优化, 更改代码中检查游戏对象标签的方法, 如用“if (go.Compare Tag (“Soldier”) ”来代替“if (go.tag==“Soldier”) ”等;用简单的“for”循环代替“Foreach”循环, 使用“Get Component”获取元件引用需求。其他, 减少角色控制器移动命令的调用, 缓存每帧的移动请求, 并且仅运用一次;通过移除代码中的字符串连接减少GC垃圾生成;碰撞器选择Box Collider碰撞检测器, 并将调用人物动作程序赋给碰撞检测器。

6 结语

笔者介绍的方案是基于Unity3D引擎的海警查缉战术仿真, Unity3D引擎的Mecanim角色动画系统有很强大角色动作融合能力, Unity3Dstore提供了大量人物动作包, 通过动作融合能够创作自己需要的人物动作, 这样省去了大量用代码或者3ds Max设计人物动作的精力, 同时也满足了大部分使用者同时使用。Navmesh寻路系统, 可以满足单人和多组寻路需要, 通过多层选择解决了人物路线冲突。经过多次调整与测试, 整个平台运行效果良好, 角色动作仿真度高, 整个平台交互性良好, 能够达到教学与演示效用。在保证效果的前提下, 简单解决了虚拟场景优化和代码优化的问题。

摘要:随着虚拟现实技术的迅速发展, 其在军事虚拟仿真领域的应用也越为广泛, 尤其是在武器仿真, 构建军事训练虚拟仿真平台等方面前景广阔, 可研究性强。通过对海警查缉战术的研究, 在Unity3D引擎中对场景模型进行渲染, 通过其Mecanim动画系统和Navmesh寻路系统进行动画融合, 设定自主寻路, 采用了盒状碰撞检测机制, 最终实现NGUI战术页面教学, 海警查缉战术动作及群组战术仿真。

关键词:Unity3D引擎,虚拟仿真,Mecanim,Navmesh

参考文献

[1]路朝龙.Unity权威指南-Unity 3D与Unity 2D全实例讲解[M].北京:中国青年出版社, 2014.

[2]宣雨松.Unity 3D游戏开发[M].北京:人民邮电出版社, 2012.

上一篇:订购管理系统下一篇:变速减速器