将对象链接入层次的背后策略可以归纳为两个主要的原则:
层次从父对象到子对象遵循一个逻辑的过程。
父对象的移动要比其子对象少。
通过这两条原则,对于链接对象的方法几乎有着无限的灵活性。如果对使用层次进行了计划并记住链接的用途,那么在实际中很少会遇到问题。
从父对象到子对象的过程
从父对象到子对象的过程意味着链接没有从对象到对象间无规律的跳跃。如果两个对象彼此接触它们可能是作为父对象和子对象进行链接的。甚至可以将躯干的链接顺序设为:大腿->脚->胫骨->腰部。稍候再考虑这个链接策略。计算出用这种奇怪方式链接的对象变换的方法是很困难的。更符合逻辑的过程应该是脚->胫骨->大腿->腰部。
使用多个层次
不必从臀部到脚趾构建一条单独的骨骼链,可以从臀部到脚踝构建一条骨骼链,然后构建另一条从脚跟到脚趾的独立的骨骼链。然后就可以将这些骨骼链链接到一起组成一条完整的腿的集合。
因为腿和脚已经链接到一起,所以它们可以看作一条骨骼链。然而,将它们设置为动画的方式是对每条链分别处理,允许对部分进行完善的控制。
通过使用这种腿和脚的骨骼链的排列类型,当腿弯曲时却可以使脚保持站在地面上。此操作也允许独立控制脚在脚跟或脚趾轴上的旋转,这可以实现膝盖的弯曲。
父对象的移动少于子对象
因为变换的的方式是子对象从父对象继承的,所以对父对象的微小调整可能会导致需要对它的所有子对象进行调整。链接的典型方法是选择根对象一类的对象使它们移动得最少。与根对象相邻的对象应该移动得很少,而树叶对象应该移动得最多。
当链接机器人或机械装置之类的关节结构,或要使用反向运动学的层次时,这条原则尤其有用。
当把根对象作为控制柄时,此规则例外。根的所有子对象都跟随着父对象就像骑马一样。设想一个装满了对象的盘子在运输带上移动。所有的对象都应该是盘子的子对象,但是盘子比所有的对象移动得都要多。
选择层次的根对象
可以通过下面的问题来找到最好的层次候选根对象:
如果移动此对象,所有层次中其他的对象都要随之移动吗?
如果答案几乎一直这样,那么此对象可能就是所要找的根对象。这种对象的例子有躯干、灯座和树干。
如果答案不常是这样,那么可能选择的是子对象。这种对象的例子有手部、灯座和树叶。例如,如果移动角色的手部,其躯干将不移动。
一旦确定了一些根对象的候选,就可以更精确地检查它们。通过以下条件来为层次确定好的根对象:
移动根对象通常会对层次中的其他所有对象产生很大影响。
反之,根对象基本上不受层次中其他对象移动的影响。
根对象很少设置为动画,并且其移动和旋转主要是为了将层次放置于场景中的正确位置。
根对象位于层次的虚拟重心上或在它的附近。
最适合这些条件的对象就是根对象。然后可以创建层次,其中包含的所有其他对象都作为根对象的子对象。
链接反向运动学对象
反向运动学 (IK) 使用子对象作为动画的驱动力。IK 比较严谨并高度依赖于链接策略来执行计算。
在使用反向动力学链接层次时,需要考虑两个附加的原则。
链接和轴的位置模拟了真实世界中的连接位置。
选择结构重心或中心附近的一个对象作为层次的根对象。真实世界的重心是对象受到外力之后进行反作用的点。
1 和 2 都代表了角色的根对象。
两个结构都适合于正向运动学。
右边的结构最适合大多数反向运动学。
上面的图形显示了两种链接骨骼结构的方法。每种结构都适合处理正向运动学。然而右边的结构更适合于反向运动学。
根对象的位置在躯干的重心附近。
此链接顺序更接近于模拟的真实躯干的链接。
左边的结构将手臂和躯干链接到颈部。右边的结构将手臂和颈部链接到躯干,这是更真实的方法。
警告确保避免对要使用 IK 设置动画的层次中的对象使用非均匀缩放。这样,您就会看到拉伸和倾斜的过程。在子对象级别进行所有非均匀缩放也可避免此问题。如果有些对象显示了这种行为,那么要使用重置变换。
在动画之后链接对象
当把一个对象与另一个对象相链接时,子对象和其父对象之间的链接关系决定于位置、旋转度、父对象和子对象在链接创建时的比例。
想象一下将一个固定的球体链接到一个动画长方体上。
第 0 帧长方体位于球体的旁边。
第 50 帧长方体远离 20 个单位。
原始的动画中球体未链接并在长方体移动时保持固定不动。
将球体链接到长方体使球体与长方体一起移动。在球体与长方体之间的距离取决于构建链接的帧的位置。对不同的帧上的球体进行链接会有以下效果:
链接到第 0 帧,该球体在长方体移动时与之紧密相临。
链接到第 50 帧,该球体在长方体移动时与之保持相距 20 个单位远。
左侧:球体链接于第 0 帧,跟随长方体的移动并与之紧密相临。
右侧:球体链接于第 50 帧,跟随长方体的移动并与之相距 20 个单位。
在动画之后取消链接对象
当取消链接子对象时,它的第 0 帧会在移除链接的同时从其父对象在该帧的变换中移出。
想象一个链接到长方体的球体绕着钟面移动。该长方体在 12 点开始移动并绕着钟面行进超过 100 帧。图形显示一个长方体在沿着圆圈移动并有一个球体与之链接。
原始的动画中球体链接到设置动画的长方体并跟随之移动。
如果对球体取消链接会停止跟随长方体。球体的位置取决于它在链接移除的帧上的位置、旋转度或比例。在不同的帧上对球体取消链接会有以下效果:
在第 0 帧取消链接,该球体会在 12 点钟停止。
在第 25 帧取消链接,该球体会在 3 点钟停止。
在第 75 帧取消链接,该球体会在 9 点钟停止。
从顶部起顺时针,分别在球体在第 0 帧、第 25 帧和第 75 帧的位置时取消链接。