0
$\begingroup$

Sometimes a render can take several hours. Is there a plugin that will take what I've rendered so far and save it to disk every minute or so? If not, how would I go about making one?

$\endgroup$
5
  • $\begingroup$ But I need to save what's rendered so far during the render. $\endgroup$ Feb 25, 2016 at 18:11
  • $\begingroup$ Then of course functionality of script should be enlargened. I saw this very question on BA and it didn't get any attention. Hard to say if such add-on exists. $\endgroup$
    – Mr Zak
    Feb 25, 2016 at 19:51
  • 1
    $\begingroup$ Maybe have a look at zeffi's tile render, which was designed to render images for poster printing into tiles, which could be stitched together later.. something similar on a smaller scale could help perhaps. $\endgroup$
    – batFINGER
    Feb 26, 2016 at 4:39
  • $\begingroup$ The thing is saving a partially rendered image doesn't help as you will start rendering from the beginning if it fails half way through. If you are rendering an animation then start rendering each frame to disk and make the video when it is finished. Breaking the image into smaller tiles that get stitched together later would be what you want as each piece will then take less time and only the one active at time of failure will need to be redone. $\endgroup$
    – sambler
    Feb 26, 2016 at 16:08
  • $\begingroup$ If it's bad enough I can use render borders. But what if it crashes during compositing? Then it would be really useful. $\endgroup$ Feb 26, 2016 at 16:10

1 Answer 1

1
$\begingroup$

I am not sure if this can be done from within blender while it's rendering. It would require rendering the screenshot while rendering the scene. Something like this could easily be done with a shell script outside of blender.

OSX example:

while true; 
    do screencapture ~/Desktop/img$(date +"%Y-%m-%d-%H-%M-%S").jpg
    sleep 10
done

This would take a screenshot every 10 seconds, so needs some adjustments. And then just cancel with 'Ctrl-C'.

If you only want the script to run for a specific period you could do something like:

end=$((SECONDS+360))

while [ $SECONDS -lt $end ]; 
    do screencapture ~/Desktop/img$(date +"%Y-%m-%d-%H-%M-%S").jpg
    sleep 10
done

This will automatically stop taking screenshots in 6 minutes.

I think Windows looks like this:

:loop
 For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
 For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
 import -window root screen%mydate%-%mytime%.jpg
 timeout /t 10
 goto loop
$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .