游戏知识实验课:姿态偏移与覆盖混合为何不能随意交换——十二组姿态偏移与覆盖层的次序(练习18)
角色姿态层可以表示对基础姿态的偏移,也可以表示朝目标姿态混合。两种层使用不同含义,把它们交换顺序往往会改变结果。
本篇用一组独立输入把规则展开为可重复核对的记录。先确认单位、编号及边界,再自行尝试推演,然后寻找与下面过程第一次不同的位置。所有结果只在这里写明的规则下成立,不能当作所有游戏的统一实现。
规则与输入
只计算一个虚构姿态数值。两个偏移分别乘各自权重后相加;覆盖层按自身权重在当前值与目标值之间混合。比较先加偏移再覆盖,与先覆盖再加相同偏移,两种结果均不做角度回绕或限幅。
[[-14, [12, 9], ['1/4', '1/4'], 2, '1/2'], [27, [-10, -8], ['0', '1'], -14, '1/2'], [24, [-1, 12], ['1/4', '1/2'], -22, '1/2'], [21, [9, 9], ['1', '1/4'], -4, '3/4'], [-26, [-4, 9], ['1/2', '1'], 30, '1/4'], [-15, [-6, -6], ['1/4', '1/2'], 21, '1/4'], [15, [11, 3], ['1/4', '0'], -5, '3/4'], [-8, [14, 15], ['0', '1/4'], -14, '1/4'], [28, [-13, 2], ['0', '1/4'], -18, '1/4'], [-8, [-4, -1], ['1/4', '0'], 25, '1'], [-7, [14, -6], ['1/2', '0'], 15, '1'], [-16, [15, -5], ['0', '0'], -25, '3/4']]
逐步推演
基础-14,偏移[12, 9]及权重['1/4', '1/4'],合计偏移21/4;目标2、覆盖权重1/2,先偏移得-27/8,后偏移得-3/4,后者减前者21/8。
基础27,偏移[-10, -8]及权重['0', '1'],合计偏移-8;目标-14、覆盖权重1/2,先偏移得5/2,后偏移得-3/2,后者减前者-4。
基础24,偏移[-1, 12]及权重['1/4', '1/2'],合计偏移23/4;目标-22、覆盖权重1/2,先偏移得31/8,后偏移得27/4,后者减前者23/8。
基础21,偏移[9, 9]及权重['1', '1/4'],合计偏移45/4;目标-4、覆盖权重3/4,先偏移得81/16,后偏移得27/2,后者减前者135/16。
基础-26,偏移[-4, 9]及权重['1/2', '1'],合计偏移7;目标30、覆盖权重1/4,先偏移得-27/4,后偏移得-5,后者减前者7/4。
基础-15,偏移[-6, -6]及权重['1/4', '1/2'],合计偏移-9/2;目标21、覆盖权重1/4,先偏移得-75/8,后偏移得-21/2,后者减前者-9/8。
基础15,偏移[11, 3]及权重['1/4', '0'],合计偏移11/4;目标-5、覆盖权重3/4,先偏移得11/16,后偏移得11/4,后者减前者33/16。
基础-8,偏移[14, 15]及权重['0', '1/4'],合计偏移15/4;目标-14、覆盖权重1/4,先偏移得-107/16,后偏移得-23/4,后者减前者15/16。
基础28,偏移[-13, 2]及权重['0', '1/4'],合计偏移1/2;目标-18、覆盖权重1/4,先偏移得135/8,后偏移得17,后者减前者1/8。
基础-8,偏移[-4, -1]及权重['1/4', '0'],合计偏移-1;目标25、覆盖权重1,先偏移得25,后偏移得24,后者减前者-1。
基础-7,偏移[14, -6]及权重['1/2', '0'],合计偏移7;目标15、覆盖权重1,先偏移得15,后偏移得22,后者减前者7。
基础-16,偏移[15, -5]及权重['0', '0'],合计偏移0;目标-25、覆盖权重3/4,先偏移得-91/4,后偏移得-91/4,后者减前者0。
十二组分别说明偏移含义和覆盖含义;差异由覆盖层对先前偏移的缩减产生。
怎样独立检查
展开两个顺序的表达式,先覆盖再加偏移的结果减去另一结果,应等于覆盖权重乘总偏移。覆盖权重为零或总偏移为零时两者相同,可作为边界检查。
这里的数值只是教学用姿态通道,不直接模拟三维骨骼旋转。多轴旋转可能还涉及表示方法和旋转顺序,不能把本例的一维结论照搬成完整动画系统。先弄清某层存的是绝对目标还是相对偏移。
练习时先保存原始输入及中间结果,再只改变一个条件观察差异。重点检查空状态、相同数值、恰好到达边界和最后一步。不要为了凑出相同的最终结果而忽略较早出现的偏差,过程和结论都应能由同一套规则解释。
