nframes: NAT ~ 12; res: NAT ~ 160; -- divides into both 640 and 480 shape: ROPE ~ "3dSqTri.shape"; color: ImagerColor.OpConstantColor ~ ImagerColor.ColorFromGray[0.1]; Command["Install ColorTrix"]; MessageToLog[NIL]; Command["ct clear"]; G3dInterpret.Op["Background: 0.2, 0.2, 0.2"]; G3dInterpret.Op["AntiAliasing: False"]; G3dInterpret.Op[Rope.Cat["ShapeRead ", shape]]; FOR f: INT IN [0..nframes) DO sx: INTEGER _ f*res MOD 640; sy: INTEGER _ Real.Floor[f*res/640]*res; MessageToLog[IO.PutFR["\nFrame %g at (%g, %g)", [integer[f]], [integer[sx]], [integer[sy]]]]; G3dInterpret.OpInts["DisplayRegion", LIST[sx, sy, res-1, res-1]]; { rad: REAL _ 4.0; ang: REAL _ 360.0*f/nframes+5.0; x: REAL _ rad*RealFns.SinDeg[ang]; y: REAL _ -rad*RealFns.CosDeg[ang]; G3dInterpret.OpReals["ShapePosition", LIST[x, y, 0.0]]; G3dInterpret.Op["Render"]; CtMisc.PrintRope[IO.PutFR["%g", [integer[f]]], [sx+res/2, sy+res-10], color]; -- frame # }; ENDLOOP; ¦ This is a test animation file: two polygons with a rotating viewpoint Heckbert, August 11, 1988 12:32:51 pm PDT Bloomenthal, February 15, 1989 9:51:19 pm PST ΚK•NewlineDelimiter – "cedar" style™šœE™EIcode™)K™-—J˜JšœΟkœ˜Jšœœ Οc ˜4Jšœœ˜šœE˜EJ˜—J˜Jšœ œ˜J˜J˜J˜-J˜'J˜/J˜šœœœ˜Jšœœ œ˜Jšœœ˜(Jšœ œN˜]Jšœ%œ˜A˜Jšœœ˜Jšœœ˜ Jšœœ˜"Jšœœ˜#Jšœ&œ ˜7Jšœ˜Jšœœ;ž ˜XJ˜—Jšœ˜J˜—J˜J˜—…—Έ©