一种跨平台3D界面设计架构和工具 【技术领域】
本发明涉及大屏幕消费电子产品3D界面快速开发,尤其涉及嵌入式领域的软件开发模式,提供一种跨平台3D界面开发解决方案和技术实现。
背景技术
嵌入式系统(Embedded system),是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。随着微处理器的产生,价格低廉、结构小巧的CPU和外设连接提供了稳定可靠的硬件架构,因此嵌入式系统在工业领域取得了广泛的应用。
目前嵌入式Linux系统软件开发主要是在PC上基于Linux平台的代码编写和交叉编译,然后在目标系统上运行,以检测是否符合设计要求。也有一些嵌入式系统开发商提供了相应的编辑和调试工具,提高了开发的效率和调试的便利性。但由于嵌入式系统硬件的多样化,在综合考虑功能和成本的基础上,经常需要更换或升级,导致软件的开发重复利用率低,开发周期长,开发冗余度高。对于最能体现差异化的用户界面设计,这一现象尤为明显。
当前流行的跨平台用户界面设计框架诸如Qtopia,miniGUI等嵌入式系统界面开发提供了一个较为良好的平台,但同时也存在以下一些不足:
统一的界面样式很难体现差异化;
不提供3D支持;
不支持自由样式窗体;
对嵌入式系统有一定的要求;
主要针对于小屏幕消费电子产品,对大屏幕电子产品支持有限。
3D界面目前主要应用在小屏幕消费电子领域,如PDA,手机等。在大屏幕消费电子领域,如电视,监视器等尚未涉及。随着硬件的发展,大屏幕消费电子领域的3D应用已为期不远。目前Intel率先推出了集成3D硬件加速芯片的CE3100,为大屏幕消费电子3D应用提供了硬件支持。在软件方面,目前尚未有完善的架构和开发模式,随后,TI和mStar也将相应的推出支持3D的硬件平台,届时3D将会在大屏幕消费电子领域得到全面应用。
因此,为了能够抢占市场先机,亟需一种新的软件开发模式和架构,能够快速适应硬件平台,减少3D开发周期,提高开发效率,成为急待解决的问题。
【发明内容】
本发明的目的是提供一种跨平台3D界面设计架构和工具,能够快速适应硬件平台,减少3D开发周期,提高研发人员的开发效率。
为解决本发明的技术问题,本发明公开一种跨平台3D界面设计架构,其中,包括:
硬件平台,用于支撑和驱动系统的运行;
操作系统,提供程序和硬件平台的操作接口;提供针对于硬件平台的特殊驱动以及功能模块;
图像处理引擎,提供针对于嵌入式系统优化的高效的图形处理函数以及不同操作系统上图形处理接口的封装。实现对数据的图形化显示,用于展示用户操作结果或提示用户下一步操作内容。
所述独立组件包括系统库,图形库和用户界面中需要涉及到的通用数据结构和算法,基于这些能够快速移植的组件,具有一套统一的设计框架结构,该框架结构囊括2D,2.5D,3D界面的统一定义,让开发者通过人机交互接口快速布局界面场景。
较优的,所述所述硬件平台,操作系统和图像处理引擎组成系统相关层,其中
所述系统无关层,用于提供给用户不依赖于系统的程序设计支持;
所述移植层,用于实现由所述系统无关层到所述系统相关层的功能映射。
较优的,所述系统无关层包括:用户界面程序,界面场景描述,界面用户自定义信息,界面组件,图像绘制引擎,界面数据;
所述移植层包括系统库、图形库和通用数据结构。
较优的,所述系统库,用于实现对系统函数的封装,包括线程、操作系统时钟、消息通讯机制、信号量,文件操作;
所述图形库包含了2D和3D引擎库;
所述通用数据结构,用于实现程序设计中经常使用的数据结构,所述数据结构包括列表结构,数组结构,堆栈结构,队列结构,树状结构、环状结构。
较优的,所述图形库,包括实现跨平台三维绘制接口,利用该接口,将三维的图形渲染到显示设备上;其中所述图形库包括:
Surface的提供层,用于建立一个视觉显示区域,用来看到直接的绘制结果;
EGL层,该层专门为OpenGLES而设计,用于连接OpenGLES和各种不同的显示窗口(SurfaceProvider);
OpenGLES层,用于嵌入式系统平台上的绘制接口,该层实现了三维绘制的所有支持接口。
为解决本发明的技术问题,本发明也公开一系列跨平台3D界面设计工具,其中,包括:
跨平台系统内核,提供给用户跨平台系统功能调用的接口;
针对于嵌入式系统优化的高效3D界面图形引擎,提供给用户3D绘制的便捷接口;
界面设计框架,支持2D,2.5D,3D图形的绘制接口,定义了界面运行流程,让开发者能够快速布局界面场景;
支持各种IDE设计环境。
较优的,所述跨平台系统内核包括线程,时钟,消息机制,信号量,系统信息等系统相关函数。
较优的,所述3D界面图形引擎。包含针对于嵌入式系统优化的3D图形绘制引擎,其中包含虚拟线程技术,绘制线程控制技术。
与现有技术相比,本发明具有如下有益效果:
本发明基于Windows平台开发环境的程序设计能够大大提高开发者的设计效率,非常好的支持程序的调试,完全摆脱了嵌入式系统软件设计的不便。同时,在无开发板的情况下一样能够进行设计工作,使得嵌入式软件开发随时随地都能进行,该发明在硬件平台未推出之前完成设计工作,在硬件平台推出后能够快速移植,抢占市场先机。经过测试,在提供了界面素材(图形,图像)的情况下,能够在短短几个小时内完成一个程序的搭建工作,加上测试和效果调整时间,一两天便能完成一套简单的3D界面设计工作。对于不同的硬件平台,只需在做接口层的一些相关移植,就能够快速的将程序转移到目标平台上。目前该架构已经能够完美的支持Windows平台,支持3D硬件加速的嵌入式Linux系统。经过优化的3D界面引擎库能够保障通过Windows平台设计的三维界面程序在嵌入式系统平台上的运行效率
【附图说明】
图1为本发明实施例的一种跨平台3D界面设计架构示意图;
图2为本发明实施例之跨平台图形库和界面三维引擎的基本构成示意图;
图3为本发明实施例的虚拟线程技术原理图;
图4为本发明实施例之界面框架组成示意图。
本发明提供一种跨平台3D界面设计架构(包含3D界面设计架构和一系列设计工具),能够快速适应硬件平台,减少3D开发周期,提高研发人员的开发效率。
本发明解决其技术问题所采用的技术方案是,一种跨平台3D界面设计框架,包括:
步骤1、框架提供设计模板,开发者可直接使用该模板快捷的完成一个场景的设计。
步骤2、框架自动接收用户的输入信息,并传递给相应场景,开发者无需考虑输入信息的来源,只需要处理用户的信息。
步骤3、框架提供给开发者图形绘制接口和相关系统函数接口,开发者无需考虑应用的操作系统和硬件平台,直接调用接口对数据进行图形化显示。
步骤4、框架提供3D动画特效,开发者可直接将3D动画特效作用于3D物体,实现动画,切换显示焦点或增加界面趣味性。
步骤5、框架提供设计模板,开发者可直接使用该模板快捷的完成一个场景的设计。
采用本发明设计跨3D界面具有如下的特点:
优秀的IDE(Integrated Develop Environment)支持:能够在Windows平台下利用任何开发者习惯的程序设计软件(如Visual Studio,Dev C++,Eclipse等)快速的开发和调试3D用户界面程序。
快速开发,快速实现:基于框架提供的接口基础上,开发人员不需要掌握太多的3D开发知识,只需要配置UI界面场景布局,定义操作方式,即可完成UI程序设计工作。设计后的程序能够在Windows平台以及任何带有3D硬件加速,支持OpenGLES的标准的系统平台运行。另外,基于此发明基础上开发的程序,稳定性和资源占用率得到了很好的保障,能够最大限度的屏蔽开发者在开发复杂3D应用时候,因技术因素带来的各种问题。
实现在硬件平台尚未上市前的预开发。本发明支持无硬件加速的2D,有简单硬件加速的2.5D和有硬件加速的3D用户界面的开发。能够实现同一界面场景自适应转换,无须开发者重新编写程序。
基于Windows平台开发环境的程序设计能够大大提高开发者的设计效率,非常好的支持程序的调试,完全摆脱了嵌入式系统软件设计的不便。同时,在无开发板的情况下一样能够进行设计工作,使得嵌入式软件开发随时随地都能进行,该发明在硬件平台未推出之前完成设计工作,在硬件平台推出后能够快速移植,抢占市场先机。经过测试,在提供了界面素材(图形,图像)的情况下,能够在短短几个小时内完成一个程序的搭建工作,加上测试和效果调整时间,一两天便能完成一套简单的3D界面设计工作。对于不同的硬件平台,只需在做接口层的一些相关移植,就能够快速的将程序转移到目标平台上。目前该架构已经能够完美的支持Windows平台,支持3D硬件加速的嵌入式Linux系统。经过优化的3D界面引擎库能够保障通过Windows平台设计的三维界面程序在嵌入式系统平台上的运行效率。
如图1所述,为本发明实施例的一种跨平台3D界面设计架构示意图,可以用于任意硬件和操作系统平台之上,即一种跨平台3D界面设计架构包括:应用层11,硬件平台12,操作系统13和图像处理引擎14。
如图1所述,系统相关层,它包括具体的硬件平台和运行于该硬件平台上的操作系统以及相关驱动模块组成,例如所述硬件平台12,操作系统13和图像处理引擎14等。
应用层11,接收,处理,输出应用数据,包括系统无关层和移植层。
硬件平台12,用于支撑和驱动系统的运行。
操作系统13,为人机交互接口,用于接收开发者输入的信息,并输出相应的处理结果。
图像处理引擎14,用于根据输入的信息,调用数据存储器11存储的程序和数据,运行系统中相关的部分被最大限度的抽象成独立组件的内容,并将运行结构输出给所述操作系统13。
位于系统相关层上层的系统无关层,提供给用户不依赖于系统的程序设计支持,例如可以包括:用户界面程序,界面场景描述,界面用户自定义信息,界面组件,图像绘制引擎,界面数据。
移植层,该层实现了由系统无关层到系统相关层的功能映射。对于新平台的应用,仅需做一部分移植层的改变,即可使基于该架构的程序运行于新的平台之上,例如该移植层包括系统库、图形库和通用数据结构。
本发明的架构结构主要实现在移植层和系统平台无关层部分。
本发明系统移植层由系统库、图形库和通用数据结构组成,系统库实现了对系统函数的封装,其中包括线程、操作系统时钟、消息通讯机制、信号量,文件操作等。图形库包含了2D和3D引擎库。引擎库包含绘制函数,常用函数及特效等简化用户设计的一些组件。通用数据结构实现了程序设计中经常使用的数据结构,例如列表结构,数组结构,堆栈结构,队列结构,树状结构、环状结构等等。这些数据结构都针对于不同的嵌入式系统做了相应的优化,已达到最高的访问效率。
本发明的系统无关层主要实现了UI设计架构,提供给用户简便的设计结构和设计模板,简化用户的设计。
图形库和三维界面设计引擎,界面设计框架为本发明设计的要点,如图2所述,为本发明实施例之跨平台图形库和界面三维引擎的基本构成示意图。
图形库实现了跨平台三维绘制接口,利用该接口,将三维的图形渲染到显示设备上。在本发明中,图形库分成了三层结构,如图2所述。
第一层为Surface的提供层。该层建立一个视觉显示区域,能够用来看到直接的绘制结果。该层在Windows平台下面为一个HWND窗口。在嵌入式Linux平台上可以是SDL(SimpleDirect mediaLayer)或者FrameBuffer,某些硬件平台还提供了自己特有的显示接口(如IntelCE3100的GDL)。
第二层为EGL层,该层专门为OpenGLES而设计,用于连接OpenGLES和各种不同的显示窗口(SurfaceProvider)。
第三层为OpenGLES层,该层实现了三维绘制的所有支持接口。OpenGLES仅是用于嵌入式系统平台上的绘制接口,在普通的操作系统(如Windows)下,为了模拟实现同样的效果,本发明利用OpenGL绘制接口模拟实现了OpenGLES的所有绘制功能。并将这些功能封装在三维绘制引擎的RenderAPI里。对于3D引擎设计来说,RenderAPI屏蔽了OpenGLES和OpenGL得差异。使跨平台应用更为广泛,使用户能够无任何障碍的在非嵌入式系统上设计嵌入式系统的界面程序。从而提高实现的效率。
三维界面引擎的作用类似于三维游戏引擎,但由于三维游戏引擎主要针对PC机,在嵌入式系统上使用性能不能满足要求。因此,本发明为实现快速设计提供了专用的高性能的三维界面设计引擎。三维界面设计引擎包含三个大的组件,3DObjects,3DAnimate和3DEffects。3DObjects包含所有的相关三维物体,比如灯光,摄像机,三维立方体,三维球体,以及各种由三维软件设计的三维模型,其中三维模型可以通过3DOBJLoader实现加载,界面引擎支持Maya,3DMax等多种三维软件导出的三维模型的加载。三维物体是三维界面的主要组成元素。三维界面的人机交互的表达和场景特效则通过3DAnimate和3DEffects实现。3DAnimate通过改变物体的属性达到动画的效果。其中包含了一些标准动画,比如物体的三维运动,旋转,消隐和显现以及一些复杂的轨迹动画。由于某些资源紧张的嵌入式系统对线程数有一定限制限制,在动画方面采用了虚拟线程技术。如果线程数超出一定的限度,线程托管器会使用时间轮片法运行每个线程函数。使每个线程看起来依旧是并发运行,而实际线程数却控制在设定的范围之内。图3展示了虚拟线程技术实现动画的基本原理。
如图3所述,为本发明实施例的虚拟线程技术原理图,图3中有三个虚拟线程分别实现了三个动画,三个动画分别作用于3DObject1,3DObject2,3DObject3.定义动画的时候,需实现Step()函数,即每个小步对物体的属性改变,再通过设置初始状态和结束状态控制动画的整个过程。三个虚拟线程将会被托管器安排给实际线程RealAnimateThread1。该线程将会依次执行每个虚拟线程的Step()函数。由于每一个Step()动作时间极短,在实际显示过程中如同三个线程同时执行。
界面设计框架结构的主要作用在于快捷的构建人机交互的场景。图4描述了框架结构的组成,如图2所述,为本发明实施例之界面框架组成示意图。
界面框架中核心组件为控件(UIControls)。控件是人机交互的唯一接口。在本发明中,实现控件的层级控制机制,满足对各种复杂界面的6键式简单操作。6键式操作包括上、下、左、右、确定、返回六个按键。该六个键为嵌入式操作系统按键设备(电视机遥控器,嵌入式系统操作盘)必备的六键,而仅使用这六个键能够完成所有界面的操作,包括输入字符是本发明界面框架的另一个特点。
基于6键的层级控制机制的核心设计概念包含以下4点:
任一时刻有且仅有一个焦点,该焦点可以是任意一层上
上下左右键仅能控制焦点在本层移动,实现焦点控件的切换
进入下层通过确定键完成。确定键按下后进入当前焦点的子节点层
返回上层通过返回键完成。返回键按下后返回当前焦点的父亲层。
界面框架由UIApp开始,每个App包含多个场景(UIScene)。但每一时刻,有且仅有一个场景为活动场景。UIApp接收到的键盘指令会传入这个活动场景中,而非活动场景对键盘指令不做任何响应。场景由UIContainers和UIControls组成。UIContainers实现了场景中的背景部分。该部分不会对用户操作做任何响应,仅作修饰只用。UIControls会响应键盘指令,每一时刻有且仅有一个UIControl处于活动状态。用户可以定义6键式中的按键完成同级UIControls的切换工作。每个UIControl可以包含若干子级UIControl。当该控件为活动控件时,用户可以进入该控件的子控件继续进行操作,直至用户的目标功能控件。目标功能控件包含一个UIAction,可以在用户按键进入时响应具体的动作。
界面框架的UIControl的层级式结构能够方便集成菜单式的层级结构,从而方便实现的菜单的自动可视化实现。
综上所述,本发明创造性的构建一个屏蔽操作系统差异的公共组件,并基于此组件开发出跨平台3D图形库和专门针对嵌入式系统优化的三维界面引擎。使得在普通PC机上开发的3D界面程序能够高效的运行于嵌入式平台上,并结合界面设计框架,能够将界面和3D图形开发有机的结合在一起,实现三维界面快速开发环境,降低软件开发复杂性问题,大大提高软件产品的开发效率,为企业带了更多的商业价值。