沈一帆
摘 要 目前在动画制作中,存在有交互动画制作方法繁琐、相关软件和插件的局限、对从业人员制作能力要求高等问题。为此提出一种基于TCP通讯协议实现Processing控制Maya制作交互动画的技术。该技术结合Processing简单易学又功能强大的优势,利用TCP通讯方法和MEL语言控制Maya的方法,可有效得提高交互动画制作效率,拓宽交互动画制作思路,推动交互动画制作技术的发展。实验结果表明,该技术实际应用切实可行,在数字媒体行业中可得到广泛的应用。
【关键词】Processing Maya 交互动画 MEL语言
1 引言
随着计算机技术的迅猛发展,数字化交互的展现形式应运而生。其中交互动画因其带给人们极其丰富的视觉体验和交互体验,其制作的需求越来越大。其制作内容也变化多端,特别是随着AR/VR/MR的兴起,动画和虚拟现实场景的结合成为一种趋势,观众更喜欢互动的观影方式,这带来了动画制作技术上的一次全新的革命。对于交互动画而言,市场需求越来越大,对其质量要求也越来越高。然而相关软件和插件没有很好得针对目前的交互动画需求做更新、完善,制作方法繁琐并且调控不精准、效果不理想。其次,对制作人员也提出很大的要求。一般交互动画制作需要程序的介入,而且需要美术、设计等知识。就以Maya动画而言,会使用Maya软件的美工工作者不容易掌握计算机编程知识,而懂得编程的人员又不容易结合艺术、美工等方面的知识。所以制作交互动画对于从业者而言难度较大。
依照市场需求,既要做出交互效果,又要画面精美,细节丰富的交互动画,可借助三维动画软件。目前三维动画软件中最具代表的是Maya。Maya是AUTODESK公司推出的全球顶级三维动画软件,它集模型、动画、渲染、动力学、特效等创作工具于一体。同时Maya拥有全套开发动画的工具,界面友好,操作容易,使得制作动画更加全面、快捷,风格更加多样。但是Maya制作交互动画缺少相关模块支持,插件同样有相当大的局限性,不易制作。
Processing是一款适用于图形与动画设计的开源编程语言和开放平台。它的语言极其简洁高效,可方便得了解学习并创作互动艺术。其开源性使学习使用非常便捷快速,且相关社区相当完善,相关开发的第三方库(library)也非常丰富。总之,用户不用掌握很深奥的编程知识也可得到富有创意的图形艺术或是搭建互动平台。但是Processing做编辑动画或是渲染出精美的图形图像的工作则是一件非常困难的事情。
因此,研究一种新的高效制作交互动画的技术就成为一个重要的研究方向。本文提出一种基于TCP通讯协议实现Processing控制Maya制作交互动画的技术并对其基本实现原理和实现技术做了阐述。最后用该技术做了两个动画实例并做了简单分析。
2 基本原理
Maya传统的动画制作流程是借助Maya自带的动画工具或模块,还有强大的脚本工具MEL。MEL语言是Maya内嵌的脚本语言,可直接调用Maya的命令,控制其工作流程。几乎所有的控制动画的命令、工作流程都可以调用相应的MEL语句实现。如在场景中生成一个立方体cube,可在脚本编辑器(Script Editor)中调用polyCube命令便得到结果。又如修改立方体的旋转值,调用rotate命令即可实现。在MEL控制系统中,可以接收外部程序发送的数据作为MEL语句的执行语句。通过这个特性,可将Maya的操作转化为外部软件的操作,即外部程序利用TCP通讯发送Maya的MEL 指令信息给Maya软件端,待Maya接收后,执行对应的MEL语句,即可实现外部程序控制Maya操作的效果。
Processing能够快速创建充满创意的图形图案或是互动艺术,如音频可视化、分形图形、互动影像等。为了能够把Processing程序中的数据与Maya共享,使用官方的net库创建通讯桥梁,借此发送数据。这样,就把Processing处理好的动画数据发送给Maya,通过MEL语句的执行,生成互动模型或场景、动画。技术原理如图1所示。
这样一来既解决了Maya软件对于制作与声音、影像等信息互相作用的交互动画的不便捷性,又弥补了Processing对于画面表现和动画控制上的不足,让制作交互动画更方便快捷且效果出色。
3 Processing控制Maya制作交互动画实现技术
3.1 Maya场景搭建
制作动画首要的工作依然是Maya的场景搭建。首先需建立场景,创建模型,赋予材质,建立灯光摄像机等,依据动画剧本和相关设计方案整理场景中的资源。接着是做好通讯模型的准备。考虑到Processing间接控制动画,因此,需要准备好相关模型或对象的属性,如模型的命名等,这样才能确保通讯顺利,控制参数无误。
3.2 通讯的准备
为了能够实现数据通讯,必须建立好Maya和Processing两个应用程序的通讯端口。对于Maya,通过使用MEL语言可方便地打开通讯端口,即 “commandport” 命令。此命令允许Maya应用程序从其他进程接收MEL命令行并执行,可实现其他进程间接控制Maya操作。例如,执行MEL语句 commandPort -n "localhost:12000",打開Maya进程的一个TCP端口,端口号为12000,等待接收其他进程发送的信息。对于Processing,使用官方的net库来建立TCP通讯。在Processing官方IDE中输入:
import processing.net.*;
Client client;
client = new Client(this, "127.0.0.1", 12000);
本机的12000端口便是Processing准备输出数据用的远程端口号,即Maya程序待接收的端口号。这个端口号理论上除系统预留的端口号外都可以设置。值得注意的是,因TCP协议的面向连接性,故需在通讯前服务器和客户端都必须建立好通讯端口。
3.3 创建Processing程序
Processing社区提供大量的库,极大地方便了应用开发,比如使用sound库或video库可以轻松创建视音频互动交互的作品。在程序逻辑中,必定会有定义图形效果的数据,可以利用这些数据作为Maya动画的根据,定义Maya相关对象的属性值,便可得到和processing中一致的互动效果。如将一采集的数据实时写入Maya的相应MEL语句中。这些语句分别对某对象的缩放值、关键帧动画进行控制。部分程序如下:
//将Maya MEL语句通过TCP协议传递给Maya
client.write("scale -a -os "+"1"+""+rr+""+"1"+" \"group1\";\n");
client.write("setKeyframe -breakdown 0 |group1.scale;\n");
client.write("currentTime "+ i +" ;\n");
i++;
其中,scale命令控制模型的缩放值,setKeyframe命令用来设置关键帧,currentTime命令控制当前所在的帧数。再通过client.write()函数发送相应的MEL语句。
其次,运行processing程序需依赖预制的运行机制,即定义setup函数和draw函数。setup() 函数定义应用程序的基本参数,如窗口大小、帧速率、背景颜色等,该函数只在运行期间调用一次并且先于draw()函数调用。假定动画制作采用24帧每秒的帧速率,所以需在这里定义帧速率24fps。draw()函数定义运行期间的主要逻辑,在运行期间反复执行。因此,采集数据和发送MEL语句的逻辑需写在draw()函数中。
3.4 动画的生成
执行Processing程序,Maya自动接收MEL指令,并依次执行,可得到预先设计好的控制效果。建立好初步的关键帧动画之后,应检查动画是否存在问题,因为通讯过程中难免会出现不同步或是其他通讯问题导致执行MEL语句出现延迟,语句执行错误。也可在此基础上进行加工修改动画。修改完毕,通过Maya批渲染(Batch Render)命令渲染序列图。等待渲染完毕,导入后期合成软件,如After Effects,设置动画序列帧速率24fps,进一步修改加工后,即可得到最终的动画效果。
4 实验
依照该技术实现两例动画效果,一是弹簧模型随声音音量大小而伸缩的互动动画,二是通过动态影像生成三维模型和动画。
4.1 声音交互动画
首先在Maya场景中创建好弹簧模型,注意模型名称。其次分别准备Maya的TCP端口和Processing 程序端口。编写Processing检测声音音量的程序,将采集到的音量信息进行简单处理,然后使用client.write()方法将数据整合进MEL脚本中,輸出给Maya端。为了能够更高效得调试程序,加入简单的绘画模块来反映声音的数据信息,如在应用程序窗口中绘画一个圆,圆的缩放大小和音量大小有联动反映。最后执行Processing程序,会得到如图2和图3所示的画面。
动画生成后进行批渲染,得到序列图。再导入后期合成软件After Effects,将音频素材拖入合成中,预览合成,可见视音频同步,弹簧跟随声音大小的变化而伸缩,节奏完全吻合,效果理想。如图4所示。
4.2 影像交互动画
设想在一方块矩阵上创建基于影像的动画。利用Processing程序创建好80*60*1的方块矩阵,以矩阵坐标为基础,设置好每一方块对应的名字。然后读取影像每一帧的数据,依次拾取每一像素点的亮度值,并计算出相对应的方块凸起的参数值。之后按照对应方块名字把数据传给Maya,定义Maya中每个方块具体的位置参数,并打上关键帧。这样一来,便可用影像控制方块矩阵的动画。如图5所示的影像和图6所示的对应三维场景预览效果。
5 结束语
计算机技术日新月异,很多软件平台或程序语言逐渐成熟,影响力愈加扩大,然而不可能解决项目中的所有问题,三维软件和编程框架同样如此。Maya三维软件可以借助蓬勃发展的编程语言Processing创造有趣生动的互动动画效果以满足如今追求互动式体验为主的动画市场需要。Processing控制Maya制作交互动画的技术原理易于理解、掌握,借助Processing以及众多库的使用可方便得制作互动类的动画效果。在此基础上采用TCP通讯的方法间接调用Maya中的MEL语句,为Maya场景制作模型、动画、特效等几乎任何类型的对象,很大程度上提高了制作的速度和质量。该技术也降低了制作交互动画的门槛,使不懂编程技术的美工人员可以快速搭建交互动画,使传统动画制作技术人员、编程者能方便地建立交互动画。该技术经过实验和最终效果的呈现表明其应用切实可行,是一种高效又易学的交互动画制作技术,具有较高的使用价值。同时其他相关软件都可参考此技术原理来改进制作方法。
参考文献
[1]余的的,张毣.三维动画软件的应用发展及其技术走势[J].电子技术与软件工程,2017(13):65-67.
[2]翟浩澎.Maya三维动画制作技术[J].艺术研究,2017(03):42-43.
[3]王圣蔚.三维动画制作Maya技术研究[J].软件导刊,2010(02):157-158.
[4]李柳君.Processing计算机语言及其程序设计思维在创意设计中的应用[J].湖南包装,2017(03):59-63.
[5]于海雯.Maya编程技术[J].电脑知识与技术,2013(36).
[6]张宝荣,吕新欣等编著.Maya总动员-动画编程篇[M].清华大学出版社,2011.
作者单位
吉林艺术学院 吉林省长春市 130000