APP下载

三维可视化服务平台的管理模型研究

2019-05-05邓英杰郭锐锋王其乐

小型微型计算机系统 2019年4期
关键词:组件消息可视化

苏 谟,邓英杰,郭锐锋,王其乐

1(中国科学院大学,北京 100049)2(中国科学院 沈阳计算技术研究所,沈阳 110168)3(沈阳市第三十一中学,沈阳 110021)

1 引 言

随着三维图形学的飞速发展,三维可视化技术获得了广泛的关注和应用[1].三维可视化平台主要采用三维可视化技术,是一种构建三维应用的系统软件[2].为了提高三维可视化应用开发效率,解决缺乏完善的三维可视化应用架构及多终端应用模式,本文以基金项目为背景,研究三维可视化平台架构及管理模型,从而提高开发三维应用效率,降低开发难度.

目前,针对消防、安监、环保、军工等特定三维可视化应用领域,Delta3D等开源三维引擎仅提供了对底层OpenGL的封装和部分支持工具,开发人员需要在此之上做大量的准备工作才能构建具体行业的三维可视化应用[3,4].因此,一些学者从大量的实际经验中总结出一套三维可视化平台框架,以提高开发效率.申闫春等人采用了OSG作为底层图形库并封装成高级API函数库,提供了一种研发复杂可视化系统标准中间件的思路[5,6],但仍未形成管理模式、开发效率低;卜祥报等人结合MFC应用程序框架以及OGRE图形渲染流程,为特定场景构建三维可视化平台[7],进一步提高了三维应用的开发效率,但其可扩展性差,不能灵活动态构建应用模型,支持多终端数量受限.郭志星等人解决了传统角色系统依赖于选用具体引擎限制,提出角色管理模型,适应复杂多变的应用场景[8].

本文针对目前三维可视化架构所存在的缺点,综合文献[6,7]存在的问题,借鉴了文献[8]的思路,采用“模型-实例”思想,提出了基于角色、组件、消息(ACM)的可视化管理模型、角色模型(模型-算法-属性-消息)和运行管理模型(3D应用运行服务、3D应用配置管理、3D应用可视化操作),能够有效管理角色、组件等资源及通信控制,能够动态绑定角色算法和数据属性,形成了一种可配置的管理机制,满足动态构建三维应用的需求,有助于开发人员关注业务逻辑而不必关注乏味的底层实现.综上,本文为三维可视化应用的构建,提供了新思路,具有实际应用价值.

2 三维可视化服务平台架构

三维可视化服务平台主要采用三维可视化技术,是一种构建三维应用的系统软件.本文通过研究三维引擎体系结构[9,10]及三维可视化的应用模式,提出三维可视化平台架构及主要功能.

2.1 三维可视化平台架构图

三维可视化服务平台以网络层、操作系统层为基础,涵盖了引擎层和服务层两部分.其中,引擎层提供开源的三维仿真基础库,主要对音效(OpenAl)、物理系统(ODE)、图形渲染(OSG)、网络管理(GNE)等功能封装成独立的类库.采用组件式管理方式,在此基础上对其功能强化并封装成独立组件为应用提供服务,主要由负载均衡器、算法管理器、场景管理器、实时渲染器、资源模型管理器、安全管理器、场景编辑器等构成,对应用层提供支持保障,具体如图1所示.

图1 三维可视化平台架构图Fig.1 Structure of 3D visualization

2.2 基于角色、组件、消息的管理模型(ACM)

本文提出基于角色、组件、消息的管理模型,通过消息媒介对角色、组件等资源有效的管理及通信控制,能够掌控三维可视化场景中的所有对象并对运行过程进行有效的管理.

1)定义

定义1.角色(Actor)定义为应用角色和非应用角色.非应用角色是指可视化场景中静态的物体,如灯光、房屋等.应用角色是可以与ACM交互,能够做出tick事件响应处理,如人物、车辆等.

定义2.组件(Component):提供高层的系统行为,如网络组件、日志组件等,通过处理和发送消息实现多个组件协同工作.

定义3.消息(Message)定义为角色和组件之间相互通信的媒介.

2)基于角色、组件、消息的管理模型

角色、组件、消息三者关系如图2所示.

图2 基于ACM的管理模型图Fig.2 Management model based on ACM

3)消息管理模型

如图3(a)所示,引入消息工厂根据已注册的消息类型创建消息对象,再通过发送消息接口发送至本地消息队列和远程消息队列.通过帧轮询机制进行消息推送,将组件注册的消息发送至组件中,角色注册的消息发送至角色.组件通过本地消息接口处理本地消息,通过网络消息接口处理远程消息.为提高系统资源利用率,针对角色响应消息,采用通用消息推送、角色专有消息推送和关注角色消息三种推送方式.图3(b)是消息管理模型核心类图.

4)消息结构

消息结构主要由消息优先级、消息类型、参数列表、发送者标识、发送者主机信息、接收者标识以及接收者主机信息组成,用于在系统之间、组件之间、角色之间传递数据[11].

通过消息结构定义不同的消息体以满足三维可视化应用的需要,消息、消息类型、消息参数的结构以及它们之间的关系如图4所示.

消息类型是消息的重要标识,将系统级消息和应用级消息分开,围绕三维可视化应用对应用级消息进行细粒度划分,如表1所示,各组件、角色通过消息注册,实现及时有效的消息处理响应.

3 角色模型

为适应复杂多变的三维应用场景,三维可视化服务平台需要支持动态应用模型,因此本文基于“模型-实例”思想,提出通用的角色模型(模型-算法-属性-消息),结合工厂模式、

图3 消息管理模型图Fig.3 Structure of message management

单例、代理等多种设计模式,形成可配置管理机制(即通过数据驱动,动态绑定角色算法和数据属性,完善并丰富角色内容),能够解决角色的复用性,耦合性.

图4 消息、消息类型、消息参数及彼此之间的关系图Fig.4 Message,message type,structure of message type,and the relationship

3.1 角色基类

Actor是角色类的基类,拥有角色的通用(基本)属性,如角色工厂(ActorFactory)根据角色类型(ActorType),创建角色代理(ActorProxy),通过角色代理访问角色(Actor)属性,以保证其安全性.

表1 消息类型分类表
Table 1 Message type classification table

消息类型解释Sys系统类消息Info通知型消息Tick每帧都发的消息Request请求性消息Log日志类消息Task任务类型消息Alg算法类消息

角色ID标识、角色名称、关联模型、位置空间、状态等属性,角色类关系图如图5所示.

图5 角色类关系图Fig.5 Role class diagram

3.2 行为算法类

行为算法类关系图如图6所示,算法工厂(AlgoFactory)根据算法类型(AlgoType),创建具体行为算法.Skill是角色行为的基类,涵盖角色通用行为,如移动、攻击等,通过算法工厂对角色扩展行为算法,以满足三维可视化应用需要.

图6 行为算法类关系图Fig.6 Class diagram of behavior and algorithm

3.3 数据管理类

数据管理类是对角色类属性和行为算法的扩展并对运行时角色数据进行管理.在系统初始化时,通过数据管理类将角色的各类数据(如数据库中为每个角色实例配置角色的扩展属性和行为算法数据)加载内存并管理,实现运行时角色扩展属性和行为算法的动态绑定,如图7所示.

图7 数据管理类型图Fig.7 Class diagram of data management

3.4 角色运行时序图

本文采用了模型抽象属性、算法、行为的动态关联模式,将三维模型中的静态数据和行为数据解耦合,利用“模型-实例”的方式实现了运行时角色的动态创建和维护,角色运行时序图如图8所示.

图8 角色运行时序图Fig.8 Sequence diagram of character running

4 三维可视化平台运行管理模型

基于三维可视化服务平台架构和角色模型,本文提出以三维应用运行服务,三维应用配置管理和三维应用可视化操作为核心的运行管理模型.

4.1 运行管理模型

运行管理模型由三维应用运行服务、三维应用配置管理和三维应用可视化操作构成.其中,三维应用运行服务主要负责整个三维应用场景控制逻辑数据处理,提供运行时服务,使场景、模型、算法、规则间协作,保证三维可视化应用能够高效稳定地运行.三维应用配置管理主要负责配置相关模型数据、模型相关功能算法、规则,编辑生成三维应用场景等功能;三维应用运行操作提供一个实时渲染的三维虚拟场景,用户通过操作界面进行人机交互完成具体的三维应用活动,具体如图9所示.

4.2 多终端应用模式

本文考虑多终端应用模式,应避免服务器过载或宕机的风险,因此采取动态负载均衡的策略是必要的.图9运行管理模型图中的负载均衡器采用一种基于蚁群算法的动态负载均衡策略,根据负载均衡因子(LBF)[12]来衡量服务节点的负载情况,从而进行蚁群算法的迭代,动态更新负载策略.

图9 运行管理模型图Fig.9 Running management model

流程描述:在每个任务处分别设置一个蚂蚁,如果任务分配给服务器节点j,j=1,2,…,n,蚂蚁在节点j上分泌信息素,信息素的浓度越高表明完成任务数越多,速度越快,而信息素浓度与该服务器的负载均衡衡量因子(LBF)的乘积越大则被选中的几率也就越大.

假定该节点上第k次迭代后的信息素浓度为CIk,挥发系数为θ,n为经过该节点的蚂蚁个数,ΔCIk为本次任务分配中第i只蚂蚁在节点留下的信息素.则本次任务结束后信息素浓度为:

(1)

另外,为了避免蚁群算法陷入局部最优,在一开始蚂蚁选择节点时就设置一个启发式概率P,这里可以采用自适应的方法,根据设置阈值和每次迭代任务完成的时间因素来自适应调整P.

因此,就得到一次迭代过程中服务节点被选择的概率模型:

(2)

其中,Qj表示选择第j台服务节点的概率,Pk表示第k次任务分配时蚂蚁选路的启发式概率,α表示LBFj的权重因子.动态负载均衡调度策略如图10所示.

图10 负载均衡算法逻辑流程图Fig.10 Load balancing algorithm logic flow chart

4.3 构建三维可视化应用逻辑流程

基于三维可视化服务平台的管理模型,可快速构建具体的三维可视化应用,逻辑流程如图11所示.首先将3ds MAX等软件制作的三维模型,通过平台提供的模型导入插件,导出标准的静态模型、骨骼模型等标准模型;通过模型资源管理注册模型、定义场景角色、关联角色模型、配置角色属性和相关行为(算法)等,形成完整的场景角色模型;三维应用配置管理提供场景制作功能,利用角色模型资源搭建具体的三维应用场景,可以根据具体应用要求完成个性化调整相应的人物、车辆等角色模型绑定数据等操作,形成三维应用场景文件,通过数据接口完成角色模型与业务数据的映射关系;启动三维应用运行服务载入可视化应用场景及运行时必要数据,提供运行时服务;三维应用可视化操作提供了一个立体、虚拟仿真的渲染环境,用户通过操作界面进行人机交互完成具体三维应用.

5 实验结果与分析

本实验硬件配置:CPU Intel Core(TM)i3-4160 3.6GHz,四核处理器,内存为8GB,显卡型号为NVIDIA GeForce 9600 GT,显存为1GB.

软件平台为Windows 7旗舰版64位操作系统,开发语言为C++、C#,开发工具为Visual Studio 2015,OpenGL 4.3版本,Delta3d 2.5.0版本,NVIDIA驱动版本号为174.16.

实验场景选用消防演练场景,如图12所示.针对消防演练业务需求,结合本文提出的基于三维可视化服务平台的管理模型,完成场景构建、角色属性及行为算法配置、通过角色模型生成场景角色实例等配置工作.

图12 消防演练场景图Fig.12 Fire drill simulation results

相比较文献[5]和文献[6]中的架构,采用了本文方法,形成友好用户管理界面,提供了角色属性、常用行为算法、角色扩展的属性和行为算法等资源,如图13(a)所示,左侧部分是角色模型库,采用拖拽方式将具体的角色模型摆放至场景中生成具体的场景角色实例,实现“模型-实例”过程.同时,根据应用需要对具体的角色实例,增删扩展属性、行为算法及规则(如触发条件)如图13(b),实现对场景角色的零代码配置管理,从而大幅降低研发成本和提高研发效率.

图13 动态配置角色模型Fig.13 Dynamic configuration of character model

通过场景创建、角色配置等一系列操作,启动三维可视化运行服务,载入可视化应用场景及运行时必要数据,运行效果图见图14.

实验表明采用本文的管理模型构建的消防演练可视化应用不仅开发效率高,平均FPS在70以上,渲染流畅,功能完备.

图14 运行效果图Fig.14 Inspection of operation effect

同时,本实验验证了在多终端应用模式.分别在基于文献[6]和基于本文管理模型的架构下使用100台终端、10台服务器同时运行,启动负载均衡器后,记录的各服务器节点内存占用、网络指标、CPU占用等实验数据如表2所示.为了进一步研究负载均衡效果,我们假定内存占用率小于30%的服务节点是空闲的, 占用率大于90%的服务节点是超负荷的, 处于之间的是正常使用的服务节点,CPU占用率处于[10%,90%]范围为正常使用,之外则是空闲和超负荷,而每台节点的网络平均带宽不超过10kb/s的为空闲,超过5Mb/s为超负荷.

表2 多终端环境下运行效果对比图
Table 2 Developing cost comparison

可视化架构衡量指标文献[6]本文内存最大内存占用率/%9565最小内存占用率/%2148内存超负荷数量/台30内存空闲数量/台40CPU最大CPU占用率/%9990最小CPU占用率/%110CPU超负荷数量/台21CPU空闲数量/台40带宽最大平均带宽/Mb/s8.08.0最小平均带宽/kb/s1.032带宽超负荷数量/台21带宽空闲数量/台40

从表2可以看出,文献[6]架构下每台服务器节点内存、CPU和宽带的最高和最低使用率的差分别为74%、98%、7.99Mb/s,跨度极大,可以计算其方差很大离散程度高,这说明在10台服务器节点中任务分布不均,有些服务器超负荷运转,还有些服务器则完全处于空闲等待的状态,正常运转的节点只有30%.而采用本文管理模型和架构的分布式体系占用率方差小,服务器资源利用很平均,基本没有空闲或超负荷的节点.因此,与文献[6]的架构相比较,本文所提出的管理模型提高了资源利用率,满足多终端可视化应用运行需要.

6 结束语

本文提出一种基于三维可视化服务平台的管理模型,采用“模型-实例”思想,提出了ACM(Actor-Component-Message)管理模型、角色模型(模型-算法-属性-消息)和运行管理模型,有效管理角色、组件等资源及通信控制,能够动态绑定角色算法和数据属性,支持动态构建三维应用.实验结果表明,本文的方法实现简单,为具体三维应用提供便捷的管理模式,有效提高三维可视化应用的开发效率,满足多终端可视化应用需要.

猜你喜欢

组件消息可视化
基于CiteSpace的足三里穴研究可视化分析
自然资源可视化决策系统
无人机智能巡检在光伏电站组件诊断中的应用
思维可视化
Kistler全新的Kitimer2.0系统组件:使安全气囊和安全带测试更加可靠和高效
自然资源可视化决策系统
一种嵌入式软件组件更新方法的研究与实现
一张图看5G消息
通用(OA)办公自动化系统的组件运用
晚步见道旁花开