快速业务通道

Java:在二维动画中使用基于图像的路径 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

Java:在二维动画中使用基于图像的路径

时间:2011-08-31 IBM

在二维(2D)动画中,通常需要按预定义的模式(有时称为 控制路径)在一个 2D 区域内移动对象。这种动画需要解决两个问题:

如何指定对象要遵循的控制路径。

如何沿着所选的路径移动对象。

在本文中我们将为您展示如何用无损图像、Swing 技术和基于 Java 的动画引 擎解决这些问题。我们将首先绘制所需要的动画对象轨道,然后用动画引擎驱动 对象沿着定义的控制路径运动。

可以容易创建和处理无损图像(在 下面说明),而且可以根据需要对使用它 们的技术进行细致的调节。我们将利用一个示例动画序列,介绍如何用不同的颜 色集创建复杂的运动序列。我们还将介绍如何处理图像以提取出所需要的控制路 径、将控制路径与背景图像分层、为动画序列创建对象(Swing GUI 组件),并 驱动这些对象沿着定义的控制路径运动以完成动画过程。

注:本文假定读者有 Java 一般编程、特别是 Swing GUI 构造的知识。如果 有在 Java 平台中利用 Java 2D 操纵图像的经验则更好。

什么是无损?

无损图像(lossless image)是永久保留了所有图像像素的图像。这种图像必 须能够存储为或者恢复成与原件完全一样的复制品。

可以使用不同的应用程序创始无损图像,包括 Microsoft Paint、Jasc Paint Shop Pro 和一些定制的应用程序。可以将这些图像存储到文件中,也可以只在内 存创建它们。图像必须是无压缩的,或者是使用无损压缩算法如 zip 压缩进行压 缩的。典型的无损图像格式包括 Microsoft 的 Bitmap (BMP) 和 Portable Network Graphics (PNG) 格式。有损压缩算法,比如通常用于 GIF(Graphics Interchange Format)和 JPEG(Joint Photographic Experts Group) 文件的压 缩算法,不适用于本文所描述的动画技术。

完全是控制问题

控制路径 的最一般化的定义是通过任意 n 维空间时,在特定位置和时间所要 采取的行为。我们将控制路径定义为一个或者多个对象穿过一个 2D 空间时所采 取的路径。通过将对象的位置映射到该位置的行为来表示控制路径。然后程序遍 历所定义的对象、在映射中查找对象在该位置上的行为、并让对象执行所指定的 行动。对所有控制路径—— 除去最简单的—— 在代码中建立这样一个映射都是 耗费时间和容易出错的,因此使用一个绘图程序更合适。

控制路径可以是 不随时间变化的(time invariant),在这种情况下是静态 的,也可以是 随时间变化的(time variable),在这种情况下是动态的。如果 无损图像包含在一个图像文件中,那么它就是不随时间变化的,或者说是静态的 。如果无损图像是包含在 RAM 中并直接使用的,那么它就是随时间变化的,或者 说是动态的。在本文中我们讨论的是静态控制路径。使用正确的编辑程序,可以 更容易地生成静态图像,尽管所定义的行为类型也会在某种程度上影响这个过程 。

让我们度过一个狂热的夜晚!

学习动画的一个好方法是自己动手实践。我们将在本文其余部分使用一个动画 的例子来阐明所讨论的概念。我们的例子是一个动画的火灾逃生序列,我们将生 成控制路径以表示几个人物的逃生路径。我们将使用图 1 中的部分平面图作为背 景图像。可以在 图 6中看到完整的背景图像。

图 1. 背景图像的一部分

Java:在二维动画中使用基于图像的路径 - 编程入门网

Java:在二维动画中使用基于图像的路径(2)

时间:2011-08-31 IBM

我们可以用一个数值数组生成控制映射。用一个图像代替数组(如图 2 所示 )使我们可以用颜色值来表示每一个位置的行为。每一种颜色值的大小(颜色位 数)取决于图像格式。图 2 展示了火灾逃生序列的控制路径。

图 2. 部分控制路径

Java:在二维动画中使用基于图像的路径 - 编程入门网

为了看到控制路径图像与动画背景的对应关系,我们可以将控制图像覆盖到背 景图像上,如图

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号