按照逻辑,假设眨眼是一件相当快速和简单的事情,可以用两种不同的形状来设置,一种是睁开眼皮,另一种是闭上眼皮。本文将通过一个表达式的运用,使最前面一根骨骼旋转时,带动后面的骨骼一起旋转,从而达到逐渐覆盖眼球的效果。
1目的
要理解的是,这个做的目的是在空值之间建立一种关系,因此当你移动末端的一个控制时,其他空值将自动收缩。
2思路
JNT1将与选中的控制器完成一次parentConstraint。
同时分别给JNT03,JNT05,JNT07应用表达式。
要注意骨骼之间的层级关系。每根骨骼都需要是独立的。但root的位置是完全重叠在一起的。
现在无论何时更改那个骨骼的百分比,另一个将自动跟随。因为我们的控制器是约束在JNT01这个骨骼上的。也就意味着这根骨骼的旋转需要带动着后面的三根骨骼一起旋转。
3具体表达式
基于这个需求我们需要写一组简单的表达式如下。
B.rotateZ = A.rotateZ * 0.75;
C.rotateZ = A.rotateZ * 0.50;
D.rotateZ = A.rotateZ * 0.25;
这组表达式的意思就是BCD.rotate的值取决于A.rotate的值乘以不同的百分比的值。这些百分比就是控制旋转角度最终当A.rotate重叠在BCD.rotate上时可以完成重合和最远旋转角度,所以我们给每根骨骼的旋转数值做到了一个限制。
最终就得到了下面这一组表达式(把ABCD替换名字即可)
Eyelid_Upper_JNT03.rotateZ = Eyelid_Upper_JNT01.rotateZ * 0.75;
Eyelid_Upper_JNT05.rotateZ = Eyelid_Upper_JNT01.rotateZ * 0.50;
Eyelid_Upper_JNT07.rotateZ = Eyelid_Upper_JNT01.rotateZ * 0.25;