예제 #1
0
def storePose(pose_name):
    load_file = blenderUtils.readTextFile('robot_poses')
    if load_file == '':
        poses = {}
    else:
        poses = yaml.load(load_file)
    new_pose = {}
    prev_mode = bpy.context.mode
    bpy.ops.object.mode_set(mode='POSE')
    for obj in selectionUtils.returnObjectList('link'):
        obj.pose.bones['Bone'].rotation_mode = 'XYZ'
        new_pose[namingUtils.getObjectName(obj, 'joint')] = obj.pose.bones['Bone'].rotation_euler.y
    bpy.ops.object.mode_set(mode=prev_mode)
    poses[pose_name] = new_pose
    blenderUtils.updateTextFile('robot_poses', yaml.dump(poses))
예제 #2
0
def loadPose(pose_name):
    load_file = blenderUtils.readTextFile('robot_poses')
    if load_file == '':
        log('No poses stored.', 'ERROR')
        return
    poses = yaml.load(load_file)
    if pose_name in poses:
        prev_mode = bpy.context.mode
        bpy.ops.object.mode_set(mode='POSE')
        for obj in selectionUtils.returnObjectList('link'):
            if namingUtils.getObjectName(obj, 'joint') in poses[pose_name]:
                obj.pose.bones['Bone'].rotation_mode = 'XYZ'
                obj.pose.bones['Bone'].rotation_euler.y = poses[pose_name][namingUtils.getObjectName(obj, 'joint')]
        bpy.ops.object.mode_set(mode=prev_mode)
    else:
        log('No pose with name ' + pose_name + ' stored.', 'ERROR')
예제 #3
0
def loadPose(robot_name, pose_name):
    """
    Load and apply a robot's stored pose.

    :param robot_name: The robot's name.
    :type robot_name: str.
    :param pose_name: The name the pose is stored under.
    :type pose_name: str.
    :return Nothing.
    """
    load_file = blenderUtils.readTextFile('robot_poses_' + robot_name)
    if load_file == '':
        log('No poses stored.', 'ERROR')
        return
    poses = yaml.load(load_file)
    if pose_name in poses:
        prev_mode = bpy.context.mode
        bpy.ops.object.mode_set(mode='POSE')
        for obj in selectionUtils.returnObjectList('link'):
            if namingUtils.getObjectName(obj, 'joint') in poses[pose_name]:
                obj.pose.bones['Bone'].rotation_mode = 'XYZ'
                obj.pose.bones['Bone'].rotation_euler.y = poses[pose_name][namingUtils.getObjectName(obj, 'joint')]
        bpy.ops.object.mode_set(mode=prev_mode)
예제 #4
0
def loadPose(robot_name, pose_name):
    """
    Load and apply a robot's stored pose.

    :param robot_name: The robot's name.
    :type robot_name: str.
    :param pose_name: The name the pose is stored under.
    :type pose_name: str.
    :return Nothing.
    """
    load_file = blenderUtils.readTextFile('robot_poses_' + robot_name)
    if load_file == '':
        log('No poses stored.', 'ERROR')
        return
    poses = yaml.load(load_file)
    if pose_name in poses:
        prev_mode = bpy.context.mode
        bpy.ops.object.mode_set(mode='POSE')
        for obj in selectionUtils.returnObjectList('link'):
            if namingUtils.getObjectName(obj, 'joint') in poses[pose_name]:
                obj.pose.bones['Bone'].rotation_mode = 'XYZ'
                obj.pose.bones['Bone'].rotation_euler.y = poses[pose_name][
                    namingUtils.getObjectName(obj, 'joint')]
        bpy.ops.object.mode_set(mode=prev_mode)