def get_boundingbox_center(object_name): """ returns the bounding box center. :param object_name: :return: """ return transform_utils.Transform(object_name).bbox_center()
def mirror_transforms(object_name=""): """ mirror the transform controllers. **Must have corresponding left/ right naming. :param object_name: <str> the object to get transform values and find the mirror object from. :return: <bool> True for success. <bool> False for failure. """ if not object_name: object_name = object_utils.get_selected_node(single=True) mirror_obj_name = '' if '_l_' in object_name: mirror_obj_name = object_name.replace('_l_', '_r_') if '_r_' in object_name: mirror_obj_name = object_name.replace('_r_', '_l_') if mirror_obj_name == mirror_obj_name: return False p_object = object_utils.get_transform_relatives(object_name, find_parent=True, as_strings=True)[0] p_mirror_object = object_utils.get_transform_relatives(mirror_obj_name, find_parent=True, as_strings=True)[0] p_trm = transform_utils.Transform(p_object) matrix = p_trm.world_matrix() mirror_matrix = p_trm.mirror_matrix(matrix) cmds.xform(p_mirror_object, m=mirror_matrix, ws=1) return True
def get_joint_hierarchy_positions(base_joint_name=""): """ get hierarchial positions array. :return: <tuple> positions array. """ joint_hierarchy = get_joint_hierarchy(base_joint_name) positions_array = () for jnt_name in joint_hierarchy: positions_array += transform_utils.Transform( jnt_name).get_world_translation_list(), return positions_array
def create_joint_at_transform(transform_name="", name=""): """ creates joints at the same position as the transform object. :param transform_name: <str> the transform name to get values from. :param name: <str> the name to use when creating joints. :return: <str> joint name. """ if not name: jnt_name = joint_name(transform_name) else: jnt_name = name tfm = transform_utils.Transform(transform_name) cmds.joint(name=jnt_name) cmds.xform(jnt_name, m=tfm.world_matrix(), ws=True) return jnt_name
def create_control_at_transform(object_name, name='', shape_name="cube", auto_num=True): """ creates a controller object at the same space as the transform. :param object_name: <str> object name to use. :param name: <str> the name for the new controller object. :param shape_name: <str> build this shape. :param auto_num: <int> generate a number associated with the name. :return: <str> control grp. """ tfm = transform_utils.Transform(object_name) if auto_num: name = name_utils.get_start_name_with_num(name) ctrl_data = create_control(shape_name, name=name) grps = ctrl_data['group_names'] cmds.xform(grps[-1], m=tfm.world_matrix(), ws=1) return ctrl_data