Batavia, Illinois                            August 17, 1990

WHAT IS THIS?
 MovieApp is a program that interactively plays movies.   By
"movie", I mean a simple linearly arranged set of bitmap im-
ages.  You can use MovieApp for all  sorts  of  purposes;  I
created  MovieApp  because  I wanted to see my favorite ray-
tracer scenes animated, with the POV, lights, or objects all
moving  around.   Unfortunately, the ray-tracing engine sup-
plied in the NeXT software distribution  wasn't  (and  still
isn't)  fast  enough  on  existing hardware to work in real-
time.  Therefore, I set up a few little programs to generate
.nff  (ray-tracer)  files,  send them through the ray-tracer
engine, and save the .tiff files.  Then MovieApp plays  back
the results, at a more reasonable speed.  Let me stress that
MovieApp itself has nothing to do with ray-tracing; it  just
stupidly plays a set of frames in order.
 MovieApp and all its source code is in the  public  domain.
Use it in any way you wish.  No rights reserved.

THE .MOVIE FORMAT
 A movie file is actually a directory.  That directory  must
have  a file suffix of ".movie".  Inside the .movie directo-
ry, there must a file named "index".  The  index  file  must
have three numbers, like this:

48 48 60

 That particular index file signifies a movie with  a  frame
width of 48, a frame height of 48, with 60 frames.  Continu-
ing this example, there must be 60 TIFF files in the  .movie
directory,  named  "0.tiff",  "1.tiff",  and  so  on  up  to
"59.tiff".  There can be any other files  you  want  in  the
.movie directory, they will be ignored.
 To make the Workspace Manager acknowledge movies  as  open-
able  by MovieApp, put MovieApp in your ~/Apps directory (or
/LocalApps, or /NextApps) and tell the  Workspace  to  "Find
Applications".  A (convenient?) side-effect of doing this is
the Workspace will now treat .movie files just like any oth-
er  file,  instead of as a directory (you can still get into
the .movie directory with command-O).

A FREE BONUS
 A sample movie has been included for your viewing pleasure,
and  as  a demonstration of the kinds of movies you can make
on  the  NeXT  without  any  particular   artistic   talent:
"zoomspin.movie".  It is created by repeatedly ray-tracing a
scene  with  a  gradually  changing  camera  position.   The
movie-creation   code   uses   the   NeXT  version  of  Mark
VandeWettering's ray-tracing engine, located  (in  the  1.0a
release)   at   /NextDeveloper/Demos/Ray.app/MTV_ray_engine.
Creating the movie takes about 15 minutes,  with  my  system
configuration  (your  mileage may vary).  You can create the
movie by typing "make" in the zoomspin.movie directory.

WHY REINVENT THE WHEEL?
 MovieApp uses two excellent classes written by  other  peo-
ple: SliderDualActing (and SliderCellFine), by Andrew Stone,
and Animator, by R. E. Crandall and other folks at NeXT.
 The full SliderDualActing distribution should be  availible
from wherever you got Fun_With_Movies.  The SliderDualActing
documentation is extensive,  with  a  demonstration  program
too.
 Animator   is   in   several    of    the    examples    in
/NextDeveloper/Examples.
 Also, a small piece of code has been  lifted  and  modified
from Carl F. Sutter's ViewGif2 app.

A NEXTSTEP TUTORIAL?
 MovieApp features many NextStep concepts  that  I  consider
"intermediate  beginner": things there isn't time to discuss
at NeXT's Developer Camps, but that would be covered if  the
Camps  could  be extended for another week or two.  Specifi-
cally, MovieApp makes use of multiple .nib files, the Anima-
tor  class,  NXPing(),  miniwindow  icons, (somewhat clumsy)
main window management, and the aesthetics  of  placing  new
document  windows  a  reasonable  distance  from  previously
opened windows.
 I have already begun  writing  an  article  that  discusses
MovieApp  on a method-by-method basis, aimed at the NextStep
programmer who is somewhat familiar with  the  general  con-
cepts,  but  short  on  experience.   Hopefully this article
would be published in NeXT Users'  Journal.   If  you  think
this  is  a  good  idea,  or want to stop me before it's too
late, I can be reached at joerg@alliant.mcs.anl.gov.

Yours in Dobbs,
David S. Joerg
