图书前言

前    言

总述

针对定义和生成图形对象,即计算机动画,本书主要讲述对应的计算机算法以及程序设计技术,且集中讲解三维(3D)领域中的计算机动画内容。因此,本书适用于计算机科学与技术方向的高年级本科生以及研究生。而对于那些期望学习计算机动画程序设计的程序员、使用软件工具生成计算机动画(并尝试理解动画制作软件中的底层计算问题)的制作人员,本书也将大有裨益。

本书的出版应是意料之中的事情—近年来,计算机动画获得了长足的发展,且广泛地出现于科研领域、学术领域,并带来了一定的就业机会,甚至一些人还将其视为一项终生爱好。

目前,影片大多采用数字方式存储,并引入了数字特效(通常称作计算机图像合成,简称为CGI)。来自互联网电影数据库(网址为www.imdb.com)2007年6月的一份资料显示,前10名的美国影片(数据源于北美电影票房排行榜)均广泛地采用了CGI技术。

不难发现,计算机动画影片已具有相当的票房号召力,根据不完全统计,每5部上榜电影中就有1部为计算机动画电影。2001—2006年,数字图像技术领域出现了27位“科技成就奖”与“科学和工程奖”获得者。每年,计算机动画还为游戏产业创造了不低于70亿美金的收益。当前,功能强大的动画软件、低廉的CPU价格以及高存储量的家庭数字视频录像设备均使得桌面级计算机动画成为可能。大多数教育部门(如计算机科学系)均开设了与计算机动画相关的课程(以及相关的艺术课程,进而培养数字艺术家熟练地使用现有的计算机动画软件)。在计算机动画算法方面,学术会议以及相关期刊也记录了业界的发展现况。

本书对于实际操作过程中的相关问题均有所描述,并提供了可行性技术以及相对直观的实现方案。除了某些研究方向之外,本书尽量避免纯理论方式的讨论。本书中的部分示例程序为完整的可执行代码,此类代码采用C语言编写,复制、编译以及运行之后,即可生成算法结果;其他程序设计示例则采用类C伪代码加以编写,并可在适当的时候转换为可执行工作代码。这里,采用C语言编写代码的主要原因是,该语言包含了其他语言(如C++语言和Java语言)的基础特性,并可彰显算法的逐步操作过程。本书附录包含了与此相关的基础内容,初学者可获取其中的有用内容以及实现过程中的特定算法。

本书并不打算详细介绍当今流行的动画软件包的使用方法(当然,也不排除针对某一类特定技术讨论软件的使用,这将有助于深入理解底层计算过程),也不会具体阐述计算机动画理论、计算机动画美学知识、动画设计过程中的美学问题、动画作品制作过程中的细节问题以及计算机辅助动画(此类问题是指传统手绘动画的计算机化操作,多数时候,该问题包含一套自身的规则集,参见结尾处参考文献1、2),而是主要讨论全三维计算机动画及其算法技术,动画制作人员和程序员可藉此以有趣的方式移动对象。尽管本书重点阐述3D技术,但2D技术依然十分重要。

计算机动画程序设计的基本目标是选择适当的技术和设计工具,以使动画设计人员表达丰富的细节,进而确定期望的内容;同时,相关技术和工具还应具备强大的功能,以使动画设计人员从枯燥的细节设定中解脱出来。然而,针对每一位动画设计人员、每一部动画作品,甚至是一部动画作品中的各个场景,通常不存在一类全功能的软件工具。这里,特定的动画工具往往取决于期望中的制作效果以及制作人员的控制过程。根据不同的模拟内容,动画艺术作品常需要使用不同的软件工具,因此,各类处理方案也层出不穷。

本书组织方式

第1章综合探讨了与计算机动画相关的问题,包括感知、手绘动画技术发展史、动画作品的测算方式以及计算机动画发展简史,相关内容提供了动画艺术与制作的广阔视角。

第2章讲述了必要的背景知识以及与动画相关的计算机图形学内容,并对计算机图形学中的计算问题进行了回顾,为后续学习打下坚实的基础,其中包括对渲染管线的回顾以及对转换顺序的讨论,以降低一系列计算所产生的舍入误差。另外,本章还讲解了基于方向表达的四元数形式。如果读者具有丰富的计算机图形学知识,则可跳过相关知识点,甚至整章内容。

第3章和第4章重点介绍插值技术。其中,第3章介绍与插值技术相关的基础知识,包括时间-空间曲线、曲线的弧长参数化操作以及曲线上的速度控制,随后还讨论了基于四元数的方向插值计算,且各类方案均与路径结合使用。第4章阐述了基于插值方案的动画技术,包括关键帧插值、动画语言以及形状插值。

第5章和第6章主要涉及关节型角色的动力学控制问题。其中,第5章讨论链接附肢的动力学方案,且同时涉及正向动力学和逆向动力学,并对正向动力学专门加以介绍。第6章讨论与运动捕捉(mocap)相关的基础内容,包括标记的处理方式以及运动捕捉结果数据的调校过程。

第7章和第8章讨论与动画相关的、真实世界的建模处理过程。其中,第7章探讨基于物理的动画、弹簧-阻尼系统、粒子系统、刚体动力学以及强制型约束条件。第8章介绍流体建模和动画技术,且分别论述了流体宏观特征处理模型以及计算流体动力学。

第9~11章讨论人类和其他动物的动画行为。其中,第9章主要介绍角色动画,包括建模操作、抵达行为、行走行为、布料以及头发。第10章则探讨面部动画,包括面部建模、表情以及口型动画。第11章讨论行为动画,包括群集行为、捕食者模型以及群体行为。

第12章阐述了某些特定模型,包括隐式表面、L系统以及表面细分操作。

附录A展示了与计算机动画相关的、图像生成过程中所涉及的渲染问题,如双缓冲机制、合成操作、运动模糊以及阴影效果。这里,假设读者已了解帧缓冲区、z缓冲显示算法以及抗锯齿操作等内容。

附录B讲述了原理型知识点,包括插值计算和逼近技术、向量代数和矩阵、四元数演示代码、物理学第一定律、数值技术以及电影、视频、图像格式属性。

本书网站提供了相关的图像、示例代码以及角色,其网址为textbooks.elsevier.com/ 9780125320009。

关于作者

Rick Parent现任俄亥俄州立大学(OSU)计算机科学与工程系教授一职。在学生时期,Rick就开始在俄亥俄州立大学的计算机图形学研发中心(CGRG)工作,并接受Charles Csuri的悉心指导。1977年,他获得计算机和信息科学(CIS)博士学位,主攻方向为人工智能。在随后的3年中,他以助理研究员的身份工作于CGRG,并逐步晋升为副主管。1980年,他与其他人共同创建了The Computer Animation Company并莅任主席一职。1985年,他再次加入俄亥俄州立大学的CIS系(现称为计算机科学与工程系)。Rick的研究兴趣涉及计算机动画的方方面面,但主攻方向为人物角色动画。目前,Rick的研究课题包括面部动画以及通过模型技术跟踪视频中的人物角色。

致谢

本书的出版得到了多方人士的鼎力支持。这里,首先要感谢我的妻子Arlene,她的奉献精神使得本书得以如期出版。作为本书的第一位读者,在她的帮助下,本书的可读性获得了极大的提升。

总的来说,感谢那些我有幸认识以及共事多年的学生们,他们对这个领域的共同兴趣、知识以及对这个领域的热情也使我受益匪浅,在此也向Doug Roble、John Chadwick、Dave Haumann、Dave Ebert、Matt Lewis、Karan Singh、teve May、James Hahn、Ferdi Scheepers、Dave Miller、Beth Hofer、Madhavi Muppala、Domin Lee、Kevin Rogers、Brent Watkins、Brad Winemiller、Meg Geroch、Lawson Wade、Arun Somasundaram、Scott King、Scott (Slim) Whitman表示感谢(如有遗漏敬请原谅)。

我还要感谢那些多年来为本书提供反馈意见(无论是好是坏)的读者,特别是科罗拉多州立大学的Philip Schlup博士、卡尔加里大学的Brian Wyvill博士,以及华沙大学的Przemyslaw Kiciak博士。

另外,这里还要感谢俄亥俄州立大学计算机科学与工程系(Xiaodong Zhang)、艺术与设计高级计算中心(Maria Palazzi)以及Morgan Kaufmann出版社的全体工作人员。

参考文献

1. All Time Grossing Movies. In: The Internet Movie Database (IMDB). IMDb.com, Inc 2012; http://www.imdb.com/boxoffice/alltimegross; 2012; Web. 26 March 2012.

2. Scientific and Technical Awards. In: Academy of Motion Picture Arts and Sciences. 2012; http://www.oscars.org/awards/scitech/index.html; 2012; Web. 26 March 2012.

3. Industry facts. In: The Entertainment Software Association (ESA). 2012; http://www.theesa. com/facts/index.asp; 2012; Web. 26 March 2012.

4. Catmull E. The Problems of Computer-Assisted Animation. In: 1978; 348-353. Computer Graphics. vol. 12(3). August Atlanta, Ga.;.

5. Levoy M. A Color Animation System Based on the Multiplane Technique. In: George J, ed. July 1977; 65-71. Computer Graphics. vol 11(2). San Jose, Calif.