程序性动画 1 ——程序性动画介绍

http://www.manew.com/thread-104164-1-1.html

我们今天讨论的是关于电子游戏逆向运动学的新系列介绍。在开始介绍之前,这个帖子将会展示一些使用了程序性动画的游戏,以及它们与传统资源库动画的不同。

在帖子的底端你都可以找到一个链接来下载所有必要的资源和场景来再现这些教程。

介绍 #

在大多数游戏中,角色动画是“静止的”。每次角色在屏幕上移动,都是被艺术家创造的一种特制运动。无论它是通过手工精细调制的,还是通过动作捕捉系统来记录的,这种动画都是预定义资源。当一个角色需要执行不同动作时,就需要不同的动画片段。在游戏工厂中,这种逼近角色动作的行为颇有水准。广而综合的动画集合通常是可获得的,并且它们能够覆盖大多数的普通行为,像是行走,跳跃和射击。尽管有同样有效的替代选择,传统动画在游戏工厂中仍占有主要位置。如果你敢进一步地冒险,就让我向你介绍程序性动画的概念。

基本理念是一个角色行为的时间可以程序性的生成。生成程序性的动画最通常的技巧之一就是依赖物理模拟。这个通常取名为基于物理的动画。一个典型例子是水。你可以手动制作,或是依赖于一个重视流体动力学的模拟器。

帖子剩余部分我们将讨论基于物理动画的一个非常特殊的子集,就是被依赖的刚体模拟器。这和像是 Unity 和 Unreal 这种游戏引擎通常使用的那类模拟一样。让我们来看看这是一个怎样的在游戏中用于创建基于物理动画的基础特性。

布娃娃系统 #

基于物理的动画最核心的是可以模拟角色的动作。通过复制控制人类肢体的进程和限制,使这些行为接近真实成为了可能。最简单的一个,使用布娃娃系统是制作程序性动画的有效途径。布娃娃系统的理念是创造一个人形身体,连接在每一个带有 joint(关节)的分支上,以复制真实对应展示的自由度。仅仅是通过依靠刚体物理和 Joint(关节)约束,就有可能模拟人体坠落。这不仅是在为“死亡动画”节省预算。它允许角色拥有真实的坠落感并且和周围的环境互相影响。这样的任务是不可能用预定义动画复制的,无论它有多精确。

布娃娃系统最大的缺点是它们的高度不可预知性,经常会导致意外地滑稽行为。

程序性动画 1 ——程序性动画介绍_第1张图片

现下,布娃娃系统在游戏中已经有了相当高的水准。Unity 和一个简单的允许人形模型快速转变为布娃娃的布娃娃向导工具联系在一起。

刚体模拟 #

布娃娃系统的主要问题是缺乏任意运动控制。带关节的肢体连接致使模型行走或跳跃。然而只有坠落,在有些情况下,可以使用混合方法。

在 “Grow Home 怎样使用数学形成个性”的文章中,游戏记者 Alex Wiltshire 和育碧讨论了它们的游戏 Grow Home。游戏的主要特征之一就是主要人物、方块更新感应器移动的方式。游戏中没有预定义动画,至少不在传统场景中。当玩家移动,腿和脚的位置是由脚本强制控制的。四肢受到和布娃娃系统同样的约束,迫使他们用一种貌似真实的方式完成动画。

类似的方法已经在 Rain World 中被广泛使用了。游戏中每个动物都有一个由数个 Collider 制成的身体。当它们中的一些通过代码被移动时,其余的通过关节控制器控制。这能在下面的动画中看到。秃鹰翅膀的末端以编程方式被移动,其余的骨骼用 hinge joints 连在一起。控制终点会自动产生一种本来不可能获得的流体动画。

Grow Home 和 Rain World 都使用程序性动画来增加它们人物角色的真实度。然而,控制器并不依赖于此。 Gang Beasts 是将这种观念进行更深一层扩展的游戏。游戏充分围绕以采用布娃娃物理系统的形式出现的软驱行为,创造了移动方式不可预测的看起来蠢蠢的角色们。

逆向运动学 #

刚体模拟允许简单的动画。我们指定 BUD 的手和脚应该在哪,然后让物理引擎去做剩下的事情。这种简单的方法适用于简单的角色,但是在现实的行为上不起作用。刚体模拟仅仅考虑像是重力和质量这类的事情,缺乏上下关系的认识。在许多应用程序中,你可能想要一些没有表现出仅被重力和关节强加约束的东西。

创造程序性动画的最后一步被称为逆向运动学。拿出一个任意种类的布娃娃,逆向运动学会找出怎样移动它去接触到目标的方式。当 Grow Home 和 Rain World 让物理系统决定受到重力,关节该怎样移动时,逆向运动学强制它们进入想要的姿势。

第一个严重依赖于这个观念的独立游戏是 Future Proof Games 制作的 The Majesty Of Color。在这里,玩家控制一种海洋生物的触须。和 Rain World 里的秃鹰翅膀相比,这个触须并不仅是被 hinge joints 控制的。每段都用这样的方式转动,触须的末端就能接触到想要的点。如果这个动画依靠纯刚体模拟,触须就会像一条带子一样被“固定”在目标上。

程序性动画 1 ——程序性动画介绍_第2张图片

逆向运动学能被用于多种工作,最常见的一种就是取代自定义动画而允许人形角色以自然方式接触到某些物体,而开发者只需要指定手需要到达的目标位置。逆向运动学会把剩下的事情做了,找到最自然的方式移动手臂关节。仅依靠物理模拟会导致“死腿”出现,就像他们被拖着一样。

程序性动画 1 ——程序性动画介绍_第3张图片

剩下的教程专注于怎样解决逆向运动学的问题。无论你是否有想要真实朝向目标移动的机器手臂或怪兽的触须,这都是你所期待的教程。

你可以在这里下载到这次教程的 Unity 工程文件:https://www.patreon.com/posts/8928832
机械手臂的模型在这里下:https://3dwarehouse.sketchup.com/model/92e064854f4dd504c8ab9067fbd9681d/Robotic-Arm-stainless-steel-R6Stainless
触手的模型在这里下:https://sketchfab.com/models/8fcc783af94246a0b8febf424a4b96b9#

原文作者:Alan Zucconi
原文链接:http://www.alanzucconi.com/2017/04/17/procedural-animations/

End.

你可能感兴趣的:(Unity,-----)