Пример #1
0
def save_image(image_type='image',
               view_selected=None,
               index=-1,
               zoom_val=0,
               add_index_to_name=True,
               add_colorbar=None,
               cb_ticks_num=None,
               cb_ticks_font_size=None):
    if add_colorbar is None:
        add_colorbar = False  #todo: Fix!! bpy.context.scene.save_views_with_cb
    if cb_ticks_num is None:
        cb_ticks_num = bpy.context.scene.cb_ticks_num
    if cb_ticks_font_size is None:
        cb_ticks_font_size = bpy.context.scene.cb_ticks_font_size
    if view_selected is None:
        view_selected = bpy.context.scene.save_selected_view
    if index == -1:
        fol = bpy.path.abspath(bpy.context.scene.output_path)
        files = [
            mu.namebase(f) for f in glob.glob(
                op.join(fol, '{}*.{}'.format(image_type, get_figure_format())))
        ]
        files_with_numbers = sum([len(re.findall('\d+', f)) for f in files])
        if files_with_numbers > 0:
            index = max([int(re.findall('\d+', f)[0])
                         for f in files]) + 1 if len(files) > 0 else 0
        else:
            index = 0

    switch_to_object_mode()
    index = bpy.context.scene.frame_current if index == -1 else index
    mu.show_only_render(True)
    fol = bpy.path.abspath(bpy.context.scene.output_path)
    if add_index_to_name:
        image_name = op.join(
            fol, '{}_{}.{}'.format(image_type, index, get_figure_format()))
    else:
        image_name = op.join(fol, '{}.{}'.format(image_type,
                                                 get_figure_format()))
    print('Image saved in {}'.format(image_name))
    bpy.context.scene.render.filepath = image_name
    view3d_context = mu.get_view3d_context()
    if view_selected:
        _addon().view_all()
        # todo: Understand when zoom(-1) is needed
        # if not _addon().subcorticals_are_hiding():
        #     _addon().zoom(-1)
        # mu.select_all_brain(True)
        # bpy.ops.view3d.camera_to_view_selected(view3d_context)
        # mu.view_selected()
    if zoom_val != 0:
        _addon().zoom(zoom_val)
    # _addon().zoom(1)
    # mu.center_view()
    bpy.ops.render.opengl(view3d_context, write_still=True)
    if add_colorbar:
        add_colorbar_to_image(image_name, cb_ticks_num, cb_ticks_font_size)
    # if view_selected:
    #     _addon().zoom(1)
    return image_name
Пример #2
0
def save_image(image_type='image', view_selected=None, index=-1):
    if view_selected is None:
        view_selected = bpy.context.scene.save_selected_view
    if index == -1:
        fol = bpy.path.abspath(bpy.context.scene.output_path)
        files = [
            mu.namebase(f)
            for f in glob.glob(op.join(fol, '{}*.png'.format(image_type)))
        ]
        files_with_numbers = sum([len(re.findall('\d+', f)) for f in files])
        if files_with_numbers > 0:
            index = max([int(re.findall('\d+', f)[0])
                         for f in files]) + 1 if len(files) > 0 else 0
        else:
            index = 0

    if not _addon().is_solid():
        _addon().change_to_solid_brain()
    exit_from_camera_view()
    index = bpy.context.scene.frame_current if index == -1 else index
    mu.show_only_render(True)
    fol = bpy.path.abspath(bpy.context.scene.output_path)
    image_name = op.join(fol, '{}_{}.png'.format(image_type, index))
    print('Image saved in {}'.format(image_name))
    bpy.context.scene.render.filepath = image_name
    view3d_context = mu.get_view3d_context()
    if view_selected:
        _addon().view_all()
        # mu.select_all_brain(True)
        # bpy.ops.view3d.camera_to_view_selected(view3d_context)
        # mu.view_selected()
    bpy.ops.render.opengl(view3d_context, write_still=True)
    # if view_selected:
    #     _addon().zoom(1)
    return image_name
Пример #3
0
    def invoke(self, context, event=None):
        self._first_time = True
        StreamingPanel.is_streaming = not StreamingPanel.is_streaming
        if StreamingPanel.first_time:
            StreamingPanel.first_time = False
            try:
                context.window_manager.event_timer_remove(self._timer)
            except:
                pass
            context.window_manager.modal_handler_add(self)
            self._timer = context.window_manager.event_timer_add(
                0.01, context.window)
        if StreamingPanel.is_streaming:
            init_electrodes_fcurves(bpy.context.scene.streaming_window_length)
            show_electrodes_fcurves()
            self._first_timer = True
            # print('Setting _first_timer to True!')
            # _addon().set_colorbar_max_min(StreamingPanel.data_max, StreamingPanel.data_min)
            if not _addon().colorbar_values_are_locked():
                _addon().set_colorbar_title('Electrodes Streaming Data')
            mu.show_only_render(True)
            bpy.context.scene.frame_current = 0
            args = dict(buffer_size=bpy.context.scene.streaming_buffer_size,
                        server=bpy.context.scene.streaming_server,
                        multicast_group=bpy.context.scene.multicast_group,
                        port=bpy.context.scene.streaming_server_port,
                        timeout=bpy.context.scene.timeout,
                        multicast=bpy.context.scene.multicast,
                        mat_len=len(
                            bpy.data.objects['Deep_electrodes'].children))
            if bpy.context.scene.stream_type == 'offline':
                config = mu.read_config_ini(
                    op.join(mu.get_user_fol(), 'electrodes', 'streaming',
                            bpy.context.scene.logs_folders))
            else:
                config = mu.read_config_ini(
                    op.join(mu.get_user_fol(), 'electrodes', 'streaming'))
            if 'STREAMING' in config.sections():
                args['good_channels'] = config['STREAMING'].get(
                    'good_electrodes', '')
                args['bad_channels'] = config['STREAMING'].get(
                    'bad_electrodes', '')
                args['no_channels'] = config['STREAMING'].get(
                    'no_electrodes', '')
                StreamButton._channels_names = config['STREAMING'].get(
                    'electrodes_names', '').split(',')
                StreamButton._stim_channels = config['STREAMING'].get(
                    'stim_electrodes', '').split(',')
            if bpy.context.scene.stream_type == 'offline':
                args['data'] = copy.deepcopy(StreamingPanel.offline_data)
                StreamingPanel.udp_queue = mu.run_thread(
                    offline_logs_reader,
                    reading_from_udp_while_termination_func, **args)
            else:
                StreamingPanel.udp_queue = mu.run_thread(
                    udp_reader, reading_from_udp_while_termination_func,
                    **args)

        return {'RUNNING_MODAL'}
Пример #4
0
def show_only_redner_update(self, context):
    mu.show_only_render(bpy.context.scene.show_only_render)
Пример #5
0
def show_only_redner_update(self, context):
    mu.show_only_render(bpy.context.scene.show_only_render)