# 操控变形动画介绍
译注:Puppet Warp, 直译为“木偶变形”,作为一个专有名词经常被翻译为“操控变形”,这里主要沿用编辑器里的翻译,也就是后者。但是,骨骼动画、木偶动画、操控变形动画,这三者其实是类似的概念,因此后文在指代、描述动画的对象时,有时是“骨骼”、“骨架”,有时是“木偶”、“木偶模型”,有时是“操控变形”。
操控变形动画是为角色和某些对象创建复杂动画的高级方式。它是一个多步骤的过程,首先需要一个单独的图像图层,其中包含要制作动画的角色或对象的抠图。
准备工作
操控变形动画是相对复杂的功能,你也可以仅使用图像效果来创建角色动画,例如摇动效果,这个过程要简单得多。
在开始使用操控变形动画之前,你应该对时间轴动画有一个基本的了解,创建操控变形动画是基于对它应用。
在本教程中,我们将使用武士角色创建一个简单的操控变形动画,该武士角色已通过Photoshop从现有背景图像中抠出来,并且通过修图隐藏了原始图像上的角色。如果你不会抠图、修图、补图,那操控变形动画可能不适合你,你应该使用图像效果来完成角色动画。
# 操控变形动画流程概述
所有操控变形动画都由多个步骤组成,可以在上面的预览视频中看到这些步骤。在本教程中,我们将详细讨论在 Wallpaper Engine 中执行的所有步骤:
- 创建并导入适合操控变形动画的角色抠图。
- 建立角色的几何形状。
- 创建角色的骨架。
- 通过改变角色的“权重”来调整角色的肢体。
- 为角色制作动画。
- 将角色放置在场景中。
# 1. 创建并导入角色抠图
操控变形动画需要干净的抠图,角色周围必须是透明的。我们使用 Adobe Photoshop 完成这一步,但你也可以使用 Paint.NET 和 GIMP 等免费软件获得类似的结果。我们首先从基础图像中抠出武士角色。然后在原始图像上将角色从图片中完全删除,以此清理基础图像,从而产生一个没有角色的基础图像。你会发现,我们不一定能完美清理图像,但由于我们会将武士放回原来的位置,因此在最终的壁纸中是几乎看不到瑕疵的,因为它会再次被同一个角色遮挡。当然,只要你想,你完全可以将角色放置在完全独立的背景上。
我们导入到Wallpaper Engine中的主要角色抠图是以下图像文件:
你可以保存该角色文件和没有角色的基础图像,并按照本教程进行操作。
# 2. 为角色创建几何图形
角色抠图准备好以后,将其导入到 Wallpaper Engine 项目中并选中它。在右侧向下滚动,找到 操控变形动画 部分,然后单击 编辑变形动画。Wallpaper Engine 将展示创建操控变形动画的必要步骤。第一步是创建角色的 几何图形。通过单击几何图形下方的 创建 按钮,Wallpaper Engine 将自动为你的图像创建网格。可以使用 细分 滑块增加网格上的细分数量。如果你要将操控变形动画与 摇动效果 或其他会扩展至网格之外的效果相结合,则还应该增加 填充,以便增加网格的轮廓。之后应用于骨骼上的任何图像效果都不会超出此处配置的网格范围。
在本教程中,我们将所有设置都保持现状,但你可以自己进行尝试,看看更改网格细分是否会提高特定对象上生成网格的精度。
# 高级几何图形设置
值得注意的是,几何图形设置提供了一些高级设置,可以让你微调操控变形的几何形状。通过单击 锁定几何图形以进行顶点编辑 按钮,你可以锁定自动生成的几何图形,并通过 编辑拓扑 功能重新排列几何网格对其进一步更改。
你可以按照你的喜好进行尝试,但一般来说,如果你对生成的网格感到满意,你可以跳过这一步。如果你想获得更加精确的网格,例如在创建混合形状动画时,这一步与其密切相关。
3D 透视挤压 部分的介绍暂时保留,你可以在操控变形动画教程的其他部分中找到。当几何图形被锁定时,你可以使用 编辑变形 菜单中的高级方法进行透视和拉伸。
# 3. 为角色创建骨骼和骨架
在确定了角色的几何形状后,我们需要告诉 Wallpaper Engine 编辑器,角色模型可移动 关节 的位置,这些关节在编辑器中称为 骨骼。单击操控变形动画中骨架部分的 创建 按钮以开始。
在这一步中,你可以定义多个骨骼以及一个或多个主要骨骼,这些骨骼稍后将作为动画的参考点。你可以通过单击角色上的特定点来创建骨骼,Wallpaper Engine 将在你选中的最后一个骨骼和当前骨骼之间绘制连接。先选中某个骨骼,然后点击任意位置创建新骨骼,这样会在这两点之间创建连接。骨骼的行为也可以通过高级设置进一步调整,但这些功能保留在更高级的教程中。
主要骨骼 是用来定义角色的重心或几乎不需要移动的点。通常将其设置在角色或脚的中心位置。通常每个角色或对象只需要一个主要骨骼,但如果你要处理的图像包含多个单独的对象或角色,则应为每个对象或角色创建一个主要骨骼。
# 在我们武士的例子中添加骨骼
对于我们的武士角色,我们在脚的最底部创建主要骨骼,因为我们希望脚在动画过程中不要动。然后,我们依次在腿的上方、胸部的中心位置创建骨骼。这个位置也是主要骨骼很好的候选点,但由于我们不打算对腿部进行任何动画处理,因此我们决定将脚作为主要骨骼。
从胸部区域的骨骼开始,我们向头部的位置创建骨骼,然后再选中胸部的骨骼,在右臂上创建骨骼。我们还想为披风制作动画,所以再次选中胸部区域的骨骼,然后在披风上创建三个骨骼。
你可以在以下视频中看到完整的过程:
# 4. 通过改变角色的“权重”来定义角色的肢体
下一步是定义我们角色的单个肢体/“区域”。设置好骨骼后,你可以单击操控变形界面 权重 部分中的 编辑 按钮。Wallpaper Engine 将尝试区分角色的不同肢体和区域,每个肢体和区域都由一种单独的颜色表示,该颜色与在上一步中创建的特定骨骼相关。“权重”定义了每块骨骼对角色每个点的影响程度。
Wallpaper Engine 会自动为骨骼生成权重区域,你可以单击骨骼选择颜色,然后单击 绘制权重 按钮对有问题的区域进行绘制。例如,在我们的例子中,Wallpaper Engine 为武士的整个帽子分配了不同的颜色,但我们希望帽子作为一个整体一起移动。我们选中帽子区域的骨骼,然后为整个帽子绘制同一个颜色。你可以看到我们在几何图形那一步中添加的切片是如何让帽子与身体的其余部分进行切分的。
我们还稍微绘制了一下下面的区域,确保剑和手属于同一个骨骼,而剩余部分已经能够满足我们的需求。
一定要测试并确保所有东西都涂上了正确的颜色,尤其是在具有空洞的位置附近,很容易因为绘制过度而出现问题,从而导致某些区域在不应该移动的时候发生移动。你可以随时选择一个骨骼并旋转它来预览动画动起来的样子。在绘制权重时,你所做的所有移动操作都只会是预览,你可以随时使用 重置姿势 按钮重置它们的位置。
你可以在以下视频中看到此过程,包括转动帽子:
# 5. 使用完成的骨骼创建动画
操控变形动画流程的最后一步是实际创建动画。它是在我们创建的单个骨骼上使用时间轴动画完成的。首先,单击操控变形界面 动画 部分中的 创建 按钮,然后单击动画列表中的 添加 按钮。我们可以为同一个对象创建多个动画,因此动画将以列表的形式保存。
与 时间轴动画 类似,系统会要求你选择动画模式、秒和帧数。这里我们使用 循环 动画,本例中,重要的是所有骨骼动画的的结束位置应该和开始位置相同,以确保动画不会出现突然的跳跃。在某些情况下,镜像 动画是个更简便的选择,该动画会首先向前播放,然后反向播放,在呼吸等简单动画的情况下二者区别可能不明显。单张 动画可以用作介绍动画,也可以与更复杂的 SceneScript 逻辑结合使用。
对于我们这个动画,我们将长度设置为 5 秒,但这长度是高度主观的,你可能更喜欢创建更长或更短的动画。
# 创建和设置动画
由于我们采用的是 循环 模式动画,因此我们将在每个骨骼的第一帧和最后一帧创建一个关键帧,确保动画始终从结束的地方开始,防止突然跳转到第一帧。
如果你的动画不是使用 循环 模式,可以跳过这一步。你可以为每个动画的最后一帧加载存储的默认姿势以快速执行此操作。将时间轴滑块移动到最后一帧,然后只需单击右侧 姿势 部分中的 加载 按钮即可。起初看起来没有发生任何事,但是只要你选中任何骨骼,你就会看到第一帧和最后一帧的关键帧。使用 加载 按钮只是实现此目的的一种快速方法,你也可以单独遍历每个骨骼,然后点击最后一帧的 切换关键帧 以达到相同的结果。
你可以在以下视频中看到此设置过程:
# 给骨骼创建动画
现在是时候为我们想要在动画中移动的所有骨骼制作动画了。我们将从主要骨骼开始,一直到角色外侧的骨骼。对于操控变形动画,在大多数情况下,你只需要对骨骼的角度进行动画处理,而不是进行缩放或移动。记住,这一点非常重要,因为移动或缩放骨骼会导致对象扭曲,因此绝大多数基于操控变形的动画仅依赖于对角度进行动画处理。
在我们的示例中,我们不会对主要骨骼进行动画处理,而是从大腿的骨骼开始。通过引入两个关键帧,在时间轴中间略微倾斜移动,我们设置动画让角色前倾。然后,向上移动到头部,稍微向后旋转帽子的角度创造一个点头的动作。然后,我们将右臂上的骨骼动画与帽子的运动对齐,使其看起来好像右臂移动了帽子。最后,我们将披风的所有骨骼随着角色的整体倾斜向后上方移动。
当我们完成动画的初步设置,我们就可以保存它,然后返回初始图像层并应用动画,然后在完整场景中预览它。你可以随时通过返回操控变形动画界面,编辑现有动画来进一步调整它。你可能需要一些时间来适应整个动画的制作过程,制作正确的动画总是伴随着多次迭代和反复试验。
你可以在以下视频中查看本节中描述的步骤,然后继续:
本节总结了操控变形动画的基础知识。本指南中描述的方法已经足以用于创建复杂的动画,你甚至可以将其与 Wallpaper Engine 提供的效果相结合。接下来你可以浏览有关操控变形的其他教程,了解操控变形动画的高级功能,但你应该首先熟悉本教程中介绍的基础知识,然后再继续。