公务员期刊网 精选范文 仿真引擎的关键技术范文

仿真引擎的关键技术精选(九篇)

仿真引擎的关键技术

第1篇:仿真引擎的关键技术范文

关键词: Delta3D; 仿真引擎; 开源软件; 军事仿真

中图分类号:TP319 文献标志码:A 文章编号:1006-8228(2014)02-33-03

0 引言

目前,作战实验中大量采用了3D图形技术。在游戏和仿真领域,从技术实现上可将3D图形技术分为基础层、中间层和应用层三个层次。基础层主要是3D加速硬件和厂商提供的基本的API函数接口;中间层则是根据游戏和仿真各自不同的需求编写的公共引擎或软件(在游戏领域多称之为游戏引擎,仿真领域则称之为仿真软件或仿真环境);应用层则是具体的游戏产品或仿真应用。

一个良好的仿真引擎是仿真应用研发的基础,在一个相对成熟的仿真引擎基础上,作战实验系统研发人员能够根据需求较快地开发出相应的作战仿真软件,仿真软件厂商也能很快地为客户建立各种仿真应用。

目前仿真软件中有大量的商业化软件,如Id Software公司的Quake、Quake II和Quake III引擎,Epic Megagames公司(即现在的Epic游戏公司)的Unreal Tournament引擎,Monolith公司的LithTech引擎,但这些软件价格昂贵,且源码不开放,对作战实验这种需要从底层保证其结果可靠性的应用来说,造成很大困难。

美军较早意识到了这种困难,他们积极转向开源软件。Delta3D是一款由美国海军研究生院(Naval Postgraduate School)开发的全功能游戏与仿真引擎,得到美国军方巨大的支持与丰厚的投资[1]。该引擎应用领域极为广泛,在培训、教育、娱乐行业和科学计算可视化领域等方面建模与仿真软件的开发中都得到了广泛的应用。它的标准化设计把一些知名开源软件和引擎如Open Scene Graph(OSG),Open Dynamics Engine (ODE),Character Animation Library(CAL3D),以及Open AL等融为一体。Delta3D通过对这些底层模块进行隐藏封装、整合在一起,从而形成了一个使用更加方便的高级API函数库,使得开发者在必要的时候能够使用底层函数进行二次开发。

本文将对开源软件Delta3D的模块组成、开发方法以及与相关仿真软件的配合使用进行介绍。

1 Delta3D功能模块介绍

Delta3D在软件系列中,处于中间层(Middle layer)的位置上。Delta3D主要目标是提供一套简单可行的API函数库,构成搭建任何可视化软件的基本要素。

Delta3D是一个开放源码的引擎,研发开始于2002年4月,集成了现有最先进的开源软件(Open Source projects),并经过全球Delta3D关注者的增补与完善,相对于购买一款价格很高又不开放源代码的引擎具有很大的优势,使用Delta3d可以任意修改代码并且定制所需的功能,这是不开放源代码的商业引擎无法做到的[2]。

2 Delta3D应用程序的基本框架

2.1 Delta3D中的基本概念

在Delta3D的开发中,有几个重要概念,如游戏管理器(Game Manager),游戏角色(Game Actor),游戏组件(Game Component),以及游戏消息(Game Message)。

Delta3D提供仿真应用程序的基本要素,如场景管理,物理系统,立体音效,对象加载,动态角色库,环境特效,光照,地形支持,相机,以及角色动画。

在应用程序中,游戏管理器负责管理整个应用程序虚拟世界中存在的所有要素以及角色或组件之间的交互,游戏管理器拥有所有的游戏角色,普通角色,组件以及消息。游戏管理器的主要任务是:管理消息;维护系统内部的所有的角色,包括游戏角色以及普通角色;提供游戏管理组件功能。

普通角色或者称之为非游戏角色一般指那些游戏世界中静态的物体,比如:房子、不移动的灯光、树木、地形等,游戏角色指那些具有生命的角色。

在Delta3D中,一个很重要的概念是角色。游戏管理器只识别游戏角色,不直接识别游戏角色。因此游戏角色只能够通过角色与游戏管理器发生关系。游戏消息是角色和组件之间互相通信的内容。消息通常用来发送数据(比如属性变化)或者行为(请求或命令)。图2展示了消息在游戏角色,游戏管理器以及组件之间的流向。

2.2 基本程序框架[3-4]

程序的逻辑顺序依次是:创建新的dtABC::Application对象,加载实体对象,向场景中添加实体对象,设置实体对象在三维场景中的位置,设置摄象机,最后进入仿真循环。

较复杂的仿真程序主要是在仿真推进中需要将对象的属性进行更新,所以需要管理的对象数量、复杂程度会大大增加。

3 与相关仿真软件的配合使用

Delta3D是一套复杂的软件,它不仅仅实现了仿真程序框架,而且将其他一些开源项目进行了集成,从而可以实现更复杂的功能。

3.1 网络模块

如今分布式仿真大行其道,仿真程序的网络功能是不可或缺的。HLA是如今仿真开发的标准架构,Delta3D也对HLA提供了支持。Delta3D提供了HLA组件作为一个消息翻译器(Game Translator),游戏管理器(Game Manager)对消息的处理首先要经过消息翻译器的处理,然后按照HLA架构的要求由rti软件进行收发。HLA组件对rti函数进行了封装,使用起来比直接调用rti函数要大大简化。rti软件同样有开源版本,与Delta3D配合使用时,推荐使用CERTI。

除HLA外,Delta3D还可以使用另外的网络通信机制,如使用开源的GNE库(Game Networking Engine,游戏网络引擎)。GNE库是一个可移植的多线程网络函数库,它为常用的网络程序开发提供了一套框架,开发人员可以直接在这个框架之上添加代码。

3.2 物理引擎

物理引擎主要包含游戏世界中的物体之间、物体和场景之间发生碰撞后的力学模拟,以及发生碰撞后的物体骨骼运动的力学模拟。Delta3D中对物理引擎的封装也有几种不同的实现方式[5],第一是在dtCore中对ODE(开放动力学引擎)的封装,第二通过dtPhysics使用PAL(physics abstract layer)对三种物理引擎Bullet、ODE、Phys的封装。

在Delta3D中应用ODE的时候,可以使用Scene类调用ODEController,通过ODEController中配置ODESpaceWrap,进行碰撞检测设置。

3.3 人工智能

在娱乐游戏或者军事仿真中,都会涉及到路径寻找、避障等问题。Delta3D提供了dtAI模块,通过AIutility工具可以在场景上编辑路点(WayPoint),然后提供包括A*算法在内的一些标准程序,实现AI功能。当然,人工智能也有很多第三方库,如NavMesh,采取导航网的方法来进行路径选择,同样可以集成到Delta3D应用中。

4 结束语

本文分析了开源软件在仿真领域得到重视的原因,并介绍了一种得到广泛应用的开源软件Delta3D。Delta3D集成了大量的其他开源项目,并开发了一个易于使用的应用程序编程接口,它的开放性、易用性将会为它的未来发展带来广泛的空间。

参考文献:

[1] Delta3D Homepage[EB/OL].http:///index.php,2013-10-10.

[2] Delta3D Tutorials[EB/OL]. http:///article.php?story=20050720155458456&topic=tutorials,2013-10-10.

[3] Delta3D Forum[EB/OL]. http://delta3d. org/forum/index.php,2013-10-10.

第2篇:仿真引擎的关键技术范文

关键词:3D打印;机械基础

中图分类号:G712 文献标识码:B 文章编号:1002-7661(2015)05-014-01

在机类基础课程学习过程中,常用零部件、传动机构、常用机构是教学的重要部分,需要学生知道其结构、原理和常见故障排除。而在培训和教学过程中如何让专业基础课程更加紧贴专业课、更加紧贴生产实际,成为必须面对的问题。为提高《机械基础》实验课程教学水平,笔者提出了一种基于3D打印技术的实验室建设方案。

一、方案总体设想

机械基础半实物仿真实验室系统由3d打印模块和仿真设计模块组成。仿真设计模块的主要作用是提供一个原理演示和仿真设计环境,逼真地再现学生在实验过程中看到的情况,并通过显示系统达到与操作者实时互动,让学生产生身临其境的感觉。根据仿真实验室系统的作用,对系统提出如下功能要求:建立一个逼真的虚拟环境,包括自然环境、工作环境和实验环境;能够达到人机互动,并通过显示终端实时显示实验状态;事件特殊效果的显示和运动碰撞检测响应与实际情况相符。3d打印模块包含3d打印机硬件、驱动程序和模型优化程序组成,可完成仿真设计模块设计的零部件。在仿真设计模块中用户管理模块完成对使用者(学生)和管理者基本信息、学习进度、考核情况等基本信息进行管理。原理学习模块包含文字、图片、视频等多媒体素材,按照《机械基础应用》教材章节进行编排。学生可通过目录和关键词检索两种方式学习、查阅相关知识。为开阔学生视野在原理学习模块还将编排部分拓展内容。在虚拟实验模块中学生可以通过鼠标拾取、点击菜单等方式完成预定实验。参数化设计模块将利用soliderworks提供的动态链接库进行二次开发,学生通过勾选、指定输入等方式来完成常见机械零部件的设计和三维形体展示。在3d打印模块中模型优化程序完成3d模型格式的转换和面数的优化。系统总体组成框图如图1所示。

图1系统总体组成框图

图2 软件功能组成框图

机机械基础半实物仿真实验室系统软件部分依靠unity3d引擎采用Visual C#来进行开发。其中界面部分利用Microsoft最新的界面技术WPF,采用XAML语言来进行编写,数据库管理部分采用SQL2008来进行存储。为提高程序开发效率采用模块化编程思想,软件模块划分如图二所示。

二、方案设计关键技术

1、3D打印技术

3D打印(3D printing),即快速成型技术的一种,它是一种以数字模型文件为基础,运用粉末状金属或塑料等可粘合材料,通过逐层打印的方式来构造物体的技术。3D打印通常是采用数字技术材料打印机来实现的。过去其常在模具制造、工业设计等领域被用于制造模型,现正逐渐用于一些产品的直接制造,已经有使用这种技术打印而成的零部件。该技术在珠宝、鞋类、工业设计、建筑、工程和施工(AEC)、汽车,航空航天、牙科和医疗产业、教育、地理信息系统、土木工程、枪支以及其他领域都有所应用。

2、unity3d虚拟仿真技术

第3篇:仿真引擎的关键技术范文

关键词:电力电缆;故障定位;仿真培训;Flex

1、引言

由于电力电缆应用成本的下降,以及电力电缆自身所具有的供电可靠性高、不受地面、空间建筑物的影响、不受恶劣气候侵害、安全隐蔽耐用等特点,获得了越来越广泛的应用。然而,与架空输电线路相比,电力电缆的上述优点却为后期电缆的维护工作特别是故障测距与定位带来了较大的难度,尤其电缆线路故障的不可观测性等特点决定了电缆线路故障定位的复杂性。电力电缆作为电力系统的重要组成部分,一旦发生故障将直接影响着整个电力系统的安全运行,如故障发现不及时,可能导致火灾、大规模停电等较大的事故后果。因此,如何快速、准确地查找电缆故障,减少故障修复费用及停电损失,成为电力工程领域与研究界日益关注的问题。

电力电缆故障定位技术虽然经历了多年的研究,定位方法和定位技术不断成熟,各个厂家、设备都有各自的定位方法,但每种方法都只能解决部分问题,行业内也始终没有形成系统的指导规范。另一方面,由于在某一特定区域内,电力电缆发生故障的几率较小,这就使电缆检修工人很少有机会接触真实的故障定位环境,从而容易导致其定位技术无法熟练掌握。

本文研究的课题是江苏省电力公司2009年度的科技项目,旨在系统地总结电力电缆故障原因、故障类型及各阶段所采用的定位方法,对各种定位方法从定位原理、适用性、技术特点、仪表选用和具体操作等进行深入地比较,形成系统、全面的操作规程,为电力电缆故障定位工作提供电缆故障定位导则;另一方面,研发电力电缆故障定位仿真培训系统,采用真实案例数据建立故障定位模拟环境,电缆检修工人通过仿真培训系统演练各种故障定位的操作,从而加深其对定位知识的掌握,提高电力电缆故障定位的技能和业务熟练程度。

2、系统功能设计

1.

2.

1.

1.1、

1.1、

2.1、 导则学习模块

包括辅助学习模块额多路径学习模块。

辅助学习模块从不同的角度、不同的方式展现电力电缆故障原因、故障类型及各阶段所采用的定位方法、测试仪器,对各种定位方法从定位原理、适用性、技术特点、仪器仪表选用和具体操作等故障定位技术的各个重要关注点进行分类比较并提供查询。生成电缆故障定位导则,故障定位导则可以打印、下载。

多路径学习模块系统以导则为依据,将辅助学习模块中展现的知识点串联起来,展示电缆故障定位技术的全貌。本模块提供多个入口,分别是标准流程入口、定位阶段入口、故障类型入口、定位方法入口。

1.

2.

2.1.

1.

2.

1.1、

2.2、 仿真演练模块

针对每一个电缆故障定位案例,提供仿真模拟环境,供使用者在模拟环境中练习故障定位,加深定位业务知识的掌握能力。仿真培训遵循定位导则的要求,同时体现具体案例在定位过程中的特殊现象、特殊处理。

仿真演练的场所、仪器、接线采用3D技术,直观、逼真;针对具体的操作仿真实际的仪器读数、波形、声音。系统记录全部操作,标识错误的操作,给出错误的原因并扣分。

2.3、 视频教学

系统提供对故障定位教学视频、实际故障定位过程中的录像视频等视频文件的管理功能,使得用户可以方便的上传、维护、查询、播放相关视频。

1、

2、

3、 系统实现关键技术

1.1、

2.1、

1.1.

2.1.

3.1、 基于Flex的RIA技术

RIA(Rich Internet Applications),是集桌面应用程序的最佳用户界面功能、Web应用程序的普遍采用和快速、低成本布署以及互动多媒体通信的实时快捷于一体的新一代网络应用程序。Flex技术是Adobe公司推出的开源RIA开发技术,它是开发Web及桌面应用的有效工具,支持以现有的J2EE框架Struts、Spring、Hibernate为基础,实现RIA应用和J2EE应用的有效整合,同时Flex能很好地支持多媒体和3D展现。

采用基于Flex的RIA技术可以很好地满足仿真培训系统需要的大量的交互性操作、3D仿真、视频声音播放等需求。

3.2、 BlazeDS技术

为了将基于Flex的RIA应用于J2EE,重点需解决两个问题,一是怎样建立客户端flash与服务器端的通信,二是以现有的J2EE框架Struts、Spring、Hibernate 为基础,如何实现Flex技术与J2EE应用的整合。本项目采用BlazeDS技术解决上述问题。

BlazeDS是一个基于服务器的Java远程控制和Web消息传递技术,它能够使得后端的 Java 应用程序和运行在浏览器上的 Adobe Flex 应用程序可以相互通信。应用BlazeDS后的系统架构如图2所示,一个BlazeDS应用程序包括两个部分:客户端应用程序和服务端J2EE应用程序。客户端应用程序可以是一个Flex 应用程序也可以是一个Flex、HTML和JavaScript的结合。在客户端,BlazeDS提供了RemoteObject、HttpServcie、WebService,Product和Comsumer等组件来提供访问服务器端数据的能力,其中RemoteObject、Product和Comsumer是以AMF协议来交换数据的,而HttpServcie和WebService则采用的是比较通用的Http访问协议,可以用来访问非BlazeDS服务器,即普通的web服务器。在服务端,BlazeDS的服务器包含在一个 J2EE Web应用程序中,它以servlet的形式存在, 因此可以在任何标准J2EE应用中运用它。通过BlazeDS公开Spring管理的服务,实现了BlazeDS与Spring的整合,而无需额外的配置文件。

3.3、 规则引擎

组件重用和规则定制是软件设计的重要概念。本系统的规则引擎由八部分构成,分别是抽象行为(Action)、业务句柄(Handler)、节点定义(Definition)、路由变迁定义(Transition)、环境上下文(Context)、事件与消息(Events and Message)、规则定义(XML figuration file)以及由引擎外部实现的扩展组件(Dialog)等。

抽象行为(Action),它为规则定义中的具有重用需求且抽象度较高的行为进行抽象化封装。业务句柄(Handler),它也是为了将组件重用,但业务句柄不具有抽象概念,并不是对具象事务的抽象处理,而是实实在在的业务耦合操作。节点定义(Definition),管理每一个抽象行为和业务句柄。环境上下文(Context),是一个在节点作用域外保存数据容器,它保存路由变 迁流转于各个节点之间的时产生的上下文数据,另外,引擎中的带外数据,即事件和消息也经由环境上下文转发。事件与消息(Events and Message),是规则引擎中的活性元素,是规则定义流转的原动力。规则定义(XML configuration file),这是规则引擎生产的原材料,它实际上是个XML定义文件,外部环境加载XML文件来构建一个规则引擎,所以系统使用者可以随时修改这个定义文件并重新载入,以此来改变原有的规则定义。扩展组件(Dialog),这是系统用户最终看到的界面,由预先定义并注册在引擎的窗体管理器控制的可重用UI组件。规则引擎实际上只定义了扩展组件的基本行为和部分基础实现,规则引擎的客户代码(各种继承扩展组件基本定义的UI组件)负责具体的功能实现。

4、 结语

本项目一方面系统地总结了电力电缆故障原因、故障类型及各阶段所采用的定位方法,对各种定位方法从定位原理、适用性、技术特点、仪表选用和具体操作等进行深入地研究和分析,形成系统、全面的理论及操作规程,为电力电缆故障定位工作提供极具价值的指导性规范;另一方面,仿真培训采用真实案例数据建立故障定位模拟环境,电缆检修工人在系统中依据仿真环境提供的各种数据,对定位阶段、方法及操作进行演练,从而加深其对定位知识的掌握,增强业务熟练程度。本系统的部署和应用将为电力检修部门提供实际现场操作之外的另一种学习和经验积累的方法,方便、有效地提升电缆检修技术人员的理论水平和操作技能。

2010年5月,系统在江苏常州供电公司部署、试运行,运行至今,RIA端展现满足用户需求的规定,服务器端运行稳定,对客户端用户响应快速及时。

参考文献:

第4篇:仿真引擎的关键技术范文

【关键词】Box2D 物理 仿真

【中图分类号】TP391.9 【文献标识码】A 【文章编号】1674-4810(2012)09-0011-01

通过计算机技术虚拟物理试验环境,进行物理试验演示,能够有效减少投资成本,消除试验设备的折旧率,且试验可以反复多次、无误差地进行。通过虚拟物理环境能够让学生解决实际的物理问题,从而更直观地进行物理分析,了解物理过程。高中物理实验是难度较大的一门实验课程。实际上,高中物理实验的内容主要是按传统实验的内容来编制,通过教师画图、讲述来描述整个实验过程。做仿真实验可以不受时间、地点、人次限制,学生随时可以进行,能很方便地借助大量的网络资源预习、复习实验,缓解了传统实验教学长期受到课堂、课时限制困扰这一问题,使实验教学内容在时间、空间上得到了延伸。因现根据高中物理的教学实践, 开发了一套高中物理虚拟仿真实验软件开发工具。

一 开发工具选择

1.基于GDI与Box2D的开发比较

基于GDI的物理仿真系统开发,可以不考虑编译器和操作系统的使用,开发者只需要开发过程,但是开发者需要自行处理自己的图形化界面以及物理仿真中的公式和运行效果,开发工作量较大,实施困难较多,不利于开发。图1是笔者开发的基于GDI的物理仿真系统的图形化部分。

图1 基于GDI的物理仿真系统图形功能

Box2D物理引擎有C++、flash、Java等版本,支持跨平台,Box2D引擎集成了图像处理功能,用户不必处理复杂的图像绘制工作,可以大大减少开发过程,开发者可以专注于处理。

2.开发环境的选择

Box2D物理仿真引擎为开源,支持.cmake文件,需要使用中间软件如CMake将该开源代码转换为Visual Studio 2010支持的.sln工程文件,进而使用后者进行进一步开发。

CMake是一个跨平台的编译工具,可以使用自己的组态文件CMakeLists.txt文件及源码文件,生成各种makefile或者project文件,从而满足用户使用gcc或者Visual C++进行进一步构建应用程序。

本开发是基于Windows平台的软件开发,操作系统选择Windows XP sp2,物理引擎选用Box2D,中间软件使用CMake,编译器采用Visual Studio 2010。

二 系统构建思想

1.实验实例

系统主要实现高中物理的力学部分实验,本文以“滑轮”试验为例,说明系统在实现这一功能的思想和构建过程。物理过程模型见图2。软件能够实现对物理量的设置,如重力加速度、物体的质量、初始状态灯,同时软件能够实时展示试验过程中的各种物理量,如某个瞬间的物体加速度、速度等。

2.软件结构

软件分为框架、属性、模型三部分。框架用于加载和保存程序的配置信息、存储文件以及控制和展示实验;模型部分用于动态生成仿真中所需要的物理模型;属性部分用于设置物理模型的属性以及整个物理实验的环境。属性设置部分见图3。

三 结束语

虚拟实验配合真实的实验使用能完善实验教学体系,满足实验教学的需要和发展,提高教学效率和教师的教学科研能力,促进教师业务知识的更新,使实验教学手段和教学内容丰富多样,利于学生更好地掌握实验方法、提高知识的应用能力,为创造性能力的形成打下了基础。使用Box2D物理引擎能够快速开发刚性的高中物理实验,构建生动的演示界面,能提高学生的学习兴趣,使学生对计算机有更深的了解,开阔学生的视野。

参考文献

[1]蔡青.仿真实验的应用与大学物理实验的教学改革[J].成都信息工程学院学报,2006(01)

[2]高亚妮、梁海生.物理实验教学与创新能力的培养[J].中山大学学报论丛,2004(03)

第5篇:仿真引擎的关键技术范文

关键词:IOS;Cocos-2D;Eclipse;手机游戏

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)28-0065-02

当今社会,围绕移动互联网展开的产业日益增多,而手机游戏已经发展到其中非常重要的一个行业。据统计,截止到2015年底,在中国,手游的使用者人数已经突破3亿。在这种情况下,各种手机游戏和手机游戏开发技术非常多,如何采用较为有效的技术开发具有多种效果的手游,就成为了业界非常重要的研究课题。基于此请狂,本文采用动画制作技术――Cocos2D-x,将其应用到手游唱的设计与开发中,取得了较好的实际应用效果[1]。

1.背景与意义

1.1 背景及相关介绍

目前,手游的开发主要基于两大平台:IOS平台和Andriod平台,其中Andriod平台由于其为免费开放平台,理论上易于手游开发者进行开发,但是开放造成的管理混乱和开发者权利得不到保障,使得越来越多的手游开发者转战于IOS平台,同时IOS平台又为开发者提供较为便捷的平台接口,使得IOS平台已经成为手游开发的最大平台。本文也是在此条件下进行研究开发。

1.2 游戏开发引擎介绍

手机游戏的开发作为一个综合性的项目,前期的客户体验如视觉,情节和速度等因素产生的客户体验与后期维护非常重要,其决定了一款游戏的质量与生存[2]。从技术领域上来说可分成若干个模块,如开发引擎选择与配优,游戏效果渲染,动画内容设计,仿真冲撞等模块。手游开发者需要想尽可能地降低开发难度,提高开发技术的适用性,以及降低后期维护成本,在各个环节中,游戏引擎的选择与配优环节至关重要。

目前经常使用到的引擎技术有Cyclone2D,Smart2D等,这两个游戏引擎具有容易上手,封装简单等特点,但是技术的拓展性不强,不适用于不同场景下转换较多的游戏开发[3]。

本文所采用的Cocos2d-x,本身是用于动画设计中一项专业技术,后引用到IOS平台下的应用开发,并在手游领域得到了充分的应用,其技术拓展性较好,且技术本身稳定,可以支持多种开发语言,且支持跨平台开发[4]。在Cocos2d-x游戏引擎中,所有的动画都可以在编辑器中得到仿真实现,且更改容易。

Cocos2d-x的框架图如图1所示,从图中可以看到,各个模块间构成一个树状图,而OpenGL ES 3.0正是根据这种关系进行游戏效果渲染。

2 手游开发框架

手游框架如图2所示,该框架图大体借鉴了此类游戏引擎框架的架构进行设计开发的[5]。整个游戏框架大体分为3层,其中引擎模块是已封装好的库,并且提供大量的接口面向开发者使用。管理模块包含:普通自定义类模块、管理模块、布局模块、场景模块、数据模块等,其具体实现的内容有特效处理,音效处理,数据处理,算法设计及其他模块。

手游需要满足以下功能特征:

1)游戏模式多种多样,需要满足:单机和接网两种模式;在使用中按照游戏情

节分为单人模式,多人模式以及集团模式;

2)游戏规则固定且涵盖用户的多种需求,需要根据用户的得分及失分,花费时

间等判别输赢;

3)游戏需要完善的登陆,更新及退出机制。

手游开发和设计过程中需要注意以下内容:

1)流程控制:有效管理控制不同场景之间切换实现。

2)导演设置:手游的领导者和仲裁者,利用导演设置可以获取设备的状态,感

应以及场景切换等。

3)场景:即设置游戏中关卡场景,保证其界面效果,场景比较抽象,其作用只

是用来管理游戏中的一个布景。

4)布局:多个布局组成场景,其布局就相当于游戏场景中的背景图,关卡布局不同也就是场景的差别。在有些情况下,为了很好的管理,会把一个场景分为多个布景,如UI界面。

5)对象:对象是游戏最主要的因素特征,就像超级玛丽奥中的蘑菇、乌龟等,是有开发者自主定义的。

6) 动作内容:包括有移动,放缩、雾化、闪烁及跳跃等。

3 技术开发实现

游戏界面展示的是开始、退出、音效控制、背景还原、情节设置等按钮。为了使游戏安装的流畅性,一般可以采取压缩图片的方式,Cocos2d-x中有很多库函数供调用以实现压缩的效果,也开放相应接口来读取压缩文件[6]。

由于Cocos2d-x是由OpenGL ES进行图形渲染的,纹理会的容量大小为,本文采用ZwOptex和TextruerParcke对渲染后的效果进行压缩。

特效模块采用粒子编辑器得以实现,在实现的过程会形成散射状的光环特效;音效处理采用旋转按钮和背景音乐节奏方式进行控制;数据模块采用的Lua管理,在手机物理内存中保存数据信息;按键监听采用的是Cocos2d-x引擎的内部接口来监听手机按键;

Cocos2d-x采用的关键算法是根据物理世界中物体冲击效果进行判断的。引擎模块在采用Cocos2d-x进行开发的同时,使用OpenGLES技术进行画图渲染,Lua工具进行数据管理和控制。用Cocos2d-x引擎实现模块功能并进行类封装,然后用接口串行。用OpenGLES对图片进行优化处理,用Lua在手机本地创建一个不可修改的文件夹,把游戏产生的数据进行保存。

除此之外,Cocos2d-x技术在开发IOS平台下的手游的过程中,需要注重游戏的性能配置、稳定度、资源的加密手段、反射手段。

4 结论

Cocos2d-x技术在对IOS平台下的手游的开发实现过程中具有良好的适用性和稳定性,能较好完成手游的绝大部分功能,但是在实现过程中出现内存泄漏和卡屏的小概率事件,需要在今后的研究工作中进行进一步的研究。

参考文献:

[1] 满硕泉.Cocos2D-x权威指南[M].北京:机械工业出版社,2013:33-36.

[2] 王洪江.浅析手机游戏开发技术[J].吉林省教育学院学报,2015(1):4-6.

[3] 邓正阳,陈和平,苏鹏.动态脚本语言Lua与C++交互方法的研究与实现[J].电脑与信息术,2010,18(4):25.

[4] 于造波.脚本技术在游戏引擎中的应用[J].电脑知识与技术,2008,24(4):22-23.

第6篇:仿真引擎的关键技术范文

【关键词】城市轨道交通 交通枢纽 仿真设计

任何一项轨道交通枢纽工程,都将涉及到庞大的人力和物力。若设计不能满足实际需求,将会造成巨大的浪费,而且在施工完成后,若再想进行改扩建,各方面的限制条件会很多。如能在设计完成后,在施工之前对车站适应实际需要的能力进行评估,提前发现设计的不足之处,将会避免不必要的损失。为此我们开发了城市轨道交通枢纽三维可视化系统。该系统是城市轨道交通客流预测与仿真系统的子系统,能实现城市轨道交通枢纽的三维视景仿真。

1 建模系统

111 建模系统的功能

建模是该系统的两大功能之一。建模系统提供一个标准的Windows 应用 程序界面,用户可以通过输入命令来建立模型。任何一次模拟都要通过建模系统产生需要的数据文件才能够进行。这部分的主要功能是: ① 提供建立结构的界面和接口; ② 表达结构间的相互关系; ③ 控制结构建立的过程; ④ 实时显示结构的形态; ⑤ 导出数据供模拟使用; ⑥ 建立批处理命令。

112 场景组成与 分析

需要把车站场景分为不同的结构,以便建立灵活的模型。本系统中场景划分见图1 。

图1 车站场景的结构划分

113 建模系统的结构

建模系统可以分为下列几部分:

(1) 用户接口 包括用户命令输入窗口、结构绘制模块、结构关系表示模块。

(2) 数据管理器 提供建模数据的存储、修改、响应数据请求、导出模型数据等功能。所有的数据相关操作都集中在这一部分。

(3) 命令系统 根据用户输入解析命令及其参数, 提供所需要的命令对象。使用该命令对象,用户可操作数据管理器。

(4) 辅助系统 提供建模过程中的辅助功能,主要是产生有序且唯一的索引值。该值用于标志建模过程中的不同结构。各部分的相互关系可以用框图表述(见图2) 。

图2 建模系统的结构关系

114 建模系统的界面

对于一个Windows 应用程序来说,提供一个友好的用户界面相当重要,它能使用户提高使用速度和工作效率,增强程序的简单性和易用性,因此用户界面的设计在这里单独提出。建模系统的界面见图3 。

图3 建模系统的用户界面

2 模拟

211 模拟系统功能及简介

模拟程序采用三维技术在 计算 机上实现交通枢纽场景的三维显示,同时用户可以实现身临其境的视角。这部分和建模除了在文件上的联系外,没有更多的联系。采用OpenGL 作为三维显示技术,使用其中的纹理映射技术,能够很好地实现较为真实的场景。而在模拟过程中需要考虑的碰撞和运动等 问题 和三维显示技术没有关系。在这样一个模拟程序中,重要的是建立一个模拟引擎,使整个过程有序地组织在一起。碰撞检测、运动控制等问题需融合在模拟引擎中处理。

212 模拟引擎

模拟引擎的工作过程见图4 。图5 是先使用本系 图4 模拟引擎工作过程

图5 模拟厅的一角 统建模部分建立模型,然后进行模拟得到的实际图像

。 213 碰撞检测

在碰撞过程中,有效地检测碰撞的发生是个比较困难的 问题 。本系统采用“ 空间碰撞立方体集合”法, 能有效地减少场景中发生碰撞的次数。使用该 方法 的具体步骤如下:

(1) 从整个场景的最小坐标处开始,按照一个固定的长度分别在x 、y 、z 方向建立紧密排列的空间立方体。

(2) 通过每一个碰撞元素 计算 自身坐标的最大和最小值,从而知道自身在哪些空间立方体中占有位置, 这样就不会丢失数据。

(3) 运动体的坐标通过简单的运算,便能直接得到所在空间立方体的序号信息, 从而得到相关的碰撞元素。

3 结束语

针对城市轨道 交通 枢纽的特点,开发城市轨道交通枢纽三维可视化系统是非常必要的。本系统是城市轨道交通枢纽客流预测与仿真系统的子系统。利用本系统,可以在城市轨道交通枢纽建设之前直观而又动态地建立车站的模型,对城市轨道交通枢纽的建设提供很好的支持。

参考 文献

第7篇:仿真引擎的关键技术范文

如今虚拟现实(Virtual Reality)技术已被广泛应用于交通模拟、城市规划、虚拟现实、游戏、文物保护及远程教育等领域;基于计算机图形学、交互技术和传感技术多个领域的虚拟现实技术能够通过计算机平台把现实的实景完美逼真的呈现出来,三维立体视觉效果,让使用用户能够以完全沉浸式地对三维虚拟实景进行体验和沟通,达到如临其境的体验感觉,特别是在那些尚未实现、实施的项目或有危险很难实现或实现成本太高的项目中,效益效果就更加明显。“三维虚拟数字校园”因互联网、虚拟现实技术等的日臻成熟应运而生。并引起了学界和学校的高度关注和重视,其中的数字化校园虚拟漫游系统又是数字校园建设计划的核心平台。 

2 基于UDK虚拟现实引擎的设计的关键技术研究(Research on key technologies of virtual reality engine design based on UDK) 

UDK是由英佩数码公司开发的基于Unreal Engine 3引擎的免费版开发工具,是一套为Xbox 360,DirectX 9/10 PC,P1ayStation 3平台准备的完整的游戏开发构架,对64位HDR高精度多种类光照、高级动态阴影特效和动态渲染均支持,能将数百万个多边形模型才有的高精度在低多边形数量(通常在5000-15000多边形)的模型上表现出来,如此就能用最低的计算资源达到极高画质渲染,满足了虚拟场景的真实感要求。本文我将三维数字校园虚拟场景构建及场景浏览功能通过运用UDK关键技术进行了研究,并予以了设计和实现。 

2.1 基于专业三维设计软件设计的模型导入 

OpenGL的API是操作系统提供给应用程序的高性能图形及交互场景处理的接口的函数集合,由于缺乏一系列的三维模型的高级命令,如通过点、线、多边形几何图元建立三维模型,但像MAYA、3DMAX等市场流行的建模软件却很容易实现,然而这些三维设计软件对建立的模型却很进行交互控制,因此为了综合三维软件和OpenGL的软件的优势特点,由英佩数码公司开发的基于Unreal Engine 3引擎UDK的优势就凸现了出来,利用UDK开发环境可以导入由专业三维设计软件设计的三维模型,然后进行相应的交互控制设计操作、渲染。这样既减少了建三维模型的时间和难度,更重要的是又提高了虚拟现实引擎的开发速度。 

2.2 基于专业三维设计软件设计的模型的导入方法[1] 

考虑到无锡城院数字校园的三维立体模型数据量巨大、结构较复杂,UDK开发环境对三维模型文件进行两次转化处理,导入转化处理过程如图1所示。 

(1)三维模型文件二进制的转化。 

UDK开发环境专业设计了一个读取三维模型数据的主类——3dsToBin类,包含了像T3dsFile类及其他辅助类,来读取导入的三维模型的每个块的数据,根据ID块头所含的信息将其以二进制缓存数组的方式存在二进制文件当中,并设计了一个关联索引数组把相关的数据信息关联起来。 

(2)将导入的二进制文件存储的信息再还原转化为三维场景中的几何节点信息。 

无锡城院数字校园三维模型信息,包含每个节点的顶点、法向量、颜色信息、纹理及标识及位置的顺序数字代码,这些信息存储在缓存中,其对应的纹理是通过数组列表方法与其相关联,以二进制文件作为参数加载在UDK引擎当中,作为构建三维虚拟场景的依据。 

2.3 UDK材质编辑与设计 

UDK材质主要使用了抽象基类MaterialInterface(材质接口)。这个类是已应用的材质的表达式和参数值的接口。Material(材质)类是定义了表达式和默认参数值的MaterialInterface的子类。材质实例常量和随时间变化的材质实例类是有一个MaterialInstance父类的MaterialInterface的子类。这些类型都会从它们的父类中继承它们的表达式和参数值,可以选择重新载入某些参数值或对其进行动画处理。图2显示了材质通道、材质节点和材质表达式三者之间的关系,最终材质设定好以后呈现出如图2所示的效果。

2.4 基于UDK引擎虚拟校园的仿真技术——物理碰撞技术及碰撞检测技术[2,3] 

为了防止在虚拟环境中出现物体交叉或物体相互进入等反自然的现象,增强仿真度,UDK引擎中引入了物理碰撞及碰撞检测技术,在UDK中有只能均匀缩放的球体碰撞体,有既能均匀缩放又能沿着其长或宽方向缩放的胶囊体碰撞体,更有既可均匀又可非均匀缩放的盒体碰撞体。UDK开发环境使用phat修改器能够非常便捷的修改物理资源的碰撞物体。打开phat中的phys_ capsule3 physics,就能看到物理资源体周围环绕着线框球体或胶囊体,这些线框就是该物体骨骼的碰撞物体,通过单击simulate(模拟)按钮甚至可以看到物体行为的模拟效果,再单击就可停止。用左击选择一个碰撞物体,橙色高亮显示表示被选择了,可直接与其相邻的单元则变成白色。则表示这些碰撞体间的碰撞已经被禁止了,原因是约束正在处理它们之间的相互作用。 

三维动态交互立体三维数字校园的人物模型在走动观看的时候,独创设计并实现了Capsule包围盒碰撞检测方法,避免不符合自然现象的情况出现如人物沿着墙壁走上去或从障碍物中穿过等。如果人物模型与另一个模型对象发生了碰撞,通过两个测试的对象外包围盒的相交情况就可判断,从而对虚拟人物的位置方向做相应的调整,继续前行。如图3所示。

第8篇:仿真引擎的关键技术范文

关键词:Unity3D 虚拟现实 综合布线

中图分类号:TP391.41 文献标识码:A 文章编号:1007-9416(2016)10-0156-01

1 背景分析

虚拟现实技术在上个世纪八十年代由美国提出,最初主要集中在美国军方对宇航员、飞行员的培训任务中,后来逐渐在商业、教育领域传播开来。虚拟现实之所以受到体验者的青睐,很大程度上是因为它可以运用计算机技术创造出一个与现实环境相仿的模拟场景,并且可以让用户参与到其中。

虚拟现实技术在教育领域应用也非常广泛,也更有影响。主动地去交互与被动的观看,有着本质的区别。正是在虚拟现实的优势背景下,作者在本学院的院级课题中,设计了基于Unity3D的3D虚拟网络综合布线仿真系统。不仅能通过本系统直观地体验、学习各个实训的完整过程,而且还可以进行交互式展示、考核,同时也融合了传统文字、图片、视频的展示内容,增加了学习和体验的趣味性,对于教学起到了良好的促进作用。

2 “综合布线工程”教学仿真系统的开发

2.1 平台的选择

本系统基于Unity3D平台来设计与实现,Unity3D是一款跨平台的游戏开发引擎,也非常适合开发虚拟现实产品。Unity3D属于利用交互的图型化开发环境为首要方式的引擎,可至Windows、Mac、Wii、iOS、WebGL(需要HTML5)、Windows phone 8和Android等多个平台,也可以利用Unity web player插件l布至网页。而且至不同平台,只需稍作修改,无须重新开发。Unity3D还提供免费版本,对于小型开发团队,这无疑是一个非常理想的工具。

2.2 仿真系统开发流程

根据网络综合布线工程需要展示的内容和实际实训项目,本系统选择了2个展示场景和5个典型实训项目进行设计与开发。开发的流程和思路具体如图1所示。

根据仿真系统需要实现的功能和效果,本系统主要采用三维制作工具3ds Max进行前期场景的搭建,各种交互模型的制作,制作交互过程涉及到的动画。利用Ps图形处理工具进行贴图的绘制。最后将相关资源导入到Unity3D中,进行交互功能的设计与串接,编写交互脚本代码,添加UI内容。最后通过Unity3D至Windows端及Web端。

2.3 仿真系统的设计以及各类美术资源的搭建

综合布线工程仿真系统的设计,主要实现的功能包含:各类典型设备的交互展示,布线工程样板场景交互展示,5个典型交互式实训环节。因此涉及到的模型、贴图等美术资源内容较多。

为了能满互式实训环节的需要,模型的尺寸必须尽量精确。在进行虚拟场景及模型制作时,首先需要对设备和场景进行尺寸的测量,同时拍摄尽可能多的各个角度的图片,为后续构建奠定基础和积累素材。

仿真系统所有的模型均采用多边形建模技术,包括布线工程样板间漫游场景,各类设备与实训工具。模型制作完成之后,还需要真实还原各种设备的色彩和质感,因此需要对模型展平UV,并且设置好UV的编号,再对它们进行贴图的绘制。

美术资源导入到Unity3D中进行构建时,是没有灯光照射的,缺乏真实感。在Unity3D中虽然自带了几种类型的光源,若采用Unity3D中的实时光照,对系统资源的消耗会较大,效果也并不是非常理想。因此,本系统采用贴图加光照贴图的思路来进行,这样能大大加快系统运行效率。灯光贴图就是将满意的光照信息保存在一张贴图上,模拟物体接受到光照的效果。本系统中,场景中大部分模型都是采用此类方案来处理的。

2.4 Unity3D中交互功能的实现

将3ds Max中制作的模型、灯光贴图等美术资源导入到Unity3D中,然后添加相应的操作交互脚本,来控制游戏对象在虚拟场景的交互行为。这其中就使用了Unity3D原生的第一人称角色控制系统来实现角色在漫游场景中的行走与观察。以及设计了物体交互浏览、视频播放、动画控制、整个系统UI交互的脚本。

2.5 仿真系统的测试与

系统完成之后需要对系统进行测试,根据测试结果对系统进行调试与优化。Unity3D整个系统相对来说还是比较方便,选择对应的平台,将要的关卡放入列表中,以及设置好相应的一些参数,比如屏幕分辨率、启动画面及LOGO、渲染方式等,即可。

3 最终效果

基于Unity3D的综合布线工程教学仿真系统,最终了PC端和网页端的两个版本,能在这两个平台上流畅运行,满足了设计时的需求。系统效果如图2。

4 结语

应用虚拟现实技术,采用Unity3D专业3D引擎设计开发了一款PC版和web版的综合布线工程的教学仿真平台。通过使用该平台来进行教学实训,比传统教学课件更加直观和更具吸引力,也更加具有互动性。可以说,虚拟现实技术特别适合教育领域,尤其是一些不太直观、操作性较强的学科,通过虚拟现实技术可以大大增强学习的代入感,激发学生的内在潜力与动力。

参考文献

[1]王利,向阳.三维课件在船舶辅机教学中的应用实践[J].教育教学论坛,2016(5):194-195.

[2]陈军,蔡金玲.基于Unity3D三维多媒体课件的设计与制作[J].现代计算机:专业版,2015(34).

[3]腊国庆.虚拟现实技术在教育中的应用研究[J].宿州教育学院学报,2015(3):93-94.

收稿日期:2016-08-31

第9篇:仿真引擎的关键技术范文

关键词:Python;Blender;动态模拟

中图分类号:TP319 文献标识码:A 文章编号:16727800(2012)011006603

________________________________________

基金项目:上海高校选拔培养优秀青年教师科研项目( AAYQ1103)

作者简介:郝振华(1984-),男,硕士,上海建桥学院信息技术学院讲师,研究方向为虚拟现实、交互设计。0 引言

动态模拟在计算物理学中,模仿物体在三维空间中的自由运动,这项技术常被应用在计算机辅助动画、工业设计与游戏产业中。动态模拟技术中的一种常用方法是通过计算物体在三维方向上的重力加速数值从而获得物体的空间位置。在这方面的应用中,为了达成动态模拟的目的,应用程序往往需要包含信息接收和处理、三维仿真与动态模拟运算三部分。其中三维仿真研究随着游戏产业的发展,各种三维游戏引擎以及仿真引擎都有着显著进步,但是一些引擎的自定义与扩展能力往往不尽如人意,常常使一些简单的运算变得复杂化并且很难扩充功能以达到仿真研究的目的。而Python与Blender作为开源语言和软件,在三维动画与仿真领域越来越受到各国实验室的青睐。

1 关于Blender引擎

英文Blender,中文翻译为“搅拌机”,顾名思义是用来将所有的视频音频图像还有三维模型和动画等综合起来制作动画及可执行程序的软件。 Blender提供从建模、动画、材质、渲染到音频处理、视频剪辑等一系列动画短片制作的三维动画制作软件。具有占用空间少、使用系统资源低并可运行于不同平台等特性。于2002年公布源代码之后,Blender成为免费的自由软件,遵循和Lunix类似的GNU通用公共许可证。Blender提供非常强大的API支持,由于Blender是在Python语言上构建的,其API可以与Python语言的模块完全兼容,所以具有很强的多媒体应用扩展性。 然而Blender不仅仅是一个三维动画制作工具集,Blender带有一个入门级的引擎BGE(Blender Game Engine),可以很好地实现三维即时渲染。该引擎在内部设置中具备了基本的逻辑迭代方法。引擎设计的出发点是完全面向对象,主要通过4个模块来实现,如图1所示。

图1 Blender引擎中的四个模块

①称为Sensers的感应模块;②称为Controllers的逻辑控制模块;③称为Actuators执行模块;④称为Game Property的数据库。这些模块也可以被认为是对象所具备的相应属性,所有在Blender世界中构造的三维对象都拥有属于自己的4个属性。 其中感应会传达至逻辑控制可以启动执行也能够影响物体属性或数据,而执行可以修改物体属性或数据;而物体属性或数据的改变又会被感应模块侦测到,从而构成一个完整的逻辑循环。

图2 BGE中基本的逻辑流程

在实际设计过程中4个模块可以相互作用实现这样一个基本的流程,也即从数据变化被感应,通过逻辑判断最后执行。图2所展示的是一个叫做“Cube”的立方体所设计的包含这4个属性的逻辑流程。在图的左边是该物体所独有的数据库,其中一个叫“prop”的数据是布尔型数据,感应器选择的是感应数据变化,在逻辑控制中是“AND”即“与”的运算,由执行器播放一段从0到40帧的名为“CubeAction”的动画。

Controllers中包含基本的布尔逻辑运算,然而逻辑判断不仅限于布尔逻辑,所以控制模块中也包括自定义表达式与Python脚本的选项。这样BGE就可以通过Python来协调各个三维物体间的数据与执行,可以定制程序执行的顺序,甚至可以控制该物体的执行情况。 如图2所示,这是一个典型的以Python脚本作为逻辑判断控制的例子, 美中不足的是,所有的逻辑模块都必须通过一个感应模块来触发,并且附属于某个三维物体(图3的例子中控制器是属于一个叫“Plane”的三维面)。尽管这个触发器可以被设置为默认开启,但在BGE的设置操作中这个步骤无法避免。

图3 使用Python作为逻辑判断的控制

2 关于Python

Python是一个十分适合流程控制和多媒体应用的语言。作为一种“胶水语言”,Python被设计成为具有良好的可读性、跨平台兼容以及拥有丰富模块的语言,除了Windows系统以外,多数操作系统中都默认安装了Python。这得益于Python特殊的语法结构,Python可以将程序中的主旨清晰地突显出来。例如,在Python中变量只需要经过首次赋值就可以产生,不需要额外的声明,当超出作业范围时就会自动消亡。由于语法中需要缩进,Python层次分明可读性好,变量可以根据所在层次判断是局部还是全局变量。在流程控制中,尤其是在清晰度要求较高的逻辑判断类的函数中有着很高的视觉美感和潜在的纠错能力,在多媒体应用领域中十分适合为复杂物体间建立逻辑关系, 著名的三维动画软件Maya也使用了Python作为其可扩展的脚本程序。

3 Blender中的Python模块调用机制

Blender提供了Python API,这为Blender和Python进行深度交互提供了平台,应用Blender的Python Script接口,用户可以将标准的或自定义的Python模块引入Blender默认的Python库进行调用,这将可以发挥Python的强大功能和大量数学分析包,类似于“NumPy”和“SciPy”软件包均可以得以应用。这种默认库调用的方法对于构建于Python之上的Blender而言意味着两种重要的特性:首先,Blender本身的功能可以通过对Blender下默认的Python库进行扩展;其次,在Blender内部可以以Python作为脚本轻松调用各类Python库。具备此类特性的软件不在少数,有为数不少的用Java写的程序,都可以通过调用js脚本扩展其功能。

如图4,Blender的引擎可以同时编译内部的设置以及来自内部和外部的脚本。在Blender引擎运行状态下,BGE允许调用没有安装在Blender默认的内部库下的Python模块,这些模块可以是以py结尾的任意指定目录下的文件,通过对这些自定义模块的调用可以实现各种定制功能,而不必局限于简单的逻辑判断,三维对象之间的交互关系不再是简单的同时发生或者前后发生,而是在三维场景中产生真正的对话与交流。例如,如果只有表达式或布尔逻辑运算,那么“逻辑控制A”虽然能够调用到“执行B”,产生“三维对象B”的执行效果,但是这一过程是单向的,若要终止或检测“执行B”那么就必须分别建立新的逻辑控制模块。而使用了Python脚本就可以自定义所有这些操作了。因为有了默认库和指定路径这两种模块调用方式,使得BGE在功能和自由度上产生了很好的平衡。

图4 从逻辑控制到三维场景

4 Python库的综合应用

使用开源的 OSC(Open Sound Control)可以很好地获取重力加速计数值,结合Blender的BGE与Python自身的计算能力可以很好地实现其中应用的模型,并充分发挥Python语言在多媒体领域中的优势。在图5中,整个应用从获取OSC重力加速计数值,到改变空间定位点的属性,自始至终都使用了Python语言。

图5 Python三维动态模拟应用模型

4.1 pyOSC模块

pyOSC模块是Python下用来获取OSC数据的模块。 OSC的数据可以通过网络以OSC格式分享,OSC可以通过最常用的网络协议传输,并且比MIDI格式更加灵活和精确。OSC的数据允许在各种设备中自由传输,例如Lemir、Monome,以及装有相应客户端软件的iPhone或Android。大多数现代计算机语言都支持OSC的传输和基础处理,这包括Java、Python、C++、Max/MSP与Pure Data等。总之,OSC(Open Sound Control)是一种比MIDI更有优势的并行传输协议,除了音频控制信号外,OSC还可以作为多点触摸信号和重力加速信号的传输协议。4.2 BGE内部的数据调用

若要调用类似pyOSC模块,典型的方法是在Blender中使用一个,用以加载Python作为逻辑控制模块。这个可以是一个多边形几何体或者是摄像机,但通常会使用无法被渲染的三维点。作为的物体需创建不同类型的参数,以使得从Python的OSC模块中获得的数据得以通过物体参数的形式进行保存和调用,即前文所述的“Game Property”。

BGE内部的全局变量是以Python作为脚本来实现的, BGE拥有唯一的通用字典 “globalDict”,也是BGE中唯一的全局变量,其它的变量将会完全局限在所属物体的范围内。若要使用全局变量的特点,可以将所需要的数据加入该字典,并在相同键值下查找更新,以便BGE中其它逻辑控制模块所调用。

4.3 动态模拟算法

图6 倾斜角坐标

动态模拟的算法近似于获得卫星设备的轨道坐标系统数据的过程。移动设备的X轴与Y轴、Z轴成右手正交坐标系。X轴、Y轴和Z轴可分别记为滚动轴、俯仰轴和偏航轴。由于此坐标系在空间中是旋转的,加上用户俯视的习惯,所以在设备水平放置时,+Z轴是向上的,而整个Z轴可类比与卫星到地心之间重力轴。在图5中还解释了当处于水平位置的移动设备发生倾斜时,倾斜角δ与θ与重力加速计输出值Ax,Ay和Az。Az = g · sin (δ)

(2) 由于(δ + θ) = 90°, 根据等式(1) 与等式(2) 可以转化δ为θ的表达:Az = g · sin (-θ + 90°arc ) = g · cos ( θ )

(3) 因此,转换已知的加速度值到倾角值是用X轴的arcsin与Z轴的arccos的商,将等式(1) 与等式(3) 结合后可得等式 (4):AxAz=g·sinθg·cosθ=tanθ

(4) 如此一来θ即可被表达为tan-1的等式:θ=tan-1AxAz

(5)5 空间定位的实现

在Python程序中,OSC数据可以通过自定义端口获得,设重力加速值accX为Ax、accY为Ay,通过等式(5) ,所获得的θ翻转角(yRoll)是三维场景中定位物体的Y轴方向角。同理,ψ倾斜角( xRoll )可以通过OSC传输获得的accY与accZ值计算而得。

程序如下:

yRoll = math.atan( accX / accZ )

xRoll = math.atan( accY / (-accZ) )

其中 math是python的默认数学计算模块, 而在界面设计中默认为用户面向定位器,具有镜面效应。所以 ψ倾斜角应该是相反的方向,才能使得三维定位物模拟向内向外的倾斜动作。

图7 Blender动态模拟交互应用实况

图6中反映了动态模拟交互的实际情况,此时Blender的引擎正处于全屏运行状态,在其窗口内是一个三维框正在模拟用户设备(Apple的iPad)的动态,其倾斜的角度与方位都来自于设备经过无线网发出的OSC信号。

6 结论

由于Python的“胶水”特征,在综合运用Python各类库的情况下能够很好地解决动态模拟效果并快速达到应用开发的目的。Blender可以使用Python三维引擎,在本例中充分运用了Python灵活穿插的能力,将OSC信号接收的应用与重力加速信息计算融合在一起,以获得动态模拟的应用效果。

参考文献:

[1] Python Software Foundation [EB/OL].htp:///,2012.

[2] 罗霄,任勇,山秀明.基于Python的混合语言编程及其实现[J].计算机应用与软件,2004(12).

[3] Blender Software Foundation[EB/OL].http:///,2012.

[4] 盛崇山.高效的三维互动媒体内容创作系统[D].杭州:浙江大学,2006.

[5] 朱权洁.基于Blender引擎的矿山虚拟现实自动建模与运输仿真研究[D].武汉:武汉科技大学,2010.