Rigify:
- Added two driven-shape-key rig types that create and drive shape keys on a mesh/meshes based on the distance or rotation difference between two bones. - Fixed bug in finger curl rig type where secondary finger controls were not created. Finger type can also now (optionally) have a hinge switch (useful when using it for wings). - Changed the blending system in rigify_utils to use copy_transforms constraints instead of copy_loc+copy_rot. - Finished the quadruped leg type. Now has both ik and fk control and ik/fk switching. Also uses a rotating bone to control the knee direction instead of a pole target (seems to work more consistently for quadruped setups). There's still one annoying bug regarding foot roll, but it's not blocking. I'll track it down later. - Mouth rig now creates corrective shape keys on the face mesh for dealing with mouth corners when they spread open. - Biped arm and leg types now cause mesh to scale when you scale the fk controls. - Misc improvements to the rig types.
This commit is contained in:
@@ -223,6 +223,7 @@ def fk(obj, definitions, base_names, options):
|
||||
fk_chain.forearm_p.rotation_mode = 'XYZ'
|
||||
fk_chain.forearm_p.lock_rotation = (False, True, True)
|
||||
fk_chain.hand_p.rotation_mode = 'ZXY'
|
||||
fk_chain.arm_p.lock_location = True, True, True
|
||||
|
||||
con = fk_chain.arm_p.constraints.new('COPY_LOCATION')
|
||||
con.target = obj
|
||||
@@ -276,7 +277,14 @@ def fk(obj, definitions, base_names, options):
|
||||
fk_chain.arm_b.layer = layer
|
||||
fk_chain.forearm_b.layer = layer
|
||||
fk_chain.hand_b.layer = layer
|
||||
|
||||
|
||||
# Forearm was getting wrong roll somehow. Hack to fix that.
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
fk_chain.update()
|
||||
mt.update()
|
||||
fk_chain.forearm_e.roll = mt.forearm_e.roll
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
return None, fk_chain.arm, fk_chain.forearm, fk_chain.hand
|
||||
|
||||
@@ -338,6 +346,11 @@ def deform(obj, definitions, base_names, options):
|
||||
con.target = obj
|
||||
con.subtarget = definitions[2]
|
||||
|
||||
con = uarm1.constraints.new('COPY_SCALE')
|
||||
con.name = "trackto"
|
||||
con.target = obj
|
||||
con.subtarget = definitions[1]
|
||||
|
||||
con = uarm2.constraints.new('COPY_ROTATION')
|
||||
con.name = "copy_rot"
|
||||
con.target = obj
|
||||
@@ -349,6 +362,11 @@ def deform(obj, definitions, base_names, options):
|
||||
con.target = obj
|
||||
con.subtarget = definitions[2]
|
||||
|
||||
con = farm1.constraints.new('COPY_SCALE')
|
||||
con.name = "copy_rot"
|
||||
con.target = obj
|
||||
con.subtarget = definitions[2]
|
||||
|
||||
con = farm2.constraints.new('COPY_ROTATION')
|
||||
con.name = "copy_rot"
|
||||
con.target = obj
|
||||
|
Reference in New Issue
Block a user