[Bf-extensions-cvs] [b007b459] blender2.8: Auto Save Render: Add option to insert frame number

florianfelix noreply at git.blender.org
Thu Oct 11 19:48:34 CEST 2018


Commit: b007b4599b25fce53cbde7f846749a21fac6872d
Author: florianfelix
Date:   Thu Oct 11 19:47:29 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBACb007b4599b25fce53cbde7f846749a21fac6872d

Auto Save Render: Add option to insert frame number

===================================================================

M	render_auto_save.py

===================================================================

diff --git a/render_auto_save.py b/render_auto_save.py
index 19846383..e99516d3 100644
--- a/render_auto_save.py
+++ b/render_auto_save.py
@@ -36,7 +36,7 @@ from bpy.app.handlers import persistent
 from os.path import dirname, exists, join
 from bpy.path import basename
 from os import mkdir, listdir
-from re import findall
+from re import findall, search
 
 IMAGE_FORMATS = (
     'BMP',
@@ -86,6 +86,7 @@ def auto_save_render(scene):
     elif scene.auto_save_format == 'JPEG':
         rndr.image_settings.file_format = 'JPEG'
 
+    frame_current = bpy.context.scene.frame_current
     extension = rndr.file_extension
     blendname = basename(bpy.data.filepath).rpartition('.')[0]
     filepath = dirname(bpy.data.filepath) + '/auto_saves'
@@ -103,17 +104,40 @@ def auto_save_render(scene):
              if f.startswith(blendname)
              and f.lower().endswith(IMAGE_EXTENSIONS)]
 
-    highest = 0
-    if files:
-        for f in files:
-            #find last numbers in the filename after the blendname
-            suffix = findall('\d+', f.split(blendname)[-1])
-            if suffix:
-                if int(suffix[-1]) > highest:
-                    highest = int(suffix[-1])
-
-    save_name = join(filepath, blendname) + '_' + \
-        str(highest+1).zfill(3) + extension
+    def save_number_from_files(files):
+        highest = 0
+        if files:
+            for f in files:
+                #find last numbers in the filename
+                suffix = findall(r'\d+', f.split(blendname)[-1])
+                if suffix:
+                    if int(suffix[-1]) > highest:
+                        highest = int(suffix[-1])
+        return str(highest+1).zfill(3)
+
+    def this_frame_files(files):
+        match_files = []
+        frame_pattern = r'_f[0-9]{4}_'
+        for file in files:
+            res = search(frame_pattern, file)
+            if res:
+                if int(res[0][2:-1]) == frame_current:
+                    match_files.append(file)
+        return match_files
+
+    if scene.auto_save_use_framenumber:
+        frame_files = this_frame_files(files)
+        save_number = save_number_from_files(frame_files)
+        frame_number = 'f' + str(frame_current).zfill(4)
+        save_name = '_'.join([blendname, frame_number, save_number])
+    else:
+        save_number = save_number_from_files(files)
+        save_name = '_'.join([blendname, save_number])
+    save_name += extension
+    save_name = join(filepath, save_name)
+
+    # save_name = join(filepath, blendname) + '_' + \
+    # str(highest+1).zfill(3) + extension
 
     image = bpy.data.images['Render Result']
     if not image:
@@ -159,6 +183,7 @@ class RENDER_PT_render_auto_save(Panel):
 
         col = layout.column(align=True)
         col.prop(context.scene, 'auto_save_blend', toggle=False)
+        col.prop(context.scene, 'auto_save_use_framenumber', toggle=False)
         col.prop(context.scene, 'auto_save_subfolders', toggle=False)
         col.prop(context.scene, 'auto_save_format', text='as', expand=False)
 
@@ -195,6 +220,11 @@ def register():
         name='Save into subfolder',
         default=False,
         description='Save into individual subfolders per blend name')
+    bpy.types.Scene.auto_save_use_framenumber = BoolProperty(
+        name='Insert frame number',
+        default=False,
+        description='Insert frame number into file name'
+    )
     bpy.app.handlers.render_post.append(auto_save_render)
 
 
@@ -206,6 +236,7 @@ def unregister():
     del(bpy.types.Scene.auto_save_after_render)
     del(bpy.types.Scene.auto_save_format)
     del(bpy.types.Scene.auto_save_subfolders)
+    del(bpy.types.Scene.auto_save_use_framenumber)
     bpy.app.handlers.render_post.remove(auto_save_render)



More information about the Bf-extensions-cvs mailing list