Pocket AniEd - 基于 Pocket PC 的动画编辑器






3.47/5 (17投票s)
Pocket AniEd 允许任何人快速轻松地制作精美流畅的动画,无需具备计算机动画背景或任何不必要的复杂性。
引言
Pocket AniEd 允许任何人快速轻松地制作精美流畅的动画,无需具备计算机动画背景或任何不必要的复杂性。请参阅 官方 Pocket AniEd 网站 的 ‘入门动画’ 部分,了解创建自己的动画有多么容易。您甚至可以将动画导出为 SVG(有点像 Flash),可以在网上发布或包含在 Word、PowerPoint 或许多其他文档类型中。Pocket AniEd 是使用 Microsoft Visual Studio .Net 2003 和 .NET Compact Framework 编写的 C# 代码。它基于我之前的基于 Tablet PC 的动画编辑器 Ink AniEd,但大部分代码都进行了重写,以更好地适应 Pocket PC 环境。
这也是一个关于笔输入计算的实验,并希望体现这种界面的强大功能,而不是更常见的鼠标导向系统。Pocket PC 开发的一个基本原则是,在绘画方面,创建新的笔触比修改旧的笔触更快;这正是 Pocket AniEd 的核心。大多数现代动画系统都要求您创建一个静态对象,然后通过旋转、缩放和其他变换来制作动画,而 AniEd 只是要求您在不同时间重新创建新对象,然后在形状之间进行插值。希望这能带来更直观的用户界面,并使快速动画原型制作所需的时间与单帧图表绘制所需的时间相近甚至更短。考虑一位老师在课堂上讲课,大多数好老师都会画图来解释他们画图时正在发生的过程。使用 AniEd,绘画过程与动画制作过程相同,因此老师在讲课时不会损失时间,最后,学生不仅可以看到正在创建的过程,还可以看到它在动画化!
使用代码
Pocket AniEd 代码包含各种小功能和工具,但可能最有用的功能与使用 `Point[]` 作为路径有关。例如,重新采样路径,使每个点之间的距离大致相等(这几乎不会损失质量,也意味着您可以非常轻松地在路径之间进行插值)。此外,还有命中检测、插值、重采样到不同大小等功能。请查看 AniEd.cs 中的 `InkInterp` 类以了解更多信息。
关注点
Pocket AniEd 基于我之前的笔输入动画系统 Ink AniEd。然而,Ink AniEd 是专门为 Tablet PC 设计的,使用了其所有炫酷的基于墨迹的功能,并且可以无缝集成到任何基于墨迹的动画中,而不会对应用程序代码产生任何明显的变化(除了它现在可以动画化!)。当需要编写 Pocket PC 版本时,大部分代码必须更改,使其不再使用 Tablet PC SDK(它深深植根于 Ink AniEd),使其不要求任何 .NET Compact Framework 中不可用的功能,以消除对过多浮点运算的依赖,进行一般性能优化,但主要是重新设计交互模型以更好地适应 Pocket PC。本节将介绍我从 Ink AniEd 移植代码库的初步工作,然后介绍我如何将其集成到一个真正的 Pocket PC 应用程序中。
首先,我想说的是,在 .NET 和 .NET Compact 之间移植 C# 代码非常简单;唯一的重大区别是没有 Tablet SDK 和缺少完整的 GDI+ 命令,特别是宽度大于 1 的画笔本应该会非常好用,以及绘制 `Point[]` 折线而不是多边形的能力。主要需要带走的是,您将正常的 C# 代码放入 Compact Framework 中,做一些微小的调整,就完成了!我相信现在我将把我的大部分 .NET 应用程序移植到 Compact Framework,因为这仅仅是拖放控件并重新排列它们的问题,您就已经将代码“交到客户手中”了。
第一个主要困难是删除对 Ink API 的引用,这并不好,因为这意味着我相当长一段时间都无法编译,并且意味着我基本上重写了大部分代码。但这一切基本上都是繁重的工作,没有什么太复杂(将墨迹事件替换为鼠标事件、自定义绘制和命中检测代码等)。说真的,Ink API 非常好用,它的渲染机制速度快得惊人,并且能产生高质量的绘图。我强烈建议您尝试一下。完成之后,我得到了一个可用的(尽管是残缺的)应用程序来处理,而且说实话,处理一个正在运行的项目比处理一个您甚至从未见过实际运行情况的项目要容易得多。我认为这是移植到 Compact Framework 的一个主要亮点,即使您的代码不能完全正常工作,或者最初运行速度非常慢,但它确实运行了,这比我之前移植到的许多平台都要好得多(考虑从软件渲染到硬件渲染的移植,以及在屏幕上实际看到任何东西之前需要多长时间)。
下一个问题是浮点运算,这是在开发应用程序时需要牢记的一个问题,并且要考虑到移植到 PPC 的概念。PPC 上的浮点数学与整数数学相比非常慢(与普通 CPU 上的浮点与整数数学相比要慢得多),因此在性能很重要的情况下应尽可能避免。虽然我没有完全从系统中移除浮点运算,但它仅保留在较高级的体系结构中,因此使用频率非常低,并且我对最终体系结构的测试似乎表明,没有瓶颈与浮点运算有关。然而,这并不是什么真正需要担心的问题,因为当您深入研究时,定点数学会非常强大且易于使用。如果您不知道定点数学,基本上,它是一种使用整数和整数数学来表示带小数的数字的方法。在 Google 上查找它。我还更改了许多其他小的性能问题以减少 GC 时间等,但它们不具有普遍意义。
我想提出的一点是关于使用 DllImport 调用 `QueryPerformanceCounter`。这是一种有效的技术,也适合那些习惯在 Win32 中使用它的人。然而,这里有一个主要的缺点,因为它意味着您的 .NET 二进制文件只能在 Pocket PC 上运行,而不能在普通桌面上运行(实际上,您的应用程序在调用该方法时崩溃,而不是在加载时)。正是出于这个原因,我切换到了 `Environment.TickCount` 来进行计时。据我所知,动画质量没有明显差异,并且能够在普通桌面上运行是一个主要的优点,绝对值得。
用户界面设计当然是开发中最重要的部分,考虑到该应用程序在多大程度上依赖于与用户的交互,以及 Pocket PC 与更传统的计算机系统有多么不同。我首先注意到的一个有趣问题是缺少右键单击按钮,Tablet PC 甚至在笔的侧面有一个按钮,通常用于执行右键单击操作和围绕多个对象的“选择笔触”。因此,我最终删除了压力感应动画等功能,并添加了通过单击即可选择多个笔触,而不是使用按键组合或复杂的“套索选择”等功能。总而言之,如果您尝试尽可能以“全新”的视角来对待 Pocket PC,那么您可能会发现开发工作会容易得多。
总而言之,Pocket AniEd 经历了一个有趣的开发过程,我相信它创造了一个功能全面的工具,希望能够帮助改进 Pocket PC 的交互性,并为我们在日常生活中看到的静态且无趣的图表注入一些动画生命。
SVG
Pocket AniEd 最酷的功能之一是能够将动画导出为 SVG 文件。SVG 有点像 Flash,但它是一种基于 XML 的 W3C 标准。这意味着它更容易编辑、移动和集成到现有系统中。Pocket AniEd 导出的文件既可以单独作为动画查看,也可以用于更大的演示文稿或网页设计。由于 SVG 是基于 XML 的,您可以使用任何文本编辑器(如记事本)对其进行编辑,并根据您的口味或需求自定义其外观。请查看 Pocket AniEd 网站上的一些示例。