此笔记仅做个人积累之用,如有错误恳请指正。
解释
实现目的: 三点式IK骨架适应不同比例的三点式肢体
需要的参数: 上臂长度因子upArm,下臂长度因子loArm。IK骨架拉伸因子stretch(范围0-1)
↑ IK关节无法被拉伸stretch=0
↑IK关节被拉伸stretch=1
这里stretch仅仅作为不能拉伸和完全能拉伸的状态之间的混合系数。
三点式IK关节如图示:
整体缩放(L_1,L_2,L_3控制)和单独bone的缩放(loArm,upArm控制)
↑单独bone的缩放,这里缩放的关节是shoulder_IK
伪代码实现
total_length = L1 + L2
direct_length = L3
if direct_length > total_length:
scale_factor = direct_length/total_length #>1
else:
scale_factor = 1
# blend by stretch param
scale_factor = (1-stretch) * 1.0 + stretch * scale_factor
# factor increment calculation for an individual bone
loArm_incre = loArm - 1
upArm_incre = upArm - 1
shoulder_IK.scaleX *= upArm_incre + scale_factor
elbow_IK.scaleX *= loArm_incre + scale_factor
可以使用的节点:plusMinusAverage,blendTwoAttrs, conditions