[net.graphics] Graphics to VCR, the film alternative

td@alice.UUCP (Tom Duff) (11/03/84)

I worked on the computer graphic sequences in Star Trek II and Return of the Jedi.
In both cases we shot frames directly from the monitor (A Barco CDCT for ST2,
and an E&S Picture System II monitor for RoJ) using more or less ordinary 35mm
animation cameras.  The only unusual requirement is that the camera be able to shoot
single frames at fairly long exposures.  Outboard animation motors are available
for most 16mm movie cameras, so this need not be an expensive proposition.

If you decide not to buy an off-the-shelf integrated monitor/color-wheel/camera
box like those made by Dunn Instruments or Matrix Instrument, you will run
up against a few problems, none of which is particularly insoluble.

The most serious (i.e. hardest to solve) problem is long-term stability.
If it takes you 30 seconds to shoot each frame (not unreasonable given typical disk
transfer rates and exposure times), a 10 second shot will take 2 hours to film.
If the brightness of the monitor varies slightly over a 2 hour period,
you probably won't see it, but when it's compressed to 10 seconds it may be
enough to ruin the shot.  For the same reason, you should mount the camera
on the strongest support you can afford.
A 1 inch thick steel platform with the camera and the monitor bolted to it is about
as good as you might need.  Failing that, get the strongest tripod you can
afford and try to use a ground-floor room with a concrete floor.  The filming
room at Lucasfilm has wall-to-wall carpet over a wooden second-storey floor.
We tried to keep people out of the building (seriously!) when we filmed because
of the floor's instability.  (BTW, I weigh about 300 lbs., which makes me a
first-rate film-room floor tester.)
A pin-registered animation camera is a necessity for professional work, but
may not be required for industrial or academic use.  If the film jitters
too much for your liking, and you're sure your projector is not at fault,
you'll have to bite the bullet and find a pin-registered movement.

The second-most serious problem is shutter bars, which occur when the camera's
shutter is not open for an integral number of frames.  The partial frame will be
be visible as a bar that's exposed more than the rest of the frame.  The only
good way to solve this problem is to synchronize the shutter with the display's
refresh.  We were fortunate at Lucasfilm that refresh was software controllable,
so we could build a simple (4 components -- a 555 timer, a 10 turn pot, a capacitor
and a solid-state relay) camera controller that we could wire in parallel with the
Sonalert beeper on a terminal.  This would open the camera's shutter for a
fixed period of time (settable using the 10 turn pot) whenever a ctrl-g (ascii
BEL) was sent to the terminal.  So, the program that shoots a frame does
the following:
	blank the video
	putchar('\7');	/* beep */
	wait a while for the shutter to open
	unblank the video for a fixed number of refreshes
	blank the video
	wait a while (long enough for the shutter to close)
All of the timing (including the 10 turn pot) gets adjusted manually
until it works.

If you can't synchronize the camera with your refresh, you can only stop the
camera down and hope that the difference between n and n+1 refreshes will
be unnoticable when n is large enough.

The third major problem you will encounter is color compensation.  This is
usually the main cause of the desaturation problem that Dave Martindale
experienced.  Ed Catmull's paper ``Tutorial on Compensation Tables'' in the
Siggraph 78 or 79 proceedings (sorry, I don't have the reference in front of
me, the title or year could easily be different.  Once you find the right
volume, it's the first paper in the proceedings) tells you just about all you
need to know to compensate for the non-linear response of video monitors and
film.  The paper includes the code required to do the computations.  Just type
it in, do the measurements and run the program.

Other things to do include:
1)	Film inside a light-tight enclosure if possible.
2)	If you haven't got a light-tight box, make sure that no light can get
	into the room.  Tape up the cracks around the doors if you have to.
	Make sure that any indicator lamps or LEDs that you can't turn off
	are taped over, and any CRTs that you can't turn off are turned down
	all the way.  A light almost anywhere in a room will reflect off a
	curved screen into the camera.
3)	The light output from a CRT varies strongly with viewing angle.
	If you film from too close up, you will notice that the edges
	of the screen are much dimmer than the middle, because the camera
	views them from a large angle.  Use the longest lens you can and
	shoot from as far away as possible.
4)	Always slate your shots.  Every shot should be prefixed with at least
	a few frames (24 is a good number) containing as much information as
	possible describing the shot.  I always include:
		Monitor used
		Settings of monitor front panel controls
		Camera and lens used
		Film type, reel number, exposure length, f-stop
		Date and time
		Who made the shot
		Shot name and Take number
		Reason for take (e.g. last take aborted, changed exposure, fixed
			bug in rendering code, etc.)
	If you will be editing the film, its a good idea to put a single
	solid white frame (overexposed if possible) immediately before the
	first frame of the take, and immediately following the last.  This
	makes it *much* easier to find the shot when winding the film by
	hand, on rewinds or in a moviola.  If you don't label your takes,
	you will regret it, `maybe not now, but soon, and for the rest of
	your life.'  I have a program that prompts you for slate information
	(it remembers the last slate and re-uses it by default, except for
	incrementing the take number) and draws a slate on the screen.  It
	also saves all slates permanently in a secret place.  It's really easy
	in the heat of production to forget to keep a record of what you did.
5)	If you're doing a lot of shooting, it's a good idea to save it up
	until nighttime, start it running and GO HOME!  More takes are screwed
	up by people interfering than anything else.  Besides, you need the
	sleep (especially close to deadline time.)  Make sure that your
	janitors and security staff know not to go near the film room
	when the door's closed.
6)	Film is cheap.  Time isn't.  If you're not sure of the right exposure,
	run several in a row.  The camera will just sit idle while you're at
	home asleep anyway.
7)	Test early and often.  The feedback loop through the color lab is
	almost always a bottleneck.  If you can overlap color tests with
	software development and image rendering, you can save yourself a lot
	of boredom (or panic) later on.

Contrary to Dave Martindale, getting good images on film isn't that hard.  It
requires patience, attention to detail and a rudimentary understanding of
a lot of things that computer programmers don't normally come in contact with.
But, having done it once, you're set for life.

Actually, there is one problem that can be harder to solve than any other.
Finding a color lab that will process your film repeatably from week to week
can be very difficult if you don't live near New York, Los Angeles or Seattle.
Unfortunately, computer displays are not as forgiving of processing
errors as are natural scenes.  No matter how careful you are, if you
can't trust your color lab, you can't trust your pictures.
A good relationship with a lab that does consistent work is worth its
weight in Tektronix stock certificates.

Goodness, I didn't intend to run off at the mouth like this.  Film is an
important output medium.  16mm film is roughly the same resolution as
RS170a (500 line) video, and is much cheaper to work with.  Motion picture
standards are universal and the equipment to show them is ubiquitous.
Video equipment, especially for large audiences, is unavailable in many venues.
Television standards vary from nation to nation, and conversion from
one standard to another is very expensive (~$400 for a 1 hour NTSC to
PAL transfer, ~$500K to buy the machine to do it) because the market is
extremely small.