/* ** SimpleSpin.fred ** ** $VER: SimpleSpin.fred 1.2.0 (18.11.93) ** ** This program can be run from an InvokeADPro list to spin the current ** frame on the defined axis by the previously defined amount. Note ** that the spin will be centered on the image and encompass the entire ** image. ** ** Clips Imported: ** FREDDirection - Direction of angle adjustments ** FREDFocalLength - Focal length ** FREDPhiRotateIncrement - X axis rotate increment ** FREDGammaRotateIncrement - Y axis rotate increment ** FREDTotalPhiRotateAmount - Amount to rotate X axis ** FREDTotalGammaRotateAmount - Amount to rotate Y axis ** FREDCurrentPhiRotateAmount - Current X axis rotate amount ** FREDCurrentGammaRotateAmount - Current Y axis rotate amount ** FREDCameraZ - Camera Z setting ** ** Clips Exported: ** FREDDirection - Direction of angle adjustments ** FREDFocalLength - Focal length ** FREDPhiRotateIncrement - X axis rotate increment ** FREDGammaRotateIncrement - Y axis rotate increment ** FREDTotalPhiRotateAmount - Amount to rotate X axis ** FREDTotalGammaRotateAmount - Amount to rotate Y axis ** FREDCurrentPhiRotateAmount - Current X axis rotate amount ** FREDCurrentGammaRotateAmount - Current Y axis rotate amount ** FREDCameraZ - Camera Z setting ** FREDOverrideLength - Override length parameter flag ** (if 1, override the Length) ** ** NOTE: Clip names are case sensitive. ** ** This script requires FRED v1.4.0 (or higher) to run. Also required is ** ADPro v2.5.0 (or higher) or MorphPlus v1.3.0 (or higher). ** ** Copyright © 1992-1993 Elastic Reality, Inc. ** All Rights Reserved */ ADDRESS "ADPro" OPTIONS RESULTS NL = '0A'X SQ = '27'X DQ = '22'X TRUE = 1 FALSE = 0 PARSE ARG FrameNum FrameFName Length LoadFlag FirstCallSeq FirstCallCell /* ** Get the required clips. Error if any are missing. */ PhiRotateIncrement = GETCLIP( "FREDPhiRotateIncrement" ) IF (PhiRotateIncrement = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDPhiRotateIncrement," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END GammaRotateIncrement = GETCLIP( "FREDGammaRotateIncrement" ) IF (GammaRotateIncrement = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDGammaRotateIncrement," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END TotalPhiRotateAmount = GETCLIP( "FREDTotalPhiRotateAmount" ) IF (TotalPhiRotateAmount = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDTotalPhiRotateAmount," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END TotalGammaRotateAmount = GETCLIP( "FREDTotalGammaRotateAmount" ) IF (TotalGammaRotateAmount = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDTotalGammaRotateAmount," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END Phi = GETCLIP( "FREDCurrentPhiRotateAmount" ) IF (Phi = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDCurrentPhiRotateAmount," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END Gamma = GETCLIP( "FREDCurrentGammaRotateAmount" ) IF (Gamma = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDCurrentGammaRotateAmount," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END FocalLen = GETCLIP( "FREDFocalLength" ) IF (FocalLen = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDFocalLength," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END Direction = GETCLIP( "FREDDirection" ) IF (Direction = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDDirection," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END CameraZ = GETCLIP( "FREDCameraZ" ) IF (CameraZ = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDCameraZ," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END /* ** See what type of data is loaded in ADPro/MorphPlus. */ CALL "FREDSCRIPTS:FREDFunctions/CheckForRawImageData" TRUE IF (RESULT ~= 0) THEN EXIT 10 /* ** Do the Perspective operation */ IF FirstCallSeq = 1 THEN DO /* Set up some first time variables */ XSIZE X = ADPRO_RESULT YSIZE Y = ADPRO_RESULT CameraZ = X /* Z starts out at full screen */ END OPERATOR "PERSPECTIVE", "CAMERA_POSITION" 0 0 CameraZ, "FOCAL_LENGTH" FocalLen, "GAMMA" Gamma, "PHI" Phi IF RC ~= 0 THEN DO Why = ADPRO_RESULT ADPRO_TO_FRONT OKAY1 "The operator PERSPECTIVE" || NL ||, "failed to execute." || NL ||, Why SCREEN_TO_FRONT "FRED" EXIT 10 END /* ** Update the variables. */ SETCLIP( "FREDCurrentPhiRotateAmount", (Phi + (Direction * PhiRotateIncrement)) ) SETCLIP( "FREDCurrentGammaRotateAmount", (Gamma + (Direction * GammaRotateIncrement)) ) SETCLIP( "FREDFocalLength", FocalLen ) SETCLIP( "FREDTotalPhiRotateAmount", TotalPhiRotateAmount ) SETCLIP( "FREDTotalGammaRotateAmount", TotalGammaRotateAmount ) SETCLIP( "FREDPhiRotateIncrement", PhiRotateIncrement ) SETCLIP( "FREDGammaRotateIncrement", GammaRotateIncrement ) SETCLIP( "FREDDirection", Direction ) SETCLIP( "FREDCameraZ", CameraZ ) SETCLIP( "FREDOverrideLength", 1 ) EXIT 0