APP下载

增强现实作品创作平台的研究与实现

2018-10-24李全亮何汉武吴悦明

计算机工程与设计 2018年10期
关键词:图元窗体配置文件

李全亮,何汉武,吴悦明+

(1.广东工业大学 机电工程学院, 广东 广州 510006;2.广东工贸职业技术学院 机械工程系, 广东 广州 510510)

0 引 言

AR技术[1,2]是一种跨多个学科的综合体[3],AR系统的开发涉及大量的图形学和平台相关的代码编写,开发门槛高。

目前,可用于AR系统开发的工具包主要有采用人工标识跟踪定位的ARToolKit[4]工具包、采用自然特征进行跟踪定位的Vuforia[5]工具包和EasyAR[6]工具包。虽然这些开发包封装了底层的跟踪注册算法,但仍然需要开发者编写大量的代码来控制场景中模型的布局、渲染、运动等工作。为了简化AR系统的开发流程,Jee等开发了一种基于AR的电子学习应用开发工具[7],以及褚伟龙等提出了一种移动AR框架系统[8],这类开发工具可制作的简单AR系统,但开发过程不够直观和灵活,所制作的AR系统的交互功能相对单一。此外,Hürst等提出了一种创建和编辑三维物体的AR应用[9],而文献[10,11]则侧重于AR场景动画的可视化制作。

基于以上情况,本文提出并实现了一种用于开发AR系统的可视化创作平台。该平台的开发工具提供了图形化的设计界面,设计人员通过对界面图元的拖曳、连线和设置图元的相关参数完成AR作品的设计。而平台的AR浏览器通过解析AR作品来呈现AR的设计效果。该平台的整个开发过程无需编写代码,且直观、高效。

1 基于路由图的复杂交互逻辑表达方法

为了让设计人员能灵活、直观地添加AR系统标识、虚拟模型和交互方法,本文提出了一种基于路由图的复杂交互逻辑表达方法。该方法用不同类型的图元模块来表示AR系统的各部分功能,并用不同类型图元模块的组合来表示AR系统的逻辑序列或动作序列,该方法的具体描述如下。

根据AR系统的实现过程,图元模块分成4种基本类型:

(1)标识:AR系统跟踪注册所用的标识;

(2)模型:AR系统中的虚拟模型;

(3)事件:AR系统中的交互方法;

(4)行为:响应某个事件的系统处理行为。

规定图元模块间的组合方式只有以下3种:

(1)标识-模型:表示在某标识上显示某个虚拟模型;

(2)模型-事件:表示某个虚拟模型被某个交互方法所控制;

(3)事件-行为:表示某个交互方法被触发时,系统执行某个处理行为。

图元模块间的连贯组合将形成一个路由图,如图1所示,路由图有四级路由节点,并规定标识作为根节点,而模型、事件、行为分别为二级节点、三级节点、四级节点。

图1 AR路由图

假设图1中的B1、B2、B3分别为动画行为、移动行为和旋转行为,则该路由图所配置的AR系统可解释为:在该AR系统中选择标识I1作为系统的标识,而在该标识上显示M1、M2和M3这3个模型。其中事件E1控制着模型M1,而事件E2同时控制着模型M2和模型M3。当事件E1被触发时,模型M2将执行某个动作且沿着某个方向移动。而当事件E2被触发时,模型M2和模型M3同时绕某个方向旋转。

本文用一个交互方法同时控制一个模型的移动和另一个模型的隐藏为例来说明该表达方法的实现过程。第一步定义图元模块的属性,这些属性的定义都与系统的功能需求相关。AR系统最基本的功能是将虚拟模型显示在标识的某个位置上,因此标识图元要有文件名称属性,而模型图元要有位置、可见性等基本属性。AR系统另一重要功能是与虚拟物体的交互,以虚拟按钮交互为例,则按钮事件图元应有虚拟按钮位置、触发方式等属性,而行为图元要有作用对象属性以及与行为类型相关的属性,如图2所示。行为图元的作用对象属性值默认为Default,代表该行为作用于在同一支路上的模型,如图2中的移动行为图元,它的作用对象为模型A。而图2中的隐藏行为图元的作用对象属性值并不是Default,而是指定了模型B,这是为了实现同一个交互方法同时控制模型A的移动和模型B的隐藏。

图2 路由图的解析

第二步解析路由图,系统根据路由图中的图元模块间的组合和图元模块的属性来动态添加模型、交互方法等,其中交互方法的动态添加为本平台的核心。交互方法添加方式如下:①预定义相应的交互类来存储事件图元与行为图元的属性值,并用C#的List集合来存储这些交互类的实例化对象;②预定义相应的交互函数和行为函数来控制模型的运动;③根据事件的类型,将交互类集合放在相应的交互函数下遍历。如图2所示,按钮交互类集合放在OnGUI()函数[12]中遍历,当检查到虚拟按钮按下时,系统将执行移动和隐藏这个两种行为方法。

2 平台的设计与实现

2.1 平台整体框架设计

根据任务的不同将平台划分为3个部分:AR图形化开发工具、AR浏览器、AR服务器。平台整体框架如图3所示。

图3 平台整体框架

设计人员借助AR图形化开发工具完成AR系统内容的创作并生成相应的AR作品,AR作品由4种文件组成,它包括用于三维注册的识别文件、系统配置文件、模型文件和音频文件。AR服务器用于AR作品的存放和管理,并供AR浏览器下载,本平台采用IIS(internet information server)服务器作为AR服务器。AR浏览器用于对AR作品进行加载和解析,并呈现相应的AR效果。

本平台采用ARToolKit开发包来求解摄像机在真实场景中的姿态。ARToolKit是一个基于人工标识的AR工具包,它拥有稳定的图像识别算法和图像追踪算法,并提供NFT(natural feature tracking)标识和方形标识的制作方法。因此,用户无需考虑跟踪注册技术的实现问题。

2.2 AR图形化开发工具

2.2.1 开发工具的整体设计

AR图形化开发工具按照功能的不同划分为标识制作模块、模型处理模块、系统配置模块和调试模块共4大模块。标识制作模块负责标识文件的生成,该模块内置ARToolKit工具包所提供的标识制作工具;模型处理模块负责获取模型的原始姿态、大小和动画等信息,将所获取的信息保存在XML文件中。所有的模型或动画都需要经过Unity3D工具打包成.unity3d格式,再导入开发工具中;系统配置模块为整个系统的核心,采用了基于路由图的复杂交互逻辑表达方法来完成AR系统的设计,而路由图最终被编译成XML配置文件。调试模块实质为AR浏览器内置于该模块中,用于解析XML配置文件并呈现AR系统的设计效果。本开发工具的工作流程如图4所示。

图4 AR图形化开发工具的工作流程

2.2.2 开发工具交互界面的设计

本开发工具的用户为非程序开发人员。为了达到易学易用的目的,采用了类似于画树状图的图形化交互式开发AR系统。开发人员将各种图元模块按照逻辑顺序连接在一起组成AR路由图就可完成AR系统的配置。针对上述特点,开发工具的界面设计成由5个窗体组成的交互界面,其中一个窗体作为父窗体,用于放置菜单栏和其它4个子窗体,如图5所示。

图5 开发工具的交互界面

图5的窗体1为工具箱,用于陈列各类图元模块。其中每个图元模块都为一个独立的对象,代表着AR系统相关的功能。窗体2为图形编辑器,用于绘制路由图,绘图过程就是AR系统内容的创作过程。窗体3为属性编辑器,用于设置图元模块参数。窗体4为信息输出框,实时显示AR系统的配置信息。该开发工具为Microsoft Visual Studio工具开发的C# Winform窗体应用程序,采用WeifenLuo.WinFormsUI.Docking技术来实现界面的布局,窗体之间的数据传递采用静态变量和委托来实现。4个子窗体的实现如下:

(1)工具箱:工具箱中的图元模块是由AR系统某个功能抽象而成。由于图元模块的4种基本类型各有多种类别,可再细分成不同种类,见表1。采用Winform窗体的TreeView控件来陈列各类图元模块,其中将基本类型作为TreeView控件中父节点。

表1 工具箱的图元模块类别

每个图元模块的数据结构都包括:数据信息、位置信息和类型信息,如图6所示单个图元模块的数据结构。数据信息记录模块的id号、模块类型、图片索引值等信息。位置信息记录模块对应图片的坐标信息。而类型信息与图元模块的类型有关,如类型为模型的图元模块,其类型信息为模型的缩放、位置等。

图6 单个模块的数据结构

(2)图形编辑器:编辑器的任务是绘制由工具箱拖出来的图元模块,以及将不同类型的图元模块按逻辑顺序连接起来形成路由图。在该编辑器上添加自定义的画布控件,该控件的大小能适应窗体的变化,并利用C#的GDI+所提供的函数在该画布上绘制图元和连线。由工具箱拖动到编辑器上的图元模块,都存放在一个List集合里。两图元模块进行连线时,都需要检查两图元模块的类型是否符合基于路由图的复杂交互逻辑表达方法所规定的组合方式,若不满足则将信息反馈给用户。由于图元模块的拖放顺序和模块间的连线顺序是任意的,为了便于路由图的解析,图元模块之间的关系用DataTable表来记录,记录方式见表2。该表为图1路由图的关系记录表,其中表的每一行只记录两个连接在一起的图元模块名称。

表2 图元模块间的关系记录

路由图中的图元模块都具备移动、修改和删除等操作,而实现这些操作的关键是找出鼠标指针所指的图元模块。查找方式通过判断鼠标的坐标(x,y)与图元模块的位置信息(u,v)是否满足式(1)来确定

(1)

式中:dwidth、dhigh分别为图元模块对应图片的高度和宽度。逐个比较存放在List集合中的图元模块的位置信息和鼠标的坐标信息,当满足式(1)时,则说明该图元就是所要找的图元模块。

(3)属性编辑器:用于修改图形编辑器上的图元模块的类型信息和部分数据信息。该编辑器根据要修改图元模块的类型信息和数据信息动态生成相应的C#的Winform窗体控件,如TextBox文本框、ComboBox复选框、Label标签等。

(4)信息输出框:用于显示AR系统的配置情况,起辅助开发的作用,也是系统配置文件生成的依据。根据关系记录表的数据,用C#的DataGridView控件将路由图的所有合理分支给单独罗列出来。输出框只罗列两种分支:①标识→模型;②标识→模型→事件→行为。其它类型分支或单独一个图元模块均属于不合理分支而不予罗列。如根据表2中记录,可罗列出根节点为I1的分支有:①I1→M1;②I1→M2→E1→B1;③I1→M2→E1→B2。

2.2.3 系统配置文件的生成

本系统使用XML文件作为配置文件,因为XML文档具有独特的自描述性,且自结构化,既能自定义节点信息,又能很好地对应路由图的逻辑信息[13]。根据信息输出框的所记录的AR系统配置信息,从List集合获取相应图元模块的数据并生成XML配置文件,文件的生成格式如图7所示,该图也为图1路由图的配置代码片段。XML配置文件分成两部分:①标识-模型;②事件-行为。这是为了便于AR浏览器对配置文件的解析。

图7 系统XML配置文件

2.3 AR浏览器

AR浏览器是负责解析开发工具所生成的AR作品并呈现相应的AR效果的应用软件,它可运行于Windows、Android和IOS等操作系统的设备。对于不同操作系统的设备,AR浏览器的交互方式也有所不同。如在Android平台上,AR浏览器没有鼠标、键盘和Kinect等交互方式。AR浏览器采用了C/S架构,并借助于Unity3D工具开发而成,以解决应用软件的模型渲染、交互、跨平台等问题。根据AR浏览器的工作流程,该浏览器可化划分成图像采集模块、跟踪注册模块、虚实融合模块、交互模块、虚拟信息处理模块、以及音频模块和显示模块,如图8所示。

图8 AR浏览器的工作流程

图像采集模块负责真实场景的视频采集,获取场景中的标识信息;跟踪注册模块负责计算出摄像头在真实场景中的姿态,该模块借助于ARToolKit的函数完成;虚实融合模块负责将虚拟信息与真实场景的信息进行配准,并将配准后的虚拟信息叠加到视频帧上;交互模块负责用户与系统的交互处理,实时检测用户是否按下键盘、鼠标、点击屏幕等操作,以发出相应的行为指令;虚拟信息处理模块负责虚拟信息的生成,该模块根据交互模块发出的指令添加或删除相应的虚拟物体;音频模块的作用是根据交互模块发出的指令播放相应的音乐;显示模块负责将虚实融合后的信息呈现给用户。

另外AR浏览器在开始运行时,首先根据XML配置文件的配置信息完成对跟踪注册模块和交互模块的初始化。跟踪注册模块初始化主要是将标识的类别、名称、标识文件的数据和标识所对应的模型数据保存到内存中。而交互模块的初始化是根据XML配置文件中的EventConfig节点数据动态添加相应的交互方法,如根据图7中的Event_Button事件节点信息,在Unity3D的OnGUI()函数中添加GUI.Button()方法。接着根据行为节点信息,在该方法中添加用于发出相应指令的行为方法。

3 开发实例展示与分析

针对机械领域的设备装配图纸比较复杂、不够直观,工程师很难看懂的问题。作者以二级圆锥圆柱齿轮减速器装配为例,利用本平台开发了一款运行于Android设备上的AR系统。该系统可让工程师用手机扫描图纸就可看到减速器的模型,点击该模型可看到减速器的爆炸图。该系统还具有查看某些零件的装配动画和播放零件装配的技术要求音乐等功能。

首先,将减速器的模型文件和音频文件导入到平台的开发工具中。接着将减速器的装配图纸上传到开发工具的标识制作模块并制作成NFT标识。接着根据用户需求设计AR系统的内容,即配置AR路由图,配置过程如下:①将NFT标识图元拖动到编辑界面作为路由图的根节点,并设置该图元的标识属性。②拖出两个模型图元,一个是装配好的减速器模型A,另一个是带装配动画的减速器模型B,并设置好它们在真实场景中的姿态。③拖出7个按钮图元,其中4个用于控制模型A的移动和旋转,另外3个控制模型B装配动画的播放。再拖出碰撞图元控制模型A和模型B的显示与隐藏。④为事件图元添加行为图元,如为控制模型B装配动画播放的按钮图元添加动画、音乐和标题等行为图元,具体配置如图9所示。⑤对所配置的内容进行调试,调试无误后生成AR作品并上传至AR服务器。

图9 AR系统的路由配置

最后,打开安装在Android手机上的AR浏览器,从AR服务下载刚上传的AR作品。下载完成后AR浏览器会自动完成初始化并打开手机的摄像头,将摄像头对准减速器的装配图纸,手机屏幕会显示减速器的三维模型,如图10(a)所示,可以对三维模型进行移动、旋转等操作。点击屏幕上的虚拟按钮,将播放减速器的三维装配动画和介绍音乐,如10(b)所示。而图10(c)为两种标识下的场景,显示的是减速器的部分零件模型。

图10 AR浏览器的AR效果

由该实例可以看出本平台可让设计人员在不掌握AR的相关技术和编写代码情况也能高效快速地完成AR系统的开发,开发过程灵活简单,具有一定的应用价值。为了进一步体现本可视化开发平台的优点,使用本平台开发AR系统与传统的文本编程方式开发AR系统作比较,见表3。以及使用本平台和其它创作工具作对比,见表4。

表3 AR系统开发对比

表4 AR系统创作工具对比

4 结束语

本文提出了一种基于路由图的交互逻辑表达方法,该方法可让用户快速地制作出复杂多样的AR内容。本平台采用了图元模块与连线的鼠标操作编辑方式来开发AR系统,避免了传统的文本编程方式易产生语法、逻辑等错误的问题,降低了AR系统开发的难度与时间。

综上所述,本文提出了一种利用直观的图形化交互方式来开发AR系统的可视化创作平台,该平台可让非程序员在不掌握高深的AR开发技术的前提下也能高效快速地把自己的创意想法变成AR作品,具有较好的应用价值。

猜你喜欢

图元窗体配置文件
一种组态控件技术在电力监控系统中的运用
学术出版物插图的编排要求(一):图注
联锁表自动生成软件的设计与实现
互不干涉混用Chromium Edge
试谈Access 2007数据库在林业档案管理中的应用
忘记ESXi主机root密码怎么办
为View桌面准备父虚拟机
打印机设置
基于Qt绘图系统的图形应用优化研究与实现
巧设WPS窗体控件让表格填写更规范