diff --git a/CHANGELOG.md b/CHANGELOG.md index aa88dbe..a237bc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ Activate / deactivate layer opaticty according to prefix Activate / deactivate all masks using MA layers --> +0.5.8 + +- fix: skipping when rendering multiscene + 0.5.7 - added: timeout on scene plit and autocrop border to avoid freezing blender diff --git a/OP_render_scenes.py b/OP_render_scenes.py index 1d12502..c88e859 100644 --- a/OP_render_scenes.py +++ b/OP_render_scenes.py @@ -20,9 +20,13 @@ class GPEXP_OT_render_all_scenes(bpy.types.Operator): continue if not scn.use_nodes: continue - if not [n for n in scn.node_tree.nodes if n.type == 'OUTPUT_FILE' and n.mute]: - # skip if no fileout - print(f'\n -!-> Skip {scn.name}, No output file, or all muted') + outfiles = [n for n in scn.node_tree.nodes if n.type == 'OUTPUT_FILE'] + if not outfiles: + print(f'\n -!-> Skip {scn.name}, No output files') + continue + + if all(x.mute for x in outfiles): + print(f'\n -!-> Skip {scn.name}, All output file are muted') continue print(f'\n --> Rendering {scn.name}') diff --git a/__init__.py b/__init__.py index f5dabb6..0e8187d 100644 --- a/__init__.py +++ b/__init__.py @@ -2,7 +2,7 @@ bl_info = { "name": "GP Render", "description": "Organise export of gp layers through compositor output", "author": "Samuel Bernou", - "version": (0, 5, 7), + "version": (0, 5, 8), "blender": (2, 93, 0), "location": "View3D", "warning": "", diff --git a/fn.py b/fn.py index 249b817..1b37cf0 100644 --- a/fn.py +++ b/fn.py @@ -162,23 +162,27 @@ def new_scene_from(name, src_scn=None, regen=True, crop=True, link_cam=True, lin def get_render_scene(): '''Get / Create a scene named Render''' render_scn = bpy.data.scenes.get('Render') - if not render_scn: - current = bpy.context.scene - render_scn = bpy.data.scenes.new('Render') - ## copy original settings over to new scene - # copy_settings(current, render_scn) # BAD - for attr in ['frame_start', 'frame_end', 'frame_current', 'camera', 'world']: - setattr(render_scn, attr, getattr(current, attr)) - copy_settings(current.render, render_scn.render) - - ## link cameras (and lights ?) - for ob in bpy.context.scene.objects: - if ob.type in ('CAMERA', 'LIGHT'): - render_scn.collection.objects.link(ob) + if render_scn: + return render_scn + + current = bpy.context.scene + render_scn = bpy.data.scenes.new('Render') + ## copy original settings over to new scene + # copy_settings(current, render_scn) # BAD + for attr in ['frame_start', 'frame_end', 'frame_current', 'camera', 'world']: + setattr(render_scn, attr, getattr(current, attr)) + copy_settings(current.render, render_scn.render) + + ## link cameras (and lights ?) + for ob in bpy.context.scene.objects: + if ob.type in ('CAMERA', 'LIGHT'): + render_scn.collection.objects.link(ob) - # set adapted render settings (no AA) - set_settings(render_scn) render_scn.use_nodes = True + # TODO Clear node tree (initial view layer stuff) + # set adapted render settings (no AA) + set_settings(render_scn) + return render_scn def get_view_layer(name, scene=None):