Rendering an animation using indirect illumination (GI) methods that rely on caching samples are known for producing frames that flicker. This is because the samples of each rendered frame are calculated differently, causing different lighting values per frame. To resolve this, an animation can be rendered using a pre-calculated solution where the same sample data is used for every frame. You would pre-calculate both GI methods, commonly the irradiance map and light cache, by choosing multiframe incremental mode for the irradiance map and fly-through mode for the light cache. The irradiance map and light cache combination is effective if you have no moving objects within your animation. So it is advised to be used only when creating fly-through animations.
If you pre-calculate a rendering solution for an object that has a set position for x, y and z. Then move that object to a new x, y and z position, there are no pre-calculated samples in the rendering solution for the new position of the object. Therefore you will notice artefacts and splotches within your render. This combination is a fast solution, compared to rendering using brute force which calculates the samples for every single shaded point separately and independently from other points. Although the result is very accurate and flicker free, it is very slow.
To avoid flickering frames, Vray introduced time-interpolated irradiance maps as part of SP2. The primary function is to reduce the amount of flickering that occurs when using the irradiance map GI method. It works by blending a range of samples from several irradiance maps causing a smoother transition between frames. The range is determined via the interpolation frames parameter.
The use camera path parameter
Whilst time-interpolated irradiance maps solve the majority of flickering, there is still the added flickering from the camera. This happens because the irradiance map is calculated by tracing rays from the camera and as the camera is moving, the rays will be calculated differently for each frame. The use camera path parameter that is part of SP3 alters how the rays are shot from the camera. Instead of shooting them from the current camera position on every frame, it will shoot them for the entire camera path, resulting in the same rays being used for every frame.
Animation prepass, animation rendering mode
This method is completed within two stages. First, a single irradiance map is calculated for each frame using the animation prepass mode, with a few frames before and a few frames after the actual animation range. The second phase is to render the final animation using the animation rendering mode of the irradiance map. You will not need a secondary GI method because it will be part of the first phase.
Animation prepass workflow
Tick use camera path and set the mode to animation prepass. Click save and choose name and location for your irradiance map range. Check that auto save is enabled. There should be no samples calculated because you are doing this for the first time.
*UPDATE* After clicking save, it will not store a file there until you actually press render. You are simply pointing to a location for the save to occur.
In the light cache rollout, tick use camera path and set the mode to single frame. Alternatively, you can pre-calculate the light cache beforehand and use from file, this may save you some rendering time.
IMPORTANT! Once the prepass has been completed you will need to specify the amount of blending between the irradiance maps. So before you render, you will need to decide on how many irradiance maps you wish to blend. This is because it effects your animation timeline range. For example, if you have a blend of 2, this means it will blend 2 frames before and 2 frames after. In order to render frame 5, it will blend frames 3,4,5,6,7. Frame 6 will blend frames 4,5,6,7,8 and so on.
Increasing the number of blending frames reduces the chances of flickering, but this will also increase render times. If you increase the value too much, the result will be over smoothed you will lose detail. That said, frame 0 needs to have frames before it in order to blend correctly. Otherwise frame 0 will have less frames to blend than others, causing irregularities. Set your animation starting frame to –2, this will allow frame 0 to blend –2,-1,0,1,2. Repeat this for your last frame, if you animation ends at 100, set the animation finishing frame to 102.
The animation prepass can be rendered via backburner, previous methods have required you to render locally, putting your desktop out of action whilst it renders. If you do have access to another PC, I recommend using it to render the prepass, note that when rendering the preview window will not display a final result.
Animation rendering workflow
Once you have completed the prepass, you will notice there is now some sample information present. This tells you that it has successfully stored the samples. You can also check by going to your saved location and make sure your full animation range has been saved.
*UPDATE* Select animation rendering mode, it will prompt you to select a file. You must select the file that starts at 0 which in this case is Bouncing_ball.0000.vrmap. This file acts as a call function and will automatically load the entire irradiance map range.
In the irradiance map parameters, you will notice that interp. frames is not greyed out anymore. This setting determines the amount of frames that are to be blurred. The animation range is –2 to 102, so 2 would be correct. If you wish to blend 4 frames then set this to 4 but remember that you will be increasing the render times. You can also lower the interp. samples, when calculating in single frame mode. Interp. samples control the amount of GI samples from each irradiance map that will be used to interpolate the indirect illumination.
Since we are using several irradiance maps per frame, leaving this at 20 would be unnecessary and would increase render times. As the value depends on your interp frames, try a value of 5, do a test render and if the result is less than satisfactory then choose a higher value. From experience, most interior animations require a value of 10 – 12. Use camera path has no effect anymore. So having this on or off for the irradiance map does not matter.
You now have two options depending on your workflow, if you have rendered your animation with use light cache for glossy rays ticked, you will need to leave your light cache as the secondary GI engine. Keep it in single frame mode and have use camera path ticked. If you have rendered without use light cache for glossy rays, disable the secondary GI engine leaving only the irradiance map as the primary GI engine. You can do this because the secondary GI data has been stored in the primary GI engine via the irradiance map prepass.
Rendering the final output
Set your animation range to 0 – 100. You do not want to render the frames outside of this range because they will not have the same amount of samples from the prepass. You will now have a flicker free animation.
If you have any questions about this post feel free to leave a comment and I will do my best to answer as soon as possible.