基于BG+Array的相机操作实现方法
2015-01-18涂瑶瑶徐承志
涂瑶瑶,徐承志,梅 超
(湖北工业大学计算机学院,湖北 武汉430068)
Virtools是一套具备丰富的互动行为模块的实时3D环境虚拟实境编辑软件,其提供了500多个Building Blocks(BB)行为交互模块可供使用,特点是方便操作,应用领域广泛[1]。可以让没有任何编程基础的开发者在一个可视化图形开发界面中拖放BB,使得各种格式的资源整合在一起,如3D模型、2D图形、音频或者视频等[2],从而制作出各种用途的3D互动多媒体产品,例如虚拟装配、仿真训练、网上游戏等诸多3D软件。正是由于该软件的简易性,对开发者的编程素养要求不高,可能导致开发者陷入代码赘余的问题中。这些赘余的代码,既增加了开发人员的负担,又不便于系统后期维护。而对这些赘余代码进行封装和管理能大大提高团队开发效率。
本文作者参与国家级大学生创新创业项目——“基于虚拟校园的软件生态系统研究”,项目开发过程中出现大量重复操作,例如上百次对相机进行操作[3],其中包括相机的旋转、平移、拉伸等。根据项目开发经验,笔者利用BG+Array解决了项目中virtools脚本重复代码过多,不易维护的问题。
1 Virtools中的逻辑结构
1.1 Virtools BB
Behavior Building Blocks(BB)是用来执行特定动作的可视化功能模块[4],BB的输入分为流程输入bIn(Behavior Input)和参数输入pIn(Parameter Input),输出分为流程输出bOut(Behavior Output)和参数输出pOut(Parameter Output)(图1)。

图1 BB的输入输出
根据运行方式的不同,BB有三种类型:
1)On/Off 一旦On被触发,BB就持续执行,直到Off被触发才会停止运作(图2a)。

图2 BB的运行方式
2)In/Out 一旦In被触发就执行BB的功能,完成后会触发Out并停止运作(图2b)。
3)Loop In/Loop Out 一旦In被触发BB就开始运作,随即在Loop Out和Loop In间执行外部回圈,直到完成BB设定的某个条件才会触发Out并停止运作。……
