APP下载

用Lingo语言实现自动跟踪程序的算法

2013-04-29隆川隆岩

电脑知识与技术 2013年7期

隆川 隆岩

摘要:应用多媒体集成软件Director中的Lingo语言实现自动跟踪程序的算法。

关键词:Director;Lingo程序语言;自动跟踪;程序和算法

中图分类号:TP312 文献标识码:A 文章编号:1009-3044(2013)07-1546-02

Director(导演)是美国Macromedia公司(简称MM公司,Flash和Dreamweaver等著名软件都是该公司的产品)旗下的一款专业多媒体集成软件(以下简称D)。国外多媒体公司大多用它制作多媒体光盘、教学软件及网络产品。该软件提供了对音视频、图形、文本、Flash及网络等通用文件格式的支持,拥有大量的行为库和插件。最具特色的是其内置了高级多媒体编程语言——Lingo语言,自从Lingo语言在90年代初期植入D中以来,其多媒体处理能力已变得十分成熟和强大,随着96年Shockwave Play网络播放器及浏览器插件的推出,Lingo语言又搭上了internet的快车。特别是自D的 8.5版本发布以来,Lingo语言又增加了对网络三维的支持,其完善的三维处理语句几乎使Lingo语言的数量扩大了一倍,成为了一个涵盖单机到网络、从平面到三维虚拟现实等领域专业多媒体制作的利器。该文主要通过导弹对做随机运动的飞蝶进行自动跟踪的例子来探讨Lingo语言编程的一种算法和表现方式,并对D的使用做一些简单的介绍。

1 程序设计准备工作

D软件既然命名为“导演”,是因为它的工作方式就象在制作一部电影,它主要由演员、舞台、总谱等窗口组成,演员就是我们制作中需要的多媒体素材,该文用到的演员是飞蝶和导弹,可在D自带的绘图窗口中绘制或输入外部图像来完成。舞台就是程序最终运行时的窗口,所有演员的行为是在舞台上完成的,相当于放电影的屏幕,该文将舞台设置为640*480。总谱是一种制作过程中记录的方式,主要是以帧的方式来体现,播放制作好的电影时,指示标志(播放磁头)会以每秒多少帧的速度移动(速度可自行调节),可以说Flash的工作方式就是从D中借鉴过来的,总谱可详细记录舞台中所有演员及行为的资料,相当于电影制作中的场记。将已输入到演员窗口中的飞蝶和导弹分别拖到舞台中(详细制作过程略),在总谱的一、二两个通道中会分别出现一个28帧的记录,总谱中会自动为这两个28帧的记录命名为Sprite(1)和Sprite(2),它们分别代表飞蝶和导弹。在Lingo语言中所有对该二个演员的编程者是用Sprite(1)和Sprite(2)来表示的,在D中有许多用Lingo语言制作的行为,这些行为组成了一个行为库,其中就包括了本文要用到的随机运动的行为,将该行为用鼠标拖放到舞台中的飞蝶上,在随之打开的窗口中设置运动速度为150,旋转角度为0,而飞蝶的运动范围该行为会根据舞台的大小自动设置。关闭该窗口后随机运动就被赋予到了飞蝶上,同时在演员窗口中会增加第三个演员(行为演员或脚本演员),接下来的任务就是本文的主要内容,制作第四个行为演员----自动跟踪脚本程序。

2 自動跟踪程序设计

2.1程序设计分析

程序设计目的是导弹自动跟踪在窗口内做随机运动的飞蝶,并逐渐接近,最终与飞蝶在屏幕中的位置重合。必需按照这些要求进行程序的设计,虽然要做到导弹与飞蝶的位置重合在Lingo语言中一条语句就可以实际,但它在电脑中是瞬间就会完成的,不足以体现模拟导弹对飞蝶的跟踪过程。所以设计重点是延缓它们位置重合的时间,并具体描述出整个过程中的有关位置、角度等变化的细节,如:渐近,角度转动和跟踪动作的流畅,导弹方向指向等问题。

2.2 程序设计方法

设图1是飞蝶与导弹初始状态(发射前)在屏幕中所处的位置,Dx和Dy是它们间的水平和垂直距离之差,在这里使用一个大于1的参数N,程序中令导弹在水平和垂直方向分别移动Dx / N和Dy / N,在导弹移动后的位置上再与随机运动的飞蝶生成新的Dx和Dy如图1中虚线所示,再令导弹在水平和垂直方向上移动Dx /(N-1)和Dy /(N-1),随着N的递减,导弹将逐渐接近飞蝶,并当N=1时(N-1次循环后)与飞蝶的位置重合。由于真实导弹跟踪飞蝶的过程中导弹的方向是要指向飞蝶的,所以在N次计算导弹位置的过程中还要同时计算导弹所需转动的角度。

2.3 程序算法(Lingo语言中“–”后的内容为注释)

在演员窗口中打开脚本编辑窗口,进行如下程序编辑(自动跟踪脚本程序):

程序编辑完成后,关闭编辑窗口,演员窗口中将会出现第四个演员,这第四个演员就是自动跟踪脚本程序,将该演员用鼠标拖

到舞台中的导弹上,自动跟踪脚本程序就赋予给了导弹。接下来通过播放就可观看程序运行的效果,并通过调节参数N和随机运动的速度来改变自动跟踪的运动状态,以期达到满意的效果。该文主要是以平面的形式来体现自动跟踪的运动,由于在电脑屏幕中平面的坐标常常以屏幕象素为单位,当位移的值小于1个象素时会出现一定的误差。但此误差对人眼的视觉效果不会产生影响。

3 结束语

Director发展多年以来,有许多国内外同仁用Lingo语言编制的程序,它们都很优秀,而且涉及的面也很广。这篇文章只是一个简单的应用,不足之处还望各位同仁指正。目前国外D的使用和Lingo语言编程都已十分成熟,许多行为和插件都是国外公司或程序员制作的。国内近几年随着多媒体制作的发展也出现了大量优秀的D的作品。涌现出了许多象奥古多媒体(http://www.aougu.net/ )和宇风多媒体(http://www.yufeng21.com/ )这些专业的多媒体网站。展现出了我国多媒体设计制作行业的美好前景,相信通过社会各行各业人士的共同努力,我国软件业的发展一定会跨入世界先进行列。

参考文献:

[1] 颜志翰,李雅玫.精通Director MX 2004多媒体开发[M].北京:清华大学出版社,2005.

[2] 彭澎,饶简元.Director交互艺术设计教程[M].北京:清华大学出版社,2007.

[3] 郭继展,郭勇,苏辉著.程序算法与技朽精选[M].北京:机械工业出版社,2008.

[4] 杨峰.C语言完全手册:基本概念、函数参考、编程实例与试题集锦[M].北京:科学出版社,2008.

[5] 李志凌,焦丽萍.基于lingo实现多媒体中图文的滚动控制[J].电脑知识与技术,2012(20).