Update ik_fk_switcher.py
This commit is contained in:
@@ -287,6 +287,7 @@ def get_original_fk_controls(): # ---------- DONE
|
|||||||
fk_ctrls = cmds.ls(sl=True)
|
fk_ctrls = cmds.ls(sl=True)
|
||||||
if len(fk_ctrls) != 3:
|
if len(fk_ctrls) != 3:
|
||||||
assist_message("Incorrect number of controls selected. To apply an IK setup, you need to select 3 FK controls, in order of parent to child.", 4000)
|
assist_message("Incorrect number of controls selected. To apply an IK setup, you need to select 3 FK controls, in order of parent to child.", 4000)
|
||||||
|
return None
|
||||||
cmds.select(cl=True)
|
cmds.select(cl=True)
|
||||||
return fk_ctrls
|
return fk_ctrls
|
||||||
|
|
||||||
@@ -314,7 +315,10 @@ def create_ik_handle(parent_jnt, child_jnt, ik_ctrl): # ---------- DONE
|
|||||||
|
|
||||||
def create_temp_ik_controls(): # DONE
|
def create_temp_ik_controls(): # DONE
|
||||||
# STORES ORIGINAL SELECTED FK CONTROLS INTO VARIABLES
|
# STORES ORIGINAL SELECTED FK CONTROLS INTO VARIABLES
|
||||||
parent_ctrl, middle_ctrl, child_ctrl = fk_ctrls = get_original_fk_controls()
|
fk_ctrls = get_original_fk_controls()
|
||||||
|
if fk_ctrls is None:
|
||||||
|
return None
|
||||||
|
parent_ctrl, middle_ctrl, child_ctrl = fk_ctrls
|
||||||
check_if_setup_exists([parent_ctrl, middle_ctrl, child_ctrl])
|
check_if_setup_exists([parent_ctrl, middle_ctrl, child_ctrl])
|
||||||
check_anim_layer(fk_ctrls)
|
check_anim_layer(fk_ctrls)
|
||||||
|
|
||||||
@@ -425,7 +429,10 @@ def _fk_to_ik_impl():
|
|||||||
timeline_start, timeline_end, specific_timeline_mode = get_timeline_range()
|
timeline_start, timeline_end, specific_timeline_mode = get_timeline_range()
|
||||||
check_negative_time_range(timeline_start, timeline_end)
|
check_negative_time_range(timeline_start, timeline_end)
|
||||||
###### CREATE CONTROLS ######
|
###### CREATE CONTROLS ######
|
||||||
[parent_ctrl, middle_ctrl, child_ctrl], [parent_jnt, middle_jnt, child_jnt], [ik_ctrl, pole_vector_ctrl] = fk_ctrls, ik_jnts, ik_ctrls = create_temp_ik_controls()
|
result = create_temp_ik_controls()
|
||||||
|
if result is None:
|
||||||
|
return
|
||||||
|
[parent_ctrl, middle_ctrl, child_ctrl], [parent_jnt, middle_jnt, child_jnt], [ik_ctrl, pole_vector_ctrl] = fk_ctrls, ik_jnts, ik_ctrls = result
|
||||||
###### REPOSITION CONTROLS ######
|
###### REPOSITION CONTROLS ######
|
||||||
temp_constraints, ik_orient_constraint = set_temp_ik_controls_position(fk_ctrls, ik_jnts, ik_ctrls)
|
temp_constraints, ik_orient_constraint = set_temp_ik_controls_position(fk_ctrls, ik_jnts, ik_ctrls)
|
||||||
|
|
||||||
@@ -482,6 +489,7 @@ def get_original_ik_controls():
|
|||||||
ik_ctrls = cmds.ls(sl=True)
|
ik_ctrls = cmds.ls(sl=True)
|
||||||
if len(ik_ctrls) != 2:
|
if len(ik_ctrls) != 2:
|
||||||
assist_message("Incorrect number of controls selected. To apply an FK setup, you need to select the Pole Vector first and then the IK Control, in order.", 4000)
|
assist_message("Incorrect number of controls selected. To apply an FK setup, you need to select the Pole Vector first and then the IK Control, in order.", 4000)
|
||||||
|
return None
|
||||||
cmds.select(cl=True)
|
cmds.select(cl=True)
|
||||||
return ik_ctrls
|
return ik_ctrls
|
||||||
|
|
||||||
@@ -512,7 +520,10 @@ def get_ik_handle_joints(ik_handle):
|
|||||||
|
|
||||||
def get_original_controls():
|
def get_original_controls():
|
||||||
# SEPARATES THE SELECTED CONTROLS INTO THEIR OWN VARIABLES
|
# SEPARATES THE SELECTED CONTROLS INTO THEIR OWN VARIABLES
|
||||||
pole_vector, ik_ctrl = get_original_ik_controls()
|
ik_ctrls = get_original_ik_controls()
|
||||||
|
if ik_ctrls is None:
|
||||||
|
return None
|
||||||
|
pole_vector, ik_ctrl = ik_ctrls
|
||||||
check_if_setup_exists([pole_vector, ik_ctrl])
|
check_if_setup_exists([pole_vector, ik_ctrl])
|
||||||
ik_handle = get_ik_handle(pole_vector)
|
ik_handle = get_ik_handle(pole_vector)
|
||||||
parent_jnt, middle_jnt = get_ik_handle_joints(ik_handle)
|
parent_jnt, middle_jnt = get_ik_handle_joints(ik_handle)
|
||||||
@@ -593,7 +604,10 @@ def _ik_to_fk_impl():
|
|||||||
timeline_start, timeline_end, specific_timeline_mode = get_timeline_range()
|
timeline_start, timeline_end, specific_timeline_mode = get_timeline_range()
|
||||||
check_negative_time_range(timeline_start, timeline_end)
|
check_negative_time_range(timeline_start, timeline_end)
|
||||||
|
|
||||||
pole_vector, ik_ctrl, ik_handle, parent_jnt, middle_jnt = get_original_controls()
|
result = get_original_controls()
|
||||||
|
if result is None:
|
||||||
|
return
|
||||||
|
pole_vector, ik_ctrl, ik_handle, parent_jnt, middle_jnt = result
|
||||||
check_anim_layer([pole_vector, ik_ctrl])
|
check_anim_layer([pole_vector, ik_ctrl])
|
||||||
delete_visibility_keys(pole_vector, ik_ctrl)
|
delete_visibility_keys(pole_vector, ik_ctrl)
|
||||||
|
|
||||||
@@ -1260,7 +1274,10 @@ def fk_to_ik():
|
|||||||
timeline_start, timeline_end, specific_timeline_mode = get_timeline_range()
|
timeline_start, timeline_end, specific_timeline_mode = get_timeline_range()
|
||||||
check_negative_time_range(timeline_start, timeline_end)
|
check_negative_time_range(timeline_start, timeline_end)
|
||||||
###### CREATE CONTROLS ######
|
###### CREATE CONTROLS ######
|
||||||
[parent_ctrl, middle_ctrl, child_ctrl], [parent_jnt, middle_jnt, child_jnt], [ik_ctrl, pole_vector_ctrl] = fk_ctrls, ik_jnts, ik_ctrls = create_temp_ik_controls()
|
result = create_temp_ik_controls()
|
||||||
|
if result is None:
|
||||||
|
return
|
||||||
|
[parent_ctrl, middle_ctrl, child_ctrl], [parent_jnt, middle_jnt, child_jnt], [ik_ctrl, pole_vector_ctrl] = fk_ctrls, ik_jnts, ik_ctrls = result
|
||||||
###### REPOSITION CONTROLS ######
|
###### REPOSITION CONTROLS ######
|
||||||
temp_constraints, ik_orient_constraint = set_temp_ik_controls_position(fk_ctrls, ik_jnts, ik_ctrls)
|
temp_constraints, ik_orient_constraint = set_temp_ik_controls_position(fk_ctrls, ik_jnts, ik_ctrls)
|
||||||
|
|
||||||
@@ -1440,7 +1457,10 @@ def ik_to_fk():
|
|||||||
timeline_start, timeline_end, specific_timeline_mode = get_timeline_range()
|
timeline_start, timeline_end, specific_timeline_mode = get_timeline_range()
|
||||||
check_negative_time_range(timeline_start, timeline_end)
|
check_negative_time_range(timeline_start, timeline_end)
|
||||||
|
|
||||||
pole_vector, ik_ctrl, ik_handle, parent_jnt, middle_jnt = get_original_controls()
|
result = get_original_controls()
|
||||||
|
if result is None:
|
||||||
|
return
|
||||||
|
pole_vector, ik_ctrl, ik_handle, parent_jnt, middle_jnt = result
|
||||||
check_anim_layer([pole_vector, ik_ctrl])
|
check_anim_layer([pole_vector, ik_ctrl])
|
||||||
delete_visibility_keys(pole_vector, ik_ctrl)
|
delete_visibility_keys(pole_vector, ik_ctrl)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user