Rendering time (image vs image series vs movie)

Hi all, first approch in 3d animation here (sorry in advance for my english).

I have been trying to render a 6 second animation (just two character, no background... made in half an hour of time) for a week...

Pc spec:
cpu: i9
gpu: rtx 2080
render type: invidia iray
ram: 64 gb

The first time I tried to render it as a movie (after 18 hours I stopped manually, I couldn't take it anymore and I needed the PC).
Then I tried to save the individual frames with various settings finding a good compromise (HD 1280x720): total time 2'30'' time.
So I decided to render all the frames (180) via the "image series" settings. The first frame take around 2:30... but the second... take 15' (???)

How is it possible that by rendering the frames in series the time is so much longer than by rendering them individually? Is a bug?

 

Post edited by Richard Haseltine on

Comments

  • Richard HaseltineRichard Haseltine Posts: 100,747

    Try using the Public Build, https://www.daz3d.com/daz-studio-beta , which has made soem chnages to the way the resources are shuffled after each render to try to remove or at least reduce the dropping to CPU on later frames in animations.

  • Thanks i will try!

  • WOW "image series" seems fixed with that release. Thanks!

  • edited April 2020

    I share what I have done in the hope that it will help someone!

    Rendering a frame of a scene with 2 characters in a furnished house takes about about 15 minutes, no less with my pc (powerful enough, see the spec in first p).

    1. Since the background in my case is static it is useful to render it for all the frames (180), therefore it is rendered only once (12-13 min).

    2. After that, rendering all the frames with the characters (going to remove the background from the scene first). For this I use the "image series" function. (About 2 min per frame: 180 frame total = 6 hours).

    3. Last step is to make a video from that images (characters frames and stage-background image). To make that step is possible to use any proigrams but i prefer line command with ffmpeg (1 min in total this step).

    3a. First, let merge all characters frames with the background image.

    /usr/bin/ffmpeg -i '$stageIMGwithpath' -i '$charactersFrameIMGnamewithpath001' -filter_complex 'overlay' '$outputIMGnamewithpath001.png'
    /usr/bin/ffmpeg -i '$stageIMGwithpath' -i '$charactersFrameIMGnamewithpath002' -filter_complex 'overlay' '$outputIMGnamewithpath002.png'
    /usr/bin/ffmpeg -i '$stageIMGwithpath' -i '$charactersFrameIMGnamewithpath003' -filter_complex 'overlay' '$outputIMGnamewithpath003.png' ...

    For all frames (if you are developer like me, is a simple "for".

    3b. Let a make a movie with all complete (background + characters) frames.

    /usr/bin/ffmpeg -framerate $framerate -r $framerate -i '$outputIMGwithpath%03d.png' -c:v libx264 -vf 'fps=$framerate,format=yuv$dpip' '$outputVIDEOwithpath'

    The bold are params, example:

    $stageIMGwithpath=my-project-path/bg/bg.png $charactersFrameIMGnamewithpath001=my-project-path/characters/frame001.png $outputIMGnamewithpath001=my-project-path/complete-frames/frame001.png $framerate=30 $outputIMGwithpath=my-project-path/complete-frames/frame (the %03d is a var in ffmpeg) $dpi=420 $outputVIDEOwithpath=my-project-path/video.mp4

    So total rendering time with this system for a 6 seconds animation in HD 1280x780 420dpi 30 frame per second (total 180 frames) is 6 hours and 20 mins.Hope can be helpful for someone!

    Edited to fix formatting for forum

    Post edited by Richard Haseltine on
  • Welcome UNIX user :)

    With ffmpeg, you don't need the for-loop. It supports a form of filename globbing:

    -i %04d.png

     

  • RobinsonRobinson Posts: 751
    edited April 2020

    1. Since the background in my case is static it is useful to render it for all the frames (180), therefore it is rendered only once (12-13 min).

    Can I ask, as I'm interesting in any/all tips, is the lighting still "correct" if you composite background and characters like this?  What about shadows on the environment and bounce lighting from characters and to them?

    Post edited by Robinson on
  • Welcome UNIX user :)

    With ffmpeg, you don't need the for-loop. It supports a form of filename globbing:

    -i %04d.png

     

    Thanks for the tip!

    Robinson said:

    1. Since the background in my case is static it is useful to render it for all the frames (180), therefore it is rendered only once (12-13 min).

    Can I ask, as I'm interesting in any/all tips, is the lighting still "correct" if you composite background and characters like this?  What about shadows on the environment and bounce lighting from characters and to them?

    No, the shadows aren't correct. :(
    Anyway, is a good compromise with some precautions

  • Robinson said:

    1. Since the background in my case is static it is useful to render it for all the frames (180), therefore it is rendered only once (12-13 min).

    Can I ask, as I'm interesting in any/all tips, is the lighting still "correct" if you composite background and characters like this?  What about shadows on the environment and bounce lighting from characters and to them?

    I know this is an old thread, but with respect to shadows, I would mention that I have done something similar, but use a "floor mat" to catch the shadows of the figure(s) when rendering the frames without the background.  Also, it seems to me to help to use DOF in rendering the background as the blurring looks more "real" to me.

    I've also witten a program to watch the render directory and overlay the frames as they are created, which is helpful in showing progress, etc., and it also can be set up for left and right eye and create SBS stereo frames as the pairs become available.  I haven't made it available but I could release it on github if there is interest.

    /t

     

Sign In or Register to comment.