坐标
这个数值表示对象相对世界坐标系的位置。如果对象有层级关系,则是相对父坐标系(参见坐标管理器)。
这个数值表示对象相对世界坐标系的缩放比例。如果对象有层级关系,则是相对父坐标系(参见坐标管理器)。
用这里的数值修改对象的比例相当于在使用对象坐标系模式下进行缩放,这意味着对象的坐标系也会改变(参见使用模型工具模式和对象工具模式的区别)。
这个数值表示对象相对世界坐标系的旋转角度。如果对象有层级关系,则是相对父坐标系(参见坐标管理器)。
这个下拉菜单的选项只在动画中有用,这些选项能减弱“万向节死锁”效应。
让我们看看下面示例中的问题:
这里有带有复杂层级关系的动画角色。假设你想要在正视图中做一段左臂向下旋转的动画,因此我们要在指尖朝上和朝下的位置设置关键帧。如果现在从顶视图播放动画,除了我们期望的向下运动之外,手臂还会轻微的转向(上图的右上角)。这就是“万向节死锁”效应。这个示例里面效果不太明显,但是在极端情况下,它会让动画变得很不正常,形成螺旋形的运动。
如何设置正确的旋转顺序来减弱这种效应?你需要在制作动画之前观察关节坐标轴,看看哪个轴预计旋转的角度最小。在上面的示例中,是图左中标记的 X 轴。现在选择一个 X 轴位于第二位的顺序选项,虽然仍然会出现轻微的抖动,但是结果比之前要好得多。
另一个能帮助决定旋转顺序的是万向旋转选项,启用这个选项然后使用旋转工具:
使用旋转带你可以直接看到(制作动画前)计划的动作是否会按预计的方向运动。在上图左边可以看到,红色、绿色和蓝色旋转带的位置很明显没法按红色箭头方向进行旋转(没有旋转带位于旋转平面上)。这样制作的动画就会出现万向节死锁的问题。
选择不同的顺序选项,直到旋转带正好位于或接近旋转平面(上图中的蓝色旋转带),这时创建的动画中出现万向节死锁的问题就比较小了:
通常,如果将顺序中第二个参数(下图中标记的参数)设置为 90°(或 270°)左右的数值,容易出现上面的问题:
最好将其对应的旋转角度设为0°。
另外,还可以建立一个空父对象,通过对这个父对象制作动画来避免这个问题。
页面下方的冻结变换也会有所帮助。
四元
概述
你可能听说过,甚至遇到过在角色动画中出现的万向节死锁问题。
万向节死锁会在旋转值为P +/- 90° 时出现,对H或B进行同样的设置时也会产生这个现象,导致的结果是这些坐标中的其中一个会完全丢失,即使很小的旋转也会出现较大的旋转跳跃。
四元功能只对制作旋转动画有用。
默认情况下,CINEMA 4D 使用欧拉旋转对物体的旋转进行插值(欧拉旋转:在欧几里得空间(直角)中对离散旋转(HPB)使用陀螺系统。)
欧拉旋转的单个组件会单独计算插值,这意味着从 HPB (0, 0, 0) 到 HPB (60, 60, 60) 的平均值是 HPB (30, 30, 30)。而实际上在视窗的测试中,从 0, 0, 0 经过 30, 30, 30 到 60, 60, 60 的摆动不一定是最短的路径。
现在需要的是一个从 A 到 B 的最短路径的插值,就像需要手动设置动画路径时你所作的那样。
这也就是四元的作用。四元会让 0, 0, 0 通过 35.104 °, 22.83 °, 35.104 ° 到 60, 60, 60。
四元不会出现不必要的运动,因此来避免万向节死锁效应。
你可能会疑惑,那为什么四元动画不是对所有对象都适用?因为四元插值也有缺点,四元在旋转角度小于 180° 时效果很好,但如果超过这范围,由于四元会寻找最短的可能路径,这样就会出现问题。
示例
观察下面的示例:
启用四元旋转选项会为对象激活四元动画(关键帧数值仍然是欧拉数值,只有数值之间的插值会改变)。如果关闭这个选项,则仍然会使用欧拉动画算法。
注意,四元插值只在局部旋转路径中有用,对冻结坐标则无效(参见冻结全部)。
在关键帧属性中有一个单独的四元插值选项,它可以用来临时改变插值算法。
它与欧拉变换动画的差别在于:
应该在什么时候使用四元动画?
在以下情况中应使用四元动画:
在以下情况中不应使用四元动画:
冻结变换
这个功能只使用在动画中。
在 3D 中,冻结对象也被称为“清零”或“对偶变换”,因为局部坐标的位置和旋转会分别设置为0并缩放为1,而不改变对象的坐标或方向(下面我们的讨论只涉及位置和旋转)。当你创建一个空对象并将位置和角度设为与该对象一致,然后将对象作为空对象的子对象,这时也能实现一样的效果。这也是 R12 之前版本所使用的方法。
你可以将冻结的对象想象成这样:首先创建一个跟所选对象坐标相同的空对象,将这些坐标复制到冻结变换标签,它会当作相对空对象的偏移值,也就是说,对所选对象坐标做出的任何修改都是相对冻结坐标进行计算的。
那么这有什么用呢?我们以这个简单的案例进行讲解:
这个场景包含两个对象:上图中 Arm 2 是 Arm 1 的子对象,显示的坐标轴是它的局部坐标。显示在属性管理器中的则是局部坐标(它反映的是相对父对象坐标系的位置和角度)。目前为止没什么问题。
现在我们要对 Arm 2 制作动画,将它沿 X 轴旋转45°。正常情况我们会使用旋转带来旋转对象,并设置两个关键帧:
在上面中图可以看到旋转的结果。即使只沿一个轴进行旋转,所有三个轴都会发生变化。这是因为父对象(Arm 1)的坐标系与局部坐标系的方向不同。通常这种情况无法避免,并且在时间线中三条F曲线都可能会变化。更糟的是,这个案例在结下来的旋转中还会出现万向节死锁效应(参见四元旋转)。
上面这些缺点都可以通过在制作动画之前冻结变换来避免。这会将位置、缩放和旋转的数值复制到同名的冻结数值,并分别将初始值设为0和1。
这项功能有以下优点:
主坐标会根据冻结坐标进行偏移,同时所有冻结坐标会被还原为初始值。
这些是从父级获取的冻结坐标。
这些按钮可以分别用来独立地冻结三个基本坐标: