How to produce 90 seconds of HD animation in just 3 weeks
Powell Dobson Visualisation were asked to produce a 90 Second animation for the exciting ‘Afan Valley Adventure Resort’ in South Wales, UK.
Head of Visualisation Will Morris tells us how.
The client gave us a very tight three-week deadline to design and produce an animation of their four different themed lodges types to show off to potential investors. With a team of three I knew it would take us almost three weeks to complete all the modelling. This timeframe left no time to render the animation in-house; it would take roughly 2-3 weeks on our internal render farm. With 2250 frames at roughly 50mins per frame (dual Xeon) at 1080p, the only way to render the animation was through a cloud render solution or online render farm. This was a first time experience for me, and something I have always been nervous of. This breakdown will talk through how we created one of the scenes and what we had to do to control render times, whilst ensuring it rendered glitch free.
• 3DS Max – Modelling, Lighting, and Animating
• Vray – Rendering Software
• Forest Pack Pro – Scattering Trees, Grass, stones etc
• After Effects – Compositing video together
• Online Rendering – Yellowdog
Firstly, we started by modelling the building (all done in 3DS Max with basic modelling techniques). For this particular project we didn’t have any CAD elevations: only a CAD plan so we imported the plan into Max and pulled the walls up and designed the lodges with our in-house architects as we went along. We also modelled the surrounding ground/terrain; starting off with a flat plane and pushing and pulling to give an uneven rural looking terrain.
Setting Up Cameras
The next stage was setting up the animated cameras. This lodge animation consisted of 5 short 6 second (150 Frame) sequences. With limited time on the project, we didn’t want to spend time modelling something that wouldn’t appear in the animation. So, by setting up the cameras early and agreeing them with the client we only had to model what appeared in the particular view.
As each camera sequence is only 6 seconds (150 Frames), we only wanted to move the camera a short distance which helped to ensure that the camera movement was smooth and slow. In the ‘Time Configuration’ settings we set the frame rate to ‘PAL’ and set the animation to 150 frames which changes the time bar along the bottom. Then to animate the camera, we clicked ‘Auto-key’, on the time bar and slid the marker to frame 150 and then moved the camera. This recorded the camera movement.
We then added 3D furniture and design to the interior spaces. Due to time constraints, we could not model from scratch, so we downloaded the majority of furniture from 3dsky.org
We used a Vraydome light with a HDRI to light the scene and controlled the exposure values with the physical camera.
We then created the surrounding landscaping and vegetation. As this was ‘Alpine lodge’, the client wanted to give it a wintry feel. We used some wintry looking trees from Evermotion and Grass from R&D Group. We looked to Forest Pack Pro to easily Scatter all the trees and grass. Below are all the models we used to create the landscape. To create the landscape we created a number of different scatter groups:
- Back Ground Trees
- Stone/gravel path
- Grass Foreground
- Grass Background
Vray Animation Optimisation
One of the most important things we had to do was optimise the scene to render the animation; the challenge was getting a good balance of Quality vs Render times. We had 2250 frames to render and the longer the render times the more expensive it would be to render it externally. Below are the most important things we always consider when rendering any animation:
- Removing Glossy reflections/Refraction from Tree Leaves, Grass etc – For Still images we usually don’t optimise the trees at all but removing any glossy reflection/refraction for animations can speed up rendering times and make no real difference to the overall quality. I also remove any reflection/refraction from any objects that are far away from the camera.
- Displacement off – I make sure I turn off displacement in the Vraysetting and also ensure there is no displacement maps part of any Vraymaterials. Displacement can seriously slow down your render times.
- Reduce Max depth of Refraction/Reflection – this reduces the number of bounces Vrayhas to calculate for the reflection and Refraction, which can speed up your render.
- VrayProxies and Instances – Make sure you convert any high poly models into a VrayProxy and make sure you instance any duplicates copies.
- Vraysample Rate Render Element- by enabling the Vraysample rate element you can determine what you should set your max subdivisions to.
- Hide anything which does not appear in a particular Camera angle – You don’t want Vraycalculating reflection/refraction etc of an object which does not appear of affect the camera view.
- Ensure there no overlapping touching object surfaces – If you have any flat overlapping surfaces, this can cause unnecessary flickering. Make sure you do a quick check before rendering. • Use light Cache for secondary Bounces – enable ‘use for glossy rays’ and ‘retrace threshold’ to help speed up the calculation of glossy reflections.
- Don’t use a sharpening anti aliasing filter – using a sharpening filter such as catmul rom can increase render times and cause unwanted shimmering in the final output. I always tend to use the ‘Area’ Filter where you get a softer/smoother result.
- Memory Dynamic Limit – set to ‘0’ – Setting this to ‘0’ does not limit the amount of RAM that the render farm will use to render your scene. If you are rendering locally and only have 16GB of ram I would set at 16.
- Reduce Bitmap Sizes – You should always reduce the size of large bitmaps, every time you render a scene Vrayhas to load in these textures. Some objects such as a tree for example can have a leaf texture 10mb in size and 8000x8000px, which is completely unnecessary as we are only rendering at 1920×1080, so the leaf texture only needs to be a few kilo-bites in size and roughly 250×250 pixels. By reducing all the textures in size, you can speed up the load speed.
The longer the frame times the more expensive it is going to be to render it online. Reducing frame times by 5 minutes per frame can have a huge cost saving. It is all about getting a good balance between render quality and frame times. From the minute we finished modelling we had 16 individual sequences to render in 2/3 days with 2250 frames at an average 50 minutes per frame. That equates to 1,875 render hours on a single machine.
The render settings for the animation were pretty much left as the Vraydefaults. The are two methods of rendering, both of which I have used successfully. You can either use Irradiance Map and Light Cache to calculate the GI: you will need to pre-calculate both before rendering the frames. This method is more fiddly and time consuming to set up and you are more prone to make a mistake (e.g forget to tick an important setting) but I find the render times are quicker if you are rendering an animation where only the camera moves.
The 2nd method and the one we adopted for this animation is to use Brute force and Light cache, this method requires almost no set up time, you literally just hit the render button and you get a more accurate rendered result without any worry of errors. The only problem with this method is the render times are higher. As I only had 2 days to render the animation and I did not have time to recalculate the GI for all of the individual sequences, we chose the brute force method. I probably could have brought the cost down of the animation if we had used irradiance map; for speed of set up and peace of mind brute force was the way to go.
When using Brute force, the most important setting which controls the quality vs render time is ‘Noise Threshold’ under the ‘image sampler’ roll out. The lower the noise threshold the better the quality image but the higher the render times. After a number of test renders trying out different values I ended up using the noise value of 0.02, this gave us a good balance of quality vs render time.
Render Farm Check list
Now the scene is ready to render, we had to do one last set of checks to ensure that there are no problems when submitting the job to an online render farm.
- Check Plugins and software compatibility – The first thing you should do is check that you are running the same version of all the software as the render farm. Also check that the render farm supports all the plugins that you use in your scene.
- Ensure all Materials are VrayMaterials – Sometimes when importing 3rd party models they can come with standard or corona materials. Convert any materials that are not into Vraymaterials. This can prevent any further problems.
- Overall size of scene and all its assets – Another reason for reducing the size of all unnecessary large bitmaps, is to reduce the overall scene size. Every time you submit a job to even the easiest to use render farms, it zips up all your scene assets into one folder and uploads it to their server. The smaller the scene and all its assets the quicker it will upload to their server and the quicker it will unzip it onto the render slaves.
- Central assets location – I always collect all bitmaps, IES, Proxies….etc and put them into one central asset folder. It makes it a lot easier to locate any missing bitmaps etc.
- UNC file paths – You should always enable UNC file paths in the assets tracking when network rendering. This will ensure that all the render slaves will find your assets.
- Check save location – An easy mistake to make is forgetting to put a save output on the final rendered frames.
Rendering online with ‘YellowDog’
After we had fully optimised my scene and done all of our checks to ensure the animation will render problem free, it was then time to render it. As mentioned earlier I had never used a render farm before and we were extremely nervous using one; there is always the worry that I could submit something incorrectly and it could all come back wrong without knowing how much support would be available to me.
I came across YellowDog on the approved list of online render farms on the Chaos Group website. The support from the team was incredible; they were available 24/7 and this immediately calmed my nerves. Their simple 3DS Max plug-in was brilliant for submitting jobs to render. When we were ready to render we would click ‘Export’ and the scene would immediately upload to their server and begin rendering. For every sequence, we would submit a number of test frames so that I could check that everything was rendering as it should have been.
YellowDog’s brilliant online interface allowed me to log in and monitor my frames as they rendered which gave me peace of mind as I could check the animation quality in almost real time.
YellowDog rendered the 2250 frames at an average of 50 minutes per frame in the time that I required which gave us a full day to composite all the frames in after effects and send to our client. The animation has been very well received.