Beispiel #1
0
def show_axial():
    if bpy.types.Scene.in_camera_view and bpy.data.objects.get("Camera_empty") is not None:
        if mu.get_time_from_event(mu.get_time_obj()) > 2 or bpy.context.scene.current_view != 'axial':
            bpy.data.objects["Camera_empty"].rotation_euler = [np.pi / 2, 0.0, np.pi]
            bpy.context.scene.current_view = 'axial'
            bpy.context.scene.current_view_flip = 0
        else:
            if bpy.context.scene.current_view_flip == 1:
                bpy.data.objects["Camera_empty"].rotation_euler = [np.pi / 2, 0.0, np.pi]
            else:
                # print('in ShowAxial else')
                bpy.data.objects["Camera_empty"].rotation_euler = [-np.pi / 2, 0.0, np.pi]
            bpy.context.scene.current_view_flip = not bpy.context.scene.current_view_flip
        ShowHideObjectsPanel.time_of_view_selection = mu.get_time_obj()
    else:
        mu.get_view3d_region().view_perspective = 'ORTHO'
        # todo: first term is always False...
        if mu.get_time_from_event(mu.get_time_obj()) > 2 or bpy.context.scene.current_view != 'axial':
            mu.get_view3d_region().view_rotation = AXIAL_SUPERIOR # [1, 0, 0, 0]
            bpy.context.scene.current_view = 'axial'
            bpy.context.scene.current_view_flip = 0
        else:
            mu.rotate_view3d(AXIAL_SUPERIOR) if bpy.context.scene.current_view_flip else mu.rotate_view3d(AXIAL_INFERIOR)
            bpy.context.scene.current_view_flip = not bpy.context.scene.current_view_flip
        ShowHideObjectsPanel.time_of_view_selection = mu.get_time_obj()
Beispiel #2
0
def show_sagital():
    if bpy.types.Scene.in_camera_view and bpy.data.objects.get("Camera_empty") is not None:
        if mu.get_time_from_event(mu.get_time_obj()) > 2 or bpy.context.scene.current_view != 'sagittal':
            bpy.data.objects["Camera_empty"].rotation_euler = [0.0, 0.0, np.pi / 2]
            bpy.context.scene.current_view = 'sagittal'
            bpy.context.scene.current_view_flip = 0
        else:
            if bpy.context.scene.current_view_flip == 1:
                bpy.data.objects["Camera_empty"].rotation_euler = [0.0, 0.0, np.pi / 2]
            else:
                # print('in ShowSagittal else')
                bpy.data.objects["Camera_empty"].rotation_euler = [0.0, 0.0, -np.pi / 2]
            bpy.context.scene.current_view_flip = not bpy.context.scene.current_view_flip
            # ShowHideObjectsPanel.time_of_view_selection = mu.get_time_obj()
    else:
        mu.get_view3d_region().view_perspective = 'ORTHO'
        if mu.get_time_from_event(mu.get_time_obj()) > 2 or bpy.context.scene.current_view != 'sagittal':
            mu.rotate_view3d(SAGITTAL_LEFT)
            bpy.context.scene.current_view = 'sagittal'
            bpy.context.scene.current_view_flip = False
        else:
            mu.rotate_view3d(SAGITTAL_LEFT) if bpy.context.scene.current_view_flip else mu.rotate_view3d(SAGITTAL_RIGHT)
            bpy.context.scene.current_view_flip = not bpy.context.scene.current_view_flip

    # view_all()
    # zoom(-1)
    ShowHideObjectsPanel.time_of_view_selection = mu.get_time_obj()
Beispiel #3
0
def show_coronal(show_frontal=False):
    if show_frontal:
        mu.rotate_view3d(CORONAL_ANTERIOR)
        bpy.context.scene.current_view = 'coronal'
        bpy.context.scene.current_view_flip = 0
        return

    if bpy.types.Scene.in_camera_view and bpy.data.objects.get("Camera_empty") is not None:
        if mu.get_time_from_event(mu.get_time_obj()) > 2 or bpy.context.scene.current_view != 'coronal':
            bpy.data.objects["Camera_empty"].rotation_euler = [0.0, 0.0, np.pi]
            bpy.context.scene.current_view = 'coronal'
            bpy.context.scene.current_view_flip = 0
        else:
            if bpy.context.scene.current_view_flip == 1:
                bpy.data.objects["Camera_empty"].rotation_euler = [0.0, 0.0, np.pi]
            else:
                # print('in ShowCoronal else')
                bpy.data.objects["Camera_empty"].rotation_euler = [0.0, 0.0, 0.0]
            bpy.context.scene.current_view_flip = not bpy.context.scene.current_view_flip
        ShowHideObjectsPanel.time_of_view_selection = mu.get_time_obj()
    else:
        mu.get_view3d_region().view_perspective = 'ORTHO'
        if mu.get_time_from_event(mu.get_time_obj()) > 2 or bpy.context.scene.current_view != 'coronal':
            mu.rotate_view3d(CORONAL_ANTERIOR)
            bpy.context.scene.current_view = 'coronal'
            bpy.context.scene.current_view_flip = False
        else:
            mu.rotate_view3d(CORONAL_ANTERIOR) if bpy.context.scene.current_view_flip else mu.rotate_view3d(CORONAL_POSTERIOR)
            bpy.context.scene.current_view_flip = not bpy.context.scene.current_view_flip
        ShowHideObjectsPanel.time_of_view_selection = mu.get_time_obj()
Beispiel #4
0
def rotate_view(view_ang):
    rotation_in_quaternions = ANGLES_DICT.get(view_ang, '')
    if rotation_in_quaternions != '':
        if view_ang == ROT_MEDIAL_LEFT:
            _addon().hide_hemi('rh')
            _addon().show_hemi('lh')
            mu.rotate_view3d(ANGLES_DICT[ROT_SAGITTAL_RIGHT])
        elif view_ang == ROT_MEDIAL_RIGHT:
            _addon().show_hemi('rh')
            _addon().hide_hemi('lh')
            mu.rotate_view3d(ANGLES_DICT[ROT_SAGITTAL_LEFT])
        else:
            mu.rotate_view3d(rotation_in_quaternions)
    else:
        print('angle should be one of ROT_SAGITTAL_LEFT, ROT_SAGITTAL_RIGHT, ROT_CORONAL_ANTERIOR, ' + \
              'ROT_CORONAL_POSTERIOR, ROT_AXIAL_SUPERIOR, ROT_AXIAL_INFERIOR,ROT_MEDIAL_LEFT,ROT_MEDIAL_RIGHT')
Beispiel #5
0
def _save_all_views(views=None,
                    inflated_ratio_in_file_name=False,
                    rot_lh_axial=True,
                    render_images=False,
                    quality=0,
                    img_name_prefix='',
                    add_colorbar=False,
                    cb_ticks_num=None,
                    cb_ticks_font_size=None,
                    overwrite=True):
    def get_image_name(view_name):
        return '{}{}{}_{}'.format(
            '{}_'.format(hemi) if hemi != '' else '',
            '{}_'.format(img_name_prefix) if img_name_prefix != '' else '',
            surf_name, view_name)

    def should_save_image(img_name):
        return overwrite or not op.isfile(get_full_output_fname(img_name))

    def save_medial_views():
        if _addon().ROT_MEDIAL_LEFT in views:
            image_name = '{}_left_medial'.format(surf_name)
            if should_save_image(image_name):
                _addon().hide_hemi('rh')
                _addon().show_hemi('lh')
                _addon().rotate_view(_addon().ROT_SAGITTAL_RIGHT)
                image_fname = save_render_image(image_name, quality,
                                                render_images, add_colorbar,
                                                cb_ticks_num,
                                                cb_ticks_font_size)
                images_names.append(image_fname)
        if _addon().ROT_MEDIAL_RIGHT in views:
            image_name = '{}_right_medial'.format(surf_name)
            if should_save_image(image_name):
                _addon().show_hemi('rh')
                _addon().hide_hemi('lh')
                _addon().rotate_view(_addon().ROT_SAGITTAL_LEFT)
                image_fname = save_render_image(
                    '{}_right_medial'.format(surf_name), quality,
                    render_images, add_colorbar, cb_ticks_num,
                    cb_ticks_font_size)
                images_names.append(image_fname)
        _addon().show_hemi('rh')
        _addon().show_hemi('lh')

    if views is None:
        views = list(_addon().ANGLES_DICT.keys(
        ))  # + [_addon().ROT_MEDIAL_LEFT, _addon().ROT_MEDIAL_RIGHT]
    else:
        views = list(map(int, views))
    inf_r = bpy.context.scene.inflating
    if inflated_ratio_in_file_name:
        surf_name_dict = {-1: 'pial', 0: 'inflated', 1: 'flat'}
        surf_name = surf_name_dict.get(inf_r, '')
        if surf_name == '':
            if -1 < inf_r < 0:
                surf_name = '{:.1f}_inflated'.format(1 - inf_r)
            else:
                surf_name = '{:.1f}_flat'.format(inf_r)
    else:
        surf_name = 'pial' if inf_r == -1 else 'inflated' if -1 < inf_r <= 0 else 'flat'
    if mu.get_hemi_obj('rh').hide and not mu.get_hemi_obj('lh').hide:
        hemi = 'lh'
    elif not mu.get_hemi_obj('rh').hide and mu.get_hemi_obj('lh').hide:
        hemi = 'rh'
    elif not mu.get_hemi_obj('rh').hide and not mu.get_hemi_obj('lh').hide:
        hemi = ''
    else:
        mu.write_to_stderr('You need to show at least one hemi')
    org_view_ang = tuple(mu.get_view3d_region().view_rotation)
    images_names = []
    for view in views:
        view_name = _addon().view_name(view)
        img_name = get_image_name(view_name)
        if not should_save_image(img_name):
            continue
        _addon().rotate_view(view)
        if hemi == 'lh' and rot_lh_axial and view in (
                _addon().ROT_AXIAL_SUPERIOR, _addon().ROT_AXIAL_INFERIOR):
            _addon().rotate_brain(dz=180)
        mu.center_view()
        image_fname = save_render_image(img_name, quality, render_images,
                                        add_colorbar, cb_ticks_num,
                                        cb_ticks_font_size)
        print(image_fname, view, hemi)
        images_names.append(image_fname)
    # if not mu.get_hemi_obj('rh').hide and not mu.get_hemi_obj('lh').hide:
    if views is None:
        save_medial_views()
    # todo: doesn't work
    mu.rotate_view3d(org_view_ang)
    mu.center_view()
    return images_names