Portfolio / Commercial Work /
Michiel de Ruyter
" When the young republic of The Netherlands is attacked by England, France and Germany and the country itself is on the brink of civil war, only one man can lead the county's strongest weapon, the Dutch fleet: Michiel de Ruyter. "
When I was asked to work on this movie after my internship, I was thrilled.
It was a movie about one of the most successful admirals of dutch history. I really loved the opportunity to work on a production like this one. Additionally, a movie of this type and scope had never been produced in the Netherlands before.
Director: Roel Reiné
IMDb: Michiel de Ruyter
Company: Grid VFX
Department: Rigging / TD
Maya, FumeFX, Maya Python API, BitBucket
The movie covers most of the big sea battles of the period during which Michiel de Ruyter was admiral. For those shots we have scenes with sometimes up to 200 ships. Where the smallest ships had 8 cannons the two flagships, the 7 Provinciën of the Dutch and the Royal Charles of the British, had 80 cannons. It would be a extremely tedious job to manually animate the cannons. I was asked to developed a efficient system to automatically trigger the firing of the cannons, controlled by a couple parameters. This way the layout department would be able to quickly go over all the shots without worrying to much about the cannons. The fire rhythm is controlled by attributes that defined: the reload time, maximum interval, seed per ship. Also supplied are attributes to determine which side of the ship is active and the amount of cannons that are active.
I started with using the Maya Python scripting language to develop a prototype of the system. The prototype proved to be promising, except for the fact that it had some performance issues. To overcome this problem, I forced myself to learn the Maya Python API. The main reason to use this API was because it communicates directly with the Maya core, and it was multi-threaded.
Using Maya Python API I created a custom Maya Node. Each cannon had his own 'Cannon Trigger' node. These nodes contained a couple attributes including the reload time and fire attribute. At the frame a cannon fires, a red sphere indicate the cannon firing. A locator snaps to the world position of the cannon and a attached FumeFX cache is triggered. The next event is the motion of the cannon backfiring. After a couple of frames the fume locator starts drifting with the wind direction. Once the cannon is reloaded it rolls back into ready position. Then the cannon fires again. This event sequence loops with a little random factor.