def make_control_chain(self): if self.use_fk: orgs = self.bones.org self.bones.ctrl.fk = self.fk_result = BoneDict( hips=map_list(self.make_control_bone, count(0), orgs[0:self.pivot_pos], repeat(True)), chest=map_list(self.make_control_bone, count(self.pivot_pos), orgs[self.pivot_pos:], repeat(False)), )
def make_mch_extra_hook_bones(self): self.bones.mch.start_hooks = map_list(self.make_mch_extra_hook_bone, self.start_control_poslist) self.bones.mch.end_hooks = map_list(self.make_mch_extra_hook_bone, self.end_control_poslist) self.mch_hooks_table = [ None, self.bones.mch.start_hooks, self.bones.mch.end_hooks ]
def make_mch_shape_anchor(self): if self.use_shape_anchor: org = self.bones.org[0] if self.use_shape_only_location: self.bones.mch.shape_anchor = map_list( self.make_mch_shape_anchor_bone, range(2), repeat(org)) else: self.bones.mch.shape_anchor = map_list( self.make_mch_shape_anchor_bone, range(4), repeat(org))
def make_mch_chain(self): orgs = self.bones.org self.bones.mch.chain = BoneDict( hips=map_list(self.make_mch_bone, orgs[0:self.pivot_pos], repeat(True)), chest=map_list(self.make_mch_bone, orgs[self.pivot_pos:], repeat(False)), ) if not self.use_fk: self.fk_result = self.bones.mch.chain
def make_main_control_chain(self): self.bones.ctrl.main = map_list(self.make_main_control_bone, self.main_control_poslist) self.bones.ctrl.start = map_list(self.make_extra_control_bone, self.start_control_poslist) self.bones.ctrl.end = map_list(self.make_extra_control_bone, self.end_control_poslist) self.make_all_controls_list() self.make_controls_switch_parent()
def make_mch_lock_bones(self): org = self.bones.org mch = self.bones.mch self.arrange_child_chains() mch.lock = self.copy_bone(org, make_derived_name(org, 'mch', '_lock'), scale=1/2, parent=True) mch.top = map_list(self.make_mch_top_bone, range(self.num_layers), repeat(org)) mch.bottom = map_list(self.make_mch_bottom_bone, range(self.num_layers), repeat(org)) mch.middle = map_list(self.make_mch_middle_bone, range(self.num_layers), repeat(org))
def make_mch_handle_bones(self): if self.use_bbones: mch = self.bones.mch chain = self.get_node_chain_with_mirror() mch.handles = map_list(self.make_mch_handle_bone, count(0), chain, chain[1:], chain[2:]) if self.use_pre_handles: mch.handles_pre = map_list(self.make_mch_pre_handle_bone, count(0), mch.handles) else: mch.handles_pre = mch.handles
def make_ik_tweak_chain(self): orgs = self.bones.org self.bones.ctrl.ik_tweak = [ *map_list(self.make_ik_tweak_bone, count(1), orgs[1:]), self.make_ik_end_tweak_bone(orgs[-1]) ]
def make_middle_ik_control_chain(self): self.bones.ctrl.ik_mid = map_list(self.make_middle_ik_control_bone, count(0), self.bones.org.main[1:3]) ik_name = self.bones.ctrl.ik_mid[0] self.component_mid_ik_pivot = self.build_middle_ik_pivot(ik_name, scale=0.4) self.build_middle_ik_control_parent(ik_name)
def init_control_nodes(self): orgs = self.bones.org self.control_nodes = nodes = [ # Bone head nodes *map_list(self.make_control_node, count(0), orgs, repeat(False)), # Tail of the final bone self.make_control_node(len(orgs), orgs[-1], True), ] nodes[0].chain_end_neighbor = nodes[1] nodes[-1].chain_end_neighbor = nodes[-2]
def make_mch_mouth_bones(self): mch = self.bones.mch mch.mouth_parent = self.make_mch_mouth_bone(0, '_mouth_parent', 3/4) mch.mouth_layers = map_list(self.make_mch_mouth_bone, range(1, self.num_layers), repeat('_mouth_layer'), repeat(0.6)) mch.top_in = map_list(self.make_mch_mouth_inout_bone, range(self.num_layers), repeat('_top_in'), repeat(0.55)) mch.bottom_in = map_list(self.make_mch_mouth_inout_bone, range(self.num_layers), repeat('_bottom_in'), repeat(0.5)) mch.middle_in = map_list(self.make_mch_mouth_inout_bone, range(self.num_layers), repeat('_middle_in'), repeat(0.45)) mch.top_out = map_list(self.make_mch_mouth_inout_bone, range(self.num_layers), repeat('_top_out'), repeat(0.4)) mch.bottom_out = map_list(self.make_mch_mouth_inout_bone, range(self.num_layers), repeat('_bottom_out'), repeat(0.35)) mch.middle_out = map_list(self.make_mch_mouth_inout_bone, range(self.num_layers), repeat('_middle_out'), repeat(0.3))
def make_def_chain(self): self.bones.deform = map_list(self.make_deform_bone, self.bones.org)
def make_mch_fk_parents(self): if self.make_fk: self.bones.mch.fk_parents = map_list(self.make_fk_parent_bone, count(0), self.bones.org)
def make_fk_controls(self): if self.make_fk: self.bones.ctrl.fk = map_list(self.make_fk_control_bone, count(0), self.bones.org)
def make_mch_ik_final_chain(self): if self.use_tip: self.bones.mch.ik_final = map_list(self.make_mch_ik_final_bone, self.bones.org[0:-1])
def make_mch_ik_chain(self): orgs = self.bones.org[0:-1] if self.use_tip else self.bones.org self.bones.mch.ik = map_list(self.make_mch_ik_bone, orgs)
def make_control_chain(self): self.bones.ctrl.fk = map_list(self.make_control_bone, count(0), self.bones.org[1:])
def make_mch_ik_back_chain(self): self.bones.mch.ik_back = map_list(self.make_mch_ik_back_bone, count(1), self.bones.org[1:])
def make_mch_ik_forward_chain(self): self.bones.mch.ik_forward = [ *map_list(self.make_mch_ik_forward_bone, count(0), self.bones.org), self.make_mch_ik_forward_end_bone(self.bones.org[-1]) ]
def make_follow_chain(self): self.bones.mch.follow = map_list(self.make_mch_follow_bone, count(1), self.bones.org[1:])
def make_middle_ik_control_chain(self): self.bones.ctrl.ik_mid = map_list(self.make_middle_ik_control_bone, count(0), self.bones.org.main[1:3]) self.build_middle_ik_control_parent(self.bones.ctrl.ik_mid[0])
def make_leg_offset_mch_bones(self): self.bones.mch.leg_offset = map_list(self.make_leg_offset_mch_bone, count(0), self.leg_rigs)
def make_result_mch_chain(self): self.bones.mch.result = map_list(self.make_result_mch_bone, count(0), self.bones.org)
def make_middle_ik_mch_chain(self): orgs = self.bones.org.main self.bones.mch.ik_mid = map_list(self.make_middle_ik_mch_bone, count(0), orgs[0:3]) self.bones.mch.ik_mid_twist = self.make_mid_twist_mch_bone(orgs)
def make_deform_chain(self): self.bones.deform = map_list(self.make_deform_bone, count(0), self.bones.org)