VFX: Constructing a muzzle flash

Post-production on Arms Race Escalation is now well underway with multiple strands going at once:

  1. Director Nigel Clegg is working on the first draft edits of the opening and closing episodes.
  2. Actor and stunt choreographer Christopher Puttock is editing the action-focused episodes 3 and 4.
  3. Artist Nigel Potter (who also cameoed in episode 2) is working on numerous matte paintings and vehicle concept drawings.
  4. 3D artist Mark Wickham is creating various CG zeppelins, landing craft and mechs.
  5. Simon Jones is beginning work on a couple of major cloning wide shots from episode 1, which are the only two shots we can confirm at this point will be included in the edit in some form.

I’m going to focus for a moment on that last piece of the puzzle, mainly because Simon happens to be me.

As part of the web series we need a lot of muzzle flashes and squibs. Technically they’re easy to achieve but you want to make sure they look right, as there’s nothing worse than a poorly composited or animated muzzle flash.

Why CG muzzle flashes?

Purists may wonder why we didn’t use ‘proper’ blank-firing weapons to create practical gunfire, especially given we had an entire weekend of pyro at the end of the shoot. There were several reasons for going the CG route:

  1. Happisburgh beach is a public area and we didn’t have the budget or clout to close it off, therefore we had to contend with passers-by and a ridiculous number of off-leash dogs. Not a safe environment to have any kind of firing weapon, even blank-firing movie guns.
  2. For similar reasons, we couldn’t have noisy explosions or gunfire as it would have disturbed the local residents.
  3. The scale of the opening beach sequences in episode 1 would have meant a ridiculous number of muzzle flashes. For consistency, it’s probably simpler to keep it all CG in this case.
  4. We had a very tight schedule and not having to concern ourselves with prepping practical weapons saved a huge amount of time, even if it adds time in post.

Creating a CG muzzle flash

As we’re using FXhome’s HitFilm for the vast majority of visual effects (other than Mark’s 3D modelling work), generating an infinite supply of muzzle flashes is a cinch using its 3D gunfire effect.

For some of the shots in episode 1 I decided to pre-bake a few muzzle flashes with attached smoke elements. This means that after the brief flash of gunfire, there’s a nice puff of smoke lingering in the air. Particularly for long distance shots this helps to sell the effect, which otherwise can be so fleeting that it is entirely missed – particularly during scenes set on a bright day. I also threw on a bit of zoom blur, which makes the whole thing look a bit more dynamic and binds the multiple layers together.

This is what it ends up looking like:

By swapping out different smoke stock, or even using procedural particle smoke, and by simply altering the random seed of the muzzle flash I have access to essentially limitless varieties of muzzle flashes, while retaining a common design focus. In other words, it can look like the gunfire is always coming from the same weapon model, without every muzzle flash looking identical.

This example is for some of the basic rifles. There’s lots more to be designed yet, including a tesla cannon which will be particularly fun.

More updates soon!

The post-production of Arms Race

Arms Race was shot in late summer 2009 and was released in November 2010. For a 5 minute short film, that’s a rather long gestation period.

This is due in part to it being a volunteer project, with the work taking place in evenings and at weekends in small chunks. Such is the way of micro-budget indie filmmaking. Compounding this were the visual effects needs, requiring additional shoots of stunt performers and the miniature robot, the construction of additional props for the cockpit interior and the creation of several matte paintings. All these pieces then needed to be combined into the visited film, plus there was a 5.1 sound mix, a colour grade to be completed and music to be sourced or composed. Even for a short film there are a remarkable number of moving parts.

The miniature shoot

The robot required its own special shoot on a small greenscreen stage. It was as very simple setup, with a ‘lazy susan’ turntable used to make rotating the animatronic creature a little easier. The robot was built on a ‘Robosapien’ chassis, with a completely custom skin giving it a unique appearance for Arms Race. Its actual motor functions remained the same, however, somewhat limiting its performance capabilities. The VFX shots involving the robot were designed to fit around its abilities.

The robot’s faceplate was painted blue as we were still unsure exactly how it would be portrayed – would the pilot be visible through the faceplate, or would it be opaque? What colour would it be? What would it look like from the inside? The blue would make it easy for us to replace it with whatever we wanted once we got to the compositing stage.

Filming two armies

The shot of the armies fighting in the distance, as glimpsed by Clinton through the binoculars, was one of the trickiest shots to conceptualise and execute. It involved several pieces, starting with the miniature greenscreen shoot above as well as a lengthy ‘stunt’ shoot involving different actors flinging themselves around. Multiple shots of the various actors would later be mixed together to give the impression of large squads of British and Russian infantry.

All these different pieces were combined with stock footage of explosions, computer generated muzzle flashes and tracer trails and a matte painting of the battleground (created by Nigel Potter) and several layers of grime representing the binocular lenses to create the final shot.

The edit begins

Tarantino has said that the final draft of a screenplay happens in the movie’s edit. With micro-budget films this can be even more true, with production limitations and resource juggling prompting unexpected tweaks and ┬áchanges.

The editing process is complicated yet further when visual effects are involved, as crucial shots will often not even exist yet, necessitating the use of placeholder which are never really suitable substitutes. First comes the rough cut, a very loose assemblage of the live action footage. Generally unwatchable, this tends to be a meandering sequence of shots lacking any sort of pacing, sound mix or atmosphere of any sort. It would be a long haul before the film began to resemble its finished state and before that the visual effects would need to be completed.


The VFX fell into a few categories: the gatling gun, cockpit interiors, cockpit viewport and the robot itself.

Here’s a frame from one of the gatling gun shots, without any VFX:

First up we have the CG muzzle flash itself, positioned and rotated in 3D to match the barrel’s orientation. We used FXhome’s VisionLab Studio for this, which has probably the easiest and most effective muzzle flash generator you can find.

The appearance and behaviour of the muzzle flash was based on the minigun in Terminator 2, which has a two-part flash consisting of the large spread and forward ejection seen in the image above as well as a thinner, longer ejection without the rear halo.

Although the prop had an authentic rotating barrel it wasn’t able to eject empty shells in a convincing manner. Given the nature of the weapon as presented in the film it looked very unrealistic for it to be firing without any kind of shells being ejected, so some CG shells were composited in:

The bullet chain coming out the side of the gun looked great in the shots showing the weapon being attached to Private Higson. Once the gun started to fire, however, it became rather obvious that the bullet chain wasn’t moving. With the barrel rotating, muzzle flashes roaring away and empty shells ejecting out the opposite side, the stationary bullet chain was breaking the illusion of the weapon being operational.

The solution we arrived at was to apply a variety of distortion and blur filters to give the chain the appearance of undulating, rapid movement. The end result is subtle but certainly helps to disguise the chain’s immobility, especially when seen in motion: