예제 #1
0
    def _sided_rotation_locks(self, finger_number, armature_object):
        bpy.ops.object.mode_set(mode='POSE', toggle=False)
        for segment_number in [1, 2, 3]:
            locks = {}
            if finger_number == 1:
                if segment_number == 1:
                    locks = _ROTATION_LOCKS["thumb_first_segment"]
                else:
                    locks = _ROTATION_LOCKS["thumb_following_segments"]
            else:
                if segment_number == 1:
                    locks = _ROTATION_LOCKS["thumb_first_segment"]
                else:
                    locks = _ROTATION_LOCKS["thumb_following_segments"]

            x = "X" in locks and locks["X"]
            y = "Y" in locks and locks["Y"]
            z = "Z" in locks and locks["Z"]
            name = self._sided("finger" + str(finger_number) + "-" +
                               str(segment_number))
            RigService.add_ik_rotation_lock_to_pose_bone(name,
                                                         armature_object,
                                                         lock_x=x,
                                                         lock_y=y,
                                                         lock_z=z)
예제 #2
0
 def _sided_rotation_lock(self, unsided_name, armature_object):
     bpy.ops.object.mode_set(mode='POSE', toggle=False)
     if unsided_name in _ROTATION_LOCKS:
         locks = _ROTATION_LOCKS[unsided_name]
         x = "X" in locks and _ROTATION_LOCKS[unsided_name]["X"]
         y = "Y" in locks and _ROTATION_LOCKS[unsided_name]["Y"]
         z = "Z" in locks and _ROTATION_LOCKS[unsided_name]["Z"]
         name = self._sided(unsided_name)
         RigService.add_ik_rotation_lock_to_pose_bone(name,
                                                      armature_object,
                                                      lock_x=x,
                                                      lock_y=y,
                                                      lock_z=z)