Home » Featured, JScript, NFTS, Photography, Video

Synchronising Nikon D70s for Timelapse

1 July 2009 6,852 views No Comment
This post is one of a series of entries that will be talking about some of the things I did while at the NFTS (2006-7).

A couple of years ago I was asked if I could come up with a system that could shoot a high resolution timelapse sequence. It was a test for a job to supply imagery for a giant multi-screen panoramic display onboard a cruise liner.

The resolution that was needed meant that I would use 2 Nikon D70s side by side to capture the footage. So I needed to trigger both cameras simultaneously to capture each frame of the sequence.

This is the result.
Note that the panning is done in post. This is a “pan and scan” over a single (roughly) stitched image.

As part of my work on Elephants at the NFTS, I’d already done some work on automating a D70 to capture images with control over exposure and aperture, so it was a fairly easy request.

When I wrote the animation capture tool for Elephants, I used the WIA (Windows Image Acquisition) scripting interface to drive the camera. It’s a very simple API that can be easily called from any Windows ActiveX scripting language (JScript, VBScript, etc).

The only problem was synchronising the two cameras.

Writing it the capture tool in JScript caused a problem. There was no way of making a WIA function call to both cameras at the same time. As a result, when running the program, in 50% of cases both cameras would trigger at the same time, otherwise there would be a random delay of anything up to 2 seconds between each shutter firing.

This left only one choice. I had to write a threaded C++ application to trigger the cameras simultaneously. Anyone who’s done any programming in Windows will know that messing around with threads isn’t for the faint hearted, so I wasn’t too thrilled to have to jump in head first. But it seemed to do the trick… most of the time.

Despite my flashy new threaded C++ application, I kept on having small synchronisation issues. Occasionally, there would still be a delay or up to a second between the cameras.

In the end I tracked the issue down to having slightly different memory cards in the camera. As soon as I used identical cards, all my problems went away.

In case you were wondering, I was relieved to find out that after all the hard work, it was still necessary to use the C++ threaded app. I still had sync issues with the script even with the identical memory cards!

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 4.00 out of 5)

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.