Rendering Time increases with every Frame
I am new to C4D and while I've been using it for single frame renders for some time I am now tackling my first animation.
It is a rather simple scene: A handful of prerendered 2D characters put onto plane objects as animated textures in a 3d enviroment with a few lights and a camera.
The objects themselves are not moving. The only animated things are the camera, the textures and some chached cloth objects. I am rendering as a png-sequence through the standard renderer.
Now onto the problem:
As soon as I start rendering I see a fairly consistent increase in render time with each new frame rendered (see picture below). This wouldn't be a problem if it were only a small animation, but I still have a good 3,5k frames ahead of me and just letting it run on its own will eventually bring the whole thing to a grinding halt.
Doing some research I have found people with similar problems across the internet (namely here, here, here, here, here and here). Most seem to think it has to do with the GI or AO cache and even though I tried to utilize every bit of information I could find I have now reached a point where I completely removed GI and Ambient Occlusion from my render settings page. The issue persists.
A small workaround has been mentioned in one of the threads where if you restart Cinema 4D the problem seems to reset, but already after the first few new frames it comes back. There is no visible change between the last "old" frames and new frames after a reset.
-Cinema 4D R18
-Windows 7 Prof.
-i7 8700k (not overclocked)
Thanks in advance.
If most of this is flat planes why the need for GI and AO?
Back in the day we didn't have the luxury of these one button miracles, so we had to light things properly. But even with the machines being a few magnitudes of order slower we were rendering faster because we didn't use these processor heavy, er processes.
Can you upload a still and we can suggest what you might change to speed things up?
Also check that your cloth is indeed cached. Before I reread your post, telling you to pre cache your cloth was going to my first suggestion.
Hi, thanks for the quick reply.
I have attached some still frames. As you can see the scene itself isn't actually flat. Just the characters in it are. AO and GI was mainly used for the 3D objects rather than the characters. The cloth simulation is in the big flags on stage. I have double checked their caches and recalculated them.
The characters were prerendered as individual frames and imported as a sequence (I found rendering them as whole movie files made the preview incredibly slower).
haven't read the links in your post but back in that day of slower machines, one thing that could cause an ever increasing render time was an animated texture that was a movie file rather than a sequence of images (particularly if it was compressed with a codec that takes a load of processor to decompress). Every frame C4D must start at the beginning of the file and move to the required frame, it can't just jump to the frame. Any codec you are probably using has spatial and temporal compression, it's the temporal compression that makes it certain you can't jump because there isn't a whole frame there it needs to know what the differences are from preceding frame.
And all this gets worse the longer the animated texture movie is.
if you are using image sequences for those animated textures, then I'm with Steve - need more info.
Given the geometry I think AO is a bit of a time-waste, its not going to add much more than what good shadows would. And while using GI means you don't have to be clever with lights to get the same effect (and you could easily given the simple geometry of the scene), you will certainly slow your render times down with it.
But in fact it might be all the 1 dimensional edges having to be considered by the AO and the GI (and the textures) that are giving you grief. As more of those edges turn to camera it may become harder for the AO and GI to calculate. Both of these features weren't really meant to consider 2 dimensional plane edges in their calculations.
Also - how many cores have you got in that i7? That looks like the recommended chip for AE where it wants one big superfast core. Cinema prefers many cores.
How big are your textures? They only need to be as big as they will ever get in the render. So if a face only ever gets 100 pixels high in the render then the texture only needs to be 100 pixels high as a texture - anything more is a waste of ram (double that if you are using best antialiasing). I'm wondering if the textures are too big and because they are animated, your ram is getting chocked full. So it has to flush and reload every frame. And jpgs are fine for this kind of thing. Tiffs or PNGs will add to the memory load.
Finally, if whats in the frame changes considerably during the camera move, more stuff means more time and going from 36 seconds to 45 seconds isn't out of the norm. You may find once it gets to say 100 frames the time plateaus and it doesn't get any worse.
I understand that AO and GI increase my render times drastically and I can certainly see how 2D Planes and edges could give them problems. When I switched them both off I could see a real drop in render time.
The i7 8700k is actually the really fast one, because I mainly work with After Effects instead of C4D. It has 6 physical cores and 12 virtual ones. I planned on using a GPU accelerated renderer for C4D, but I have yet to buy one.
My textures are fairly big, because the camera gets quite close to the characters in the scene (thats why I use the placeholders in the image. The total render of all my characters is roughly 20GB). They are around 3500x4000 pixels.
I went ahead and let it render over night just to see if it does eventually cap off and it does! It seems to average out at 3 or 4 times the initial render time. So if I start rendering at frame 100 it might take 30 seconds the next one 31, then 32 and so on, but if I start rendering from frame 1 the same frames now take roughly 2 minutes when the renderer reaches them. Why is that? There has to be something building up and not getting flushed or some calculation that looks back at previous frames.
Finally about the scene change: I certainly see differences in render time when the camera switches positions, but I can tell you that the problem carries over with a cut. I am not sure if it gets reset after a camera move, but the incremental increase of render time is in every scene.
Update: Since nobody was able to help me and I came across even more threads on the internet without solutions I went ahead and using a bit of coding magic was able to create a workaround that is acceptable for me.
I wrote a powershell script that loads up C4Ds renderer, makes it render a set amount of frames (until the time increase problem gets too much) and automatically closes and restarts it afterwards (resetting the problem). With this you are able to get around the problem with minimal time loss + it gives you all the control that you need. Simply change the first 5 variables to your situation.
This should work. I am still testing it out, but so far I did not have any errors. Thank you anyway for anyone who replied.