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
        ]
示例#3
0
 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()
示例#6
0
    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))
示例#7
0
    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
示例#8
0
    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])
        ]
示例#9
0
    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)
示例#10
0
    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]
示例#11
0
    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))
示例#12
0
 def make_def_chain(self):
     self.bones.deform = map_list(self.make_deform_bone, self.bones.org)
示例#13
0
 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)
示例#14
0
 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)
示例#15
0
 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])
示例#16
0
 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)
示例#17
0
 def make_control_chain(self):
     self.bones.ctrl.fk = map_list(self.make_control_bone, count(0),
                                   self.bones.org[1:])
示例#18
0
 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:])
示例#19
0
 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])
     ]
示例#20
0
 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])
示例#22
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)
示例#23
0
 def make_result_mch_chain(self):
     self.bones.mch.result = map_list(self.make_result_mch_bone, count(0),
                                      self.bones.org)
示例#24
0
 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)
示例#25
0
 def make_deform_chain(self):
     self.bones.deform = map_list(self.make_deform_bone, count(0),
                                  self.bones.org)