Various routines have been provided to allow film producers to add extra effects.
FAIRDS (XIND,FS,FNO,TYP)
This is display routine number 90. If an object is to be moved from one part of a scene to another in a number of frames, and if the amount of movement is the same on each frame, then the object will appear to jerk into motion at the start and jerk to a stop at the end. It is possible to ease-in, at the start by making the first motions very small and steadily increasing the amount of movement. Similarly, it is possible to reverse the process, to ease-out, at the end. This is known as fairing.
FAIRDS will set a fairing value, as a fraction between 0.0 and 1.0, into index variable XIND, given the total number of frames for the fair, FS, and the current frame number FNO. If TYP=0.0, incremental fairing values are calculated, such that the total sum of all values calculated over the given number of frames is 1.0. If TYP=1.0, the value calculated is relative to the start point, so the final value for the last frame would be 1.0.
Example
It is required to move an object a distance d, starting from rest and reaching full speed at the end, in n frames.
Then:
FAIRDS (XIND, n,m,0.0)
will calculate a value such that, for frame m, the object will need to move a distance:
XIND * d
from its position in frame m-1.
FAIRDS(XIND,n,m,1.0)
will calculate a value such that, for frame m, the object will need to be a distance:
XIND * d
from its start point.
For users wishing to obtain the fairing value without using index variables, the FORTRAN function:
FAIR(FS,FNO,TYP)
will return the required value. The arguments of FAIR are the same as the corresponding arguments in FAIRDS.
The following set of routines make use of predefined files saved on a system library. The routine:
GETHI
will load these into store and must be used before any of this set is called. The files all have four-character names ending with :, and use index variables which have the same naming convention. These names should therefore be avoided by the user. This set of routines can only be called from within a file and all assume that the specified region is rectangular and linear. Each routine causes display routines to be saved in the file, which will produce the required effect when obeyed. The example at the end of this section shows how to use them in practice.
ZOOM(R,X,Y,FACT,FR,FAIR)
This provides a zoom, that is, the picture appears to move towards or away from the viewer. The zoom will take place about point (X,Y) in region R, lasting for FR frames. FACT gives the final enlargement factor required (<1,0 for zoom cut). The zoom will be faired if FAIR =1.0.
SPIN(R,FR)
Region R will be rotated through 180 degrees about a vertical axis through the region centre, in FR frames.
FLIP(R,FR)
The same as SPIN, except that a horizontal axis is used.
PAN (R,D,FR,FAIR)
Region R will be moved a distance D from left to right in FR frames (negative D gives right to left motion). FAIR = 1.0 will cause the motion to be faired.
TILT(R,D,FR,FAIR)
The same as PAN, except that motion is upwards (negative D gives downwards).
SQUASH(R,FACT,FR,FAIR)
Region R is changed in the Y direction by a factor FACT (>1.0 for expansion).
SQUEZE(R,FACT,FR,FAIR)
The same as SQUASH, except that the X direction is changed. In a given sequence, none of the above routines may be used more than once, but any combination can be used together.
The next two routines provide a means of replacing one whole picture by another.
WIPE(R,F1,FN01,F2,FN02,FR,TYP)
will replace picture file F1, number FN01, by picture file F2, number FN02, in FR frames. Neither F1 nor F2 may contain ADVFLM orders. WIPE can be used outside a file, and will invoke the sequence list (*9) itself. If used within a file, however, both F1 and F2 should select region R internally. In this case, no other part of the sequence will be affected by the replacement.
TYP indicates the type of replacement required: TYP = 1.0 Right to left, on top of the old 2.0 Left to right, on top of the old 3.0 Top to bottom, on top of the old 4.0 Right to left, pushing the old 5.0 Left to right, pushing the old 6.0 Square out from centre, on top of the old 7.0 Horizontal band out from centre, on top of the old 8.0 Vertical band out from centre, on top of the old 9.0 From top left corner, on top of the old 10.0 Circle out from centre, on top of the old
MVWIPE(F1,FN01,F2,FN02,FR,TYP)
will produce a WIPE between two film files Fl and F2, (files containing ADVFLM), by adding files F1, F2 and two system files to the sequence list. The sequence list will not be started by this routine. Only TYP values 1.0 to 4.0 are available at present. MVWIPE makes use of the current region.
Example
The following produces a box in region 2.0, and then provides a simultaneous zoom and spin in 48 frames.
BOX = ANAME('BGX') STDF(BOX) REGION(2.0) SETXY(10.0,10.0) BOXR(40.0,30.0) ADVFLM REPEAT FIDF(1.0) SPINN = ANAME('SPIN') STDF(SPINN) SPIN(2.0,48.0) FIDF(1.0) ZOOMM = ANAME('ZOOM') STDF(ZOOMM) ZOOM (2.0,25.0,20.0,4.0,48.0,1.0) STOPSQ FIDF(1.0) ADSQLG(BOX,0.0,0.0) ADSQLL(SPINN,0.0,0.0) DRAW(ZOOMM)