# Makefile para exercícios de animação com POV-Ray # Last edited on 2007-04-19 00:19:34 by stolfi # Para cada novo exercício, crie um novo sub-diretório na sua # área Linux, e copie para ele este Makefile. # O nome do arquivo principal da descrição sua cena deve ser # OBRIGATORIAMENTE "main.pov", e a imagem final será "main.gif" # Os parâmetros abaixo definem o tamanho de uma imagem isolada em pixels. # FULLWIDTH = 300 FULLHEIGHT = 400 # Os parametros abaixo definem o tamanho da tela para filme rápido: # MEDWIDTH = 150 MEDHEIGHT = 200 # Os parametros abaixo definem o tamanho da imagem animada: # SMALLWIDTH = 60 SMALLHEIGHT = 80 WIDTH = ${FULLWIDTH} HEIGHT = ${FULLHEIGHT} # Especifique a densidade de raios por pixel linear. # Pode ser NRAYS = 1 para rapidez, NRAYS = 2 para qualidade: # NRAYS = 1 # O valor default da variavel "clock", para geracao de um quadro unico. # IMPORTANTE: use sempre 1 algarismos antes e 4 depois do ponto. # CLOCK = 0.0000 # Liste aqui outros arquivos que fazem parte de seu modelo, como # arquivos "#include" chamados pelo seu ".pov", # imagens usadas em texturas, etc.: # OTHERINPUTS = # O que deve fazer o comando "make" sem parâmetros: # "first", "middle", "last" = quadros isolados. # "strip" = tira com 5 quadros. # "fast" = filme de 5 quadros, acelerado. # "movie" = filme com 21 quadros, vel. normal. # "slow" = filme com 81 quadros, vel. normal. # all: strip # Normalmente, você não deveria precisar mexer nas linhas abaixo: # Diretório onde estão os arquivos da instalação local do POV-Ray POVPUB := ${HOME}/mc930 # Arquivo executável POVRAY := ${POVPUB}/bin/povray # Sub-diretório com bibliotecas de objetos, texturas, etc. POVINC := ${POVPUB}/share/povray-3.5/include # Diretório onde encontrar descrições ".TTF" de fonts POVTTF := ${POVPUB}/share/povray-3.5/tt-fonts # Comando para visualizar as imagens produzidas pelo POV-Ray IMVIEW := display -title '%d/%f' # Comando para converter imagens de um formato para outro CONVERT := convert # Script que efetua a entrega dos programas EXPORT := ${POVPUB}/bin/mc930-export MAIN = main FRAME = ${MAIN}-${CLOCK} # Cuidado: linhas que começam com 8 colunas em branco devem # começar com 1 TAB, e não com SPACEs. .PHONY: all first middle last fast movie single frame export # "make first" mostra o primeiro quadro da animação: # first: ${MAKE} CLOCK=0.0000 single; # "make middle" mostra o quadro central da animação: # middle: ${MAKE} CLOCK=0.5000 single; # "make last" mostra o quadro final da animação: # last: ${MAKE} CLOCK=1.0000 single; # "make strip" mostra filme em forma de tira, com 5 quadros médios: # strip: /bin/rm -f ${MAIN}-?.????.png ${MAIN}-?.????.gif for clock in \ 0.0000 0.2500 0.5000 0.7500 1.0000 ; do \ ${MAKE} CLOCK=$$clock WIDTH=${MEDWIDTH} HEIGHT=${MEDHEIGHT} SHOW='+D' frame; \ done ${CONVERT} +append ${MAIN}-*.*.png ${MAIN}.gif -${IMVIEW} ${MAIN}.gif # "make fast" mostra filme rápido (velocidade × 4) com 5 quadros médios: # fast: /bin/rm -f ${MAIN}-?.????.png ${MAIN}-?.????.gif for clock in \ 0.0000 0.2500 0.5000 0.7500 1.0000 ; do \ ${MAKE} CLOCK=$$clock WIDTH=${MEDWIDTH} HEIGHT=${MEDHEIGHT} SHOW='+D' frame; \ done ${CONVERT} ${MAIN}-*.*.png -delay 20 -loop 10 ${MAIN}.gif -${IMVIEW} -delay 20 ${MAIN}.gif # "make movie" mostra filme (em velocidade normal) com 21 quadros pequenos: # movie: /bin/rm -f ${MAIN}-?.????.png ${MAIN}-?.????.gif for clock in \ 0.0000 0.0500 0.1000 0.1500 0.2000 0.2500 \ 0.3000 0.3500 0.4000 0.4500 0.5000 0.5500 \ 0.6000 0.6500 0.7000 0.7500 0.8000 0.8500 \ 0.9000 0.9500 1.0000 ; do \ ${MAKE} CLOCK=$$clock WIDTH=${SMALLWIDTH} HEIGHT=${SMALLHEIGHT} SHOW='-D' frame; \ done ${CONVERT} ${MAIN}-*.*.png -loop 10 -delay 10 ${MAIN}.gif -${IMVIEW} -delay 10 ${MAIN}.gif # "make slow" mostra filme (em velocidade normal) com 81 quadros: # slow: /bin/rm -f ${MAIN}-?.????.png ${MAIN}-?.????.gif for clock in \ 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 \ 1.0000 ; do \ ${MAKE} CLOCK=$$clock WIDTH=${SMALLWIDTH} HEIGHT=${SMALLHEIGHT} SHOW='-D' frame; \ done ${CONVERT} ${MAIN}-*.*.png -delay 1 -loop 10 ${MAIN}.gif -${IMVIEW} -delay 1 ${MAIN}.gif # "make single CLOCK=N.NNNN" gera um quadro com o valor de clock especificado: # single: ${MAKE} \ CLOCK=`printf "%6.4f" ${CLOCK}` \ WIDTH=${FULLWIDTH} \ HEIGHT=${FULLHEIGHT} \ SHOW='+D' \ frame showframe # Comandos genéricos usados pelos comandos acima: SHOW = -D frame: ${FRAME}.png showframe: -${IMVIEW} ${FRAME}.png # ${FRAME}.gif: ${FRAME}.png # -/bin/rm -f ${FRAME}.gif # ${CONVERT} ${FRAME}.png ${FRAME}.gif ${FRAME}.png: ${MAIN}.pov ${OTHERINPUTS} -/bin/rm -f ${FRAME}.png ${POVRAY}\ +FN +Q9 \ +W${WIDTH} +H${HEIGHT} \ +AM1 +A0.0 +R${NRAYS} \ +K${CLOCK} \ $${SHOW} +SP32 +EP4 \ +L$${HOME}/lib/povray +L${POVINC} +L${POVTTF} \ +I${MAIN}.pov \ +O${FRAME}.png \ 3>&2 | tee ${FRAME}.log export: ${MAIN}.gif ${MAIN}.pov ${MAIN}-0.0000.png ${OTHERINPUTS} ${EXPORT} ${MAIN}.gif ${MAIN}.pov ${MAIN}-0.0000.png ${OTHERINPUTS} export-home: ${MAIN}.gif ${MAIN}.pov ${MAIN}-0.0000.png ${OTHERINPUTS} ${EXPORT} -tag casa ${MAIN}.gif ${MAIN}.pov ${MAIN}-0.0000.png ${OTHERINPUTS}