Is there a way to speed up rendering 'preparation' before each frame of an animation?
SnowSultan
Posts: 3,596
in The Commons
I did an animation render test today and it took about 40 minutes for 5 seconds at 30fps...no complaints at all about the actual frame rendering time, but this probably could have been cut in half or more if it didn't have to 'collect textures' and other pre-rendering tasks before every single frame. Are there any settings or methods that can help reduce or eliminate this happening before each frame is rendered? I doubt it, but I figured I'd ask. Thanks very much.
Comments
Use Iray shaders on any surfaces still using 3Delight shaders, so DS doesn't have to convert them - I don't think it takes a lot of time per iamge, but it may add up over many frames. Try to finalise other things as far as possible, so DS doesn't have to do more than it need (though obviously for an animation you can't bake the modifiers on most meshes to a static prop).
My example didn't have anything unusual or special about it except the figures using subdivision, so there's probably not a lot I can do. I'll try a test with no textures and one with Filament and see if the delays are still there.
edit: Filament renders instantly, amazing...too bad it's...awful. Having no textures does speed things up, but of course that isn't practical.
Here's a trick that I used to use for animations.
When you have your scene set up and ready to start rendering, open the Aux Viewport and enable Iray Preview. Actually you can set up a separate camera just for that Aux Viewport and point it away from your scene so it renders faster, it should still collect all the textures and everything needed for a render. Now, as long as you keep that Aux Viewport Iray Preview open, DS should keep all the scene's textures and geometry loaded in VRAM and it won't unload/reaload them between every frame.
A similar trick is that you can just render one frame of the animation, and keep that window open. It should accomplish the same goal, but I think this method may use extra VRAM.
It's been a long time since I actually used this, so I don't know if it still works with all the changes to Iray.
If you want to see if it's working, you can use MSI Afterburner or CPU-Z to see if it's dumping all the VRAM and reloading between frames.
I always render out one frame, doesn't have to be fully rendered, I stop it once I see an image, and that loads everything up as long as I don't close that window. Then when I render the animation, it just continuously renders and doesn't have to spend time loading everything up. Saves so much time.
I think I've tried this too - at least I might have had an Iray scene open in the Aux Viewport. The reason I don't do it often is that I suspect it uses more VRAM although I have not confirmed this by experiment so I might be way off track with that reasoning.
That sounds great, I will try it when I'm back on Studio later. Thanks very much!
I'm not completely sure if I'm doing it right, but it did go from 3 minutes for 10 frames to 2 minutes, 6 seconds when the Aux Viewport was left open. However, it seems to ignore the Render Range (kept right on going past the frame I set to end on), and it was impossible to cancel the render with the Aux Viewport open (I had to shut it down with Task Manager). Not sure if anyone else can replicate those results, but it does seem to be an improvement. Thanks again!
edit: Rendering with a single frame in a window left open and as an image sequence gave me the same speed (2 min, 6 seconds), but stopped at the right frame. Should be rendering image sequences anyway. Seems to work well, I appreciate it!
or use D|S4.11 if you have it
this information in this thread is useful however if I am using Genesis 9
I haven't run time tests on this but do recall some claiming that if the background is exactly the same for a number of frames; do one render of the background then hide it, and render out everything else with a transparent background. Unite in post.