# Last edited on 2019-04-17 03:51:11 by stolfilocal ###################################################################### # Creates a animation ".gif" file. # Caller must define ${NAME}, ${TAG}, ${WIDTH}, ${HEIGHT}. # The ${TAG} should be "f" for fast movie, "m" for full one. # The root source file will be ${NAME}.pov. # The output frame image files will be ${NAME}-${TAG}-${CLOCK}.png. # The animated gif will be ${NAME}-${TAG}.gif # NAME := NAME.IS.UNDEFINED ifneq "${NAME}" "NAME.IS.UNDEFINED" TAG := TAG.IS.UNDEFINED ifneq "${TAG}" "TAG.IS.UNDEFINED" WIDTH := WIDTH.IS.UNDEFINED ifneq "${WIDTH}" "WIDTH.IS.UNDEFINED" HEIGHT := HEIGHT.IS.UNDEFINED ifneq "${HEIGHT}" "HEIGHT.IS.UNDEFINED" MOVIENAME := ${NAME}-${TAG} MOVIEGIF := ${MOVIENAME}.gif POVFILE := ${NAME}.pov OTHERINPUTS := ${filter-out ${NAME}-%, ${wildcard *.inc pic-*.png }} # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Always make the middle still frame before making a movie: CHECKCLOCK := 0.5000 CHECKTAG := c CHECKPNG := ${NAME}-${CHECKTAG}-${CHECKCLOCK}.png CHECKWIDTH := ${WIDTH} CHECKHEIGHT := ${HEIGHT} ${CHECKPNG}: ${MAKE} -f FRAME.make \ NAME=${NAME} TAG=${CHECKTAG} \ WIDTH=${CHECKWIDTH} HEIGHT=${CHECKHEIGHT} NRAYS=2 \ CLOCK=${CHECKCLOCK} SHOW=YES \ all # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Movie proper: ifeq "/${TAG}" "/f" MOVIERAYS := 1 # Parameters for 24 frames, high-speed MOVIEDELAY := 15 MOVIECLOCKS := \ 0.0000 0.0417 0.0833 0.1250 0.1667 \ 0.2083 0.2500 0.2917 0.3333 0.3750 \ 0.4167 0.4583 0.5000 0.5417 0.5833 \ 0.6250 0.6667 0.7083 0.7500 0.7917 \ 0.8333 0.8750 0.9167 0.9583 endif ifeq "/${TAG}" "/m" MOVIERAYS := 2 # Parameters for 25 frames: # MOVIEDELAY := 10 # MOVIECLOCKS := \ # 0.0000 0.0400 0.0800 0.1200 0.1600 \ # 0.2000 0.2400 0.2800 0.3200 0.3600 \ # 0.4000 0.4400 0.4800 0.5200 0.5600 \ # 0.6000 0.6400 0.6800 0.7200 0.7600 \ # 0.8000 0.8400 0.8800 0.9200 0.9600 # Parameters for 50 frames: MOVIEDELAY := 7 MOVIECLOCKS := \ 0.0000 0.0200 0.0400 0.0600 0.0800 \ 0.1000 0.1200 0.1400 0.1600 0.1800 \ 0.2000 0.2200 0.2400 0.2600 0.2800 \ 0.3000 0.3200 0.3400 0.3600 0.3800 \ 0.4000 0.4200 0.4400 0.4600 0.4800 \ 0.5000 0.5200 0.5400 0.5600 0.5800 \ 0.6000 0.6200 0.6400 0.6600 0.6800 \ 0.7000 0.7200 0.7400 0.7600 0.7800 \ 0.8000 0.8200 0.8400 0.8600 0.8800 \ 0.9000 0.9200 0.9400 0.9600 0.9800 # Parameters for 80 frames: # MOVIEDELAY := 6 # MOVIECLOCKS := \ # 0.0000 0.0125 0.0250 0.0375 0.0500 0.0625 0.0750 0.0875 \ # 0.1000 0.1125 0.1250 0.1375 0.1500 0.1625 0.1750 0.1875 \ # 0.2000 0.2125 0.2250 0.2375 0.2500 0.2625 0.2750 0.2875 \ # 0.3000 0.3125 0.3250 0.3375 0.3500 0.3625 0.3750 0.3875 \ # 0.4000 0.4125 0.4250 0.4375 0.4500 0.4625 0.4750 0.4875 \ # 0.5000 0.5125 0.5250 0.5375 0.5500 0.5625 0.5750 0.5875 \ # 0.6000 0.6125 0.6250 0.6375 0.6500 0.6625 0.6750 0.6875 \ # 0.7000 0.7125 0.7250 0.7375 0.7500 0.7625 0.7750 0.7875 \ # 0.8000 0.8125 0.8250 0.8375 0.8500 0.8625 0.8750 0.8875 \ # 0.9000 0.9125 0.9250 0.9375 0.9500 0.9625 0.9750 0.9875 # Parameters for 100 frames: # MOVIEDELAY := 3 # MOVIECLOCKS := \ # 0.0000 0.0100 0.0200 0.0300 0.0400 0.0500 0.0600 0.0700 0.0800 0.0900 \ # 0.1000 0.1100 0.1200 0.1300 0.1400 0.1500 0.1600 0.1700 0.1800 0.1900 \ # 0.2000 0.2100 0.2200 0.2300 0.2400 0.2500 0.2600 0.2700 0.2800 0.2900 \ # 0.3000 0.3100 0.3200 0.3300 0.3400 0.3500 0.3600 0.3700 0.3800 0.3900 \ # 0.4000 0.4100 0.4200 0.4300 0.4400 0.4500 0.4600 0.4700 0.4800 0.4900 \ # 0.5000 0.5100 0.5200 0.5300 0.5400 0.5500 0.5600 0.5700 0.5800 0.5900 \ # 0.6000 0.6100 0.6200 0.6300 0.6400 0.6500 0.6600 0.6700 0.6800 0.6900 \ # 0.7000 0.7100 0.7200 0.7300 0.7400 0.7500 0.7600 0.7700 0.7800 0.7900 \ # 0.8000 0.8100 0.8200 0.8300 0.8400 0.8500 0.8600 0.8700 0.8800 0.8900 \ # 0.9000 0.9100 0.9200 0.9300 0.9400 0.9500 0.9600 0.9700 0.9800 0.9900 endif MOVIEFRAMES := ${addprefix ${MOVIENAME}-,${addsuffix .png, ${MOVIECLOCKS}}} all: ${CHECKPNG} ${MOVIEGIF} ${MOVIEGIF}: ${POVFILE} ${OTHERINPUTS} -/bin/rm -f ${MOVIEGIF} for clock in ${MOVIECLOCKS} ; do \ ${MAKE} -f FRAME.make \ NAME=${NAME} TAG=${TAG} \ WIDTH=${WIDTH} HEIGHT=${HEIGHT} NRAYS=${MOVIERAYS} \ CLOCK=$$clock SHOW=NO \ all; \ done ./animate-movie-frames.sh \ -delay ${MOVIEDELAY} \ ${MOVIEGIF} \ ${MOVIEFRAMES} @-echo "----------------------------------------------------------------------" @-echo "To watch the movie, open ${MOVIEGIF} with a browser." @-echo "----------------------------------------------------------------------" endif # ${HEIGHT} endif # ${WIDTH} endif # ${TAG} endif # ${NAME} # End ######################################################################