16

Is there a simple way to log/save every render that you make in a Blender scene? Maybe an add-on? This would be helpful to visually see progress on modeling, materials, lighting, and whatnot. It would also be helpful if it could "print on" the date/time, vertex count, and the camera settings. Am I just dreaming or is there a way to do this?

Daniel
  • 3,624
  • 4
  • 31
  • 59

3 Answers3

12

You can have Blender automatically save files if you check the Auto Save checkbox in the render settings.

autosave checkbox

Renders will automatically be saved to *blendfile location*/auto_save/. If you check subfolders renders will be saved to: *blendfile location*/auto_save/*blendfile name*/(useful if you have multiple .blend files saved in the same directory)

Since it uses the location of the .blend file as a base, you must save your file before this feature can work.

It is an addon, so make sure to enable it in the settings: enable in the settings

satishgoda
  • 8,064
  • 2
  • 18
  • 35
CharlesL
  • 15,316
  • 7
  • 53
  • 88
  • I'm using 2.67a, and the setting doesn't exist, even on saved file. Is it an addon? – Adhi May 30 '13 at 13:20
  • @Adhi it is. I added that just added that to the answer. – CharlesL May 30 '13 at 13:30
  • 1
    Wow, I need to check out the installed addons more. Its support level is Testing, filtered off by default in my install. Thanks for pointing that one out :) – Adhi May 30 '13 at 13:48
  • 1
    @Gwenn: It wasn't included in 2.66a. In fact, not a single addon with support level Testing is included before 2.67 IIRC (it's there by the heapload in 2.67a). – Adhi May 31 '13 at 00:00
  • @Adhi I can't find it in 2.67a. Even with "testing" checked. – Daniel Jun 02 '13 at 16:30
  • Testing addons are never in releases, they need to be approved first. - Contact bf-python mailing list to suggest inclusion. – ideasman42 Jun 02 '13 at 17:17
  • I don't know Blender's policy about this, but I downloaded blender-2.67a-linux-glibc211-i686.tar.bz2 fresh off download.blender.org and there they are in scripts/addons_contrib. All 4.2MBs of it, including render_auto_save.py. Maybe something went wrong with 32bit Linux release? – Adhi Jun 02 '13 at 20:07
  • I've just downloaded 2.67b, and addons_contrib is no longer included. So it's not supposed to be there in the first place... :D – Adhi Jun 02 '13 at 23:20
11

The closest thing to logging a render in Blender is to render to different slots. Each slot can store a different render for comparisons etc. In the Image Editor, there is a popup menu in the header that has 8 different slots that you can render to. Before rendering, choose a slot. ( You can also quickly cycle through these by using AltJ for the previous render slot and J for next render slot.)

enter image description here

As for the second part, there is a Stamp pane in the Render tab that you can use to attach the date, time and render time etc to your render.

enter image description here

iKlsR
  • 43,379
  • 12
  • 156
  • 189
  • stamp is acceptable, but unfortunately not a greatly customizable feature at the moment :/ – zeffii May 30 '13 at 08:20
  • 3
    @zeffii, stamp options are written into metadata of EXR/JPEG/PNG files. So if you dont want to see them, you can use a tool to read them back (exrheader command for openexr for example). – ideasman42 May 30 '13 at 11:45
  • @ideasman42 It gets written to the metadata? Then why is there text color and background options? – Daniel Jun 02 '13 at 16:38
  • 2
    @Dan the Man, because Stamp button is pressed, if its not, the metadata still gets written to the file. – ideasman42 Jun 02 '13 at 17:15
  • @ideasman42 So Stamp prints it on to the image, but by default it already gets written to the file? – Daniel Jun 02 '13 at 17:48
  • 1
    @Dan the Man. correct – ideasman42 Jun 02 '13 at 18:37
  • 1
    @ideasman42 - In what metadata format does Blender store Stamp info in PNGs? I'm struggling to find the RenderTime value with ExifTool – futurehack Jan 14 '15 at 20:14
  • 1
    http://blender.stackexchange.com/a/2653/55 - checked and the metadata is stored and readable. – ideasman42 Jan 14 '15 at 21:14
  • Thanks, I have now found the metadata. For posterity, the process appears to be enable Stamp -> Select tags -> Disable Stamp - > Find metadata info now in PNG header – futurehack Jan 14 '15 at 21:41
5

I had a similar need before and I did a test. By making use of the handlers (bpy.app.handlers), once can define render_pre, render_post, render_complete callbacks on render (bpy.app.handlers.render_pre.append(preRenderFunc), etc.,).

import bpy
from bpy.app.handlers import persistent

@persistent
def PostLoadSession(self):
    print("post load")
    scene = bpy.context.scene
    srrid = 'srrid'
    if srrid not in scene or not scene[srrid]:
        print("Nothing was rendered previously")
    else:
        print('Last image rendered was {0}.{1}.png'.format('RenderResult' ,scene[srrid]))

bpy.app.handlers.load_post.append(PostLoadSession)

@persistent
def PreRender(self):
    print("pre render")
    scene = bpy.context.scene
    srrid = 'srrid'
    if srrid not in scene:
        print('This is the first time you are rendering from this file')
        scene[srrid] = 0
        print('Created {0}'.format(srrid)) 

bpy.app.handlers.render_pre.append(PreRender)

@persistent
def PostRender(self):
    print("post render")
    scene = bpy.context.scene
    srrid = 'srrid'
    if srrid not in scene:
        print('PreRender was not called')
    else:
        scene[srrid] += 1
        print('Saved render result as {0}.{1}.png'.format('RenderResult', scene[srrid])) 

bpy.app.handlers.render_complete.append(PostRender)

You can find more details on my blog post.

http://learningblender3dsoftware.blogspot.in/2012/10/messing-around-with-prepost-handlers.html

The code available on my blog does not actually save the images yet, but it can be easily achievable. I am actually in the process of creating an add-on that saves the images. I hope to release a beta version soon.

satishgoda
  • 8,064
  • 2
  • 18
  • 35