O Making-of do segundo applet
A técnica de animação empregada é
trivial, consistindo em carregar em memória uma
série de imagens pré-rendered e
repetidamente exibi-las na tela. Um browser Java
suporta imagens no formato GIF (pronuncia-se "djíif",
não "guíf"). Temos várias
maneiras de apresentar uma animação interessante:
-
simular graficamente algo tangível (dependendo da
seriedade e da autoridade de quem usa, o nome disso varia
de "videogame" a "Realidade Virtual")
-
animar de forma simples um desenho atraente
-
modelar mais ou menos realisticamente (embora não
necessariamente com gráficos
state-of-the-art) algum objeto ou sistema
físico
-
desenhar algo ilegal ou imoral
Como nos faltam recursos, tempo e motivação vamos
usar apenas a segunda alternativa. Portanto a pergunta é
como e o que desenhar. Decidi representar uma
esfera com movimentação restrita às bordas
da janela do applet. Seria interessante animar a
própria esfera ao invés de simplesmente
fazê-la "saltar" pela tela; naturalmente a esfera poderia
ter alguma textura, não sendo de cor uniforme.
Criando uma esfera
O programa Persistence of Vision Ray-Tracer (POV)
é um ray-tracer de fácil acesso e
relativamente completo; a única dificuldade no seu uso
(além de esperar que as imagens sejam geradas) é
entender sua linguagem de descrição de cenas
tridimensionais.
Não é difícil gerar com POV uma imagem
com texturas e efeitos de iluminação. Por
exemplo, este foi meu primeiro exemplo "sério". Note
que devido a limitações de hardware e
remapeamento ou dithering, as cores aqui podem
aparecer distorcidas:
Aplicando uma textura à esfera
Observando o "programa" que descreve a cena para o POV, nota-se
que a descrição da esfera envolve um mapa de
imagem mencionando o arquivo "caf.gif". Isso é
necessário porque POV infelizmente não suporta
texto diretamente - é preciso criar um gráfico
com o texto já gerado em forma de pixels. (
Nota: versões modernas de POV-Ray suportam objetos texto)
Usando PostScript
PostScript é outra linguagem, desta vez de
descrição de páginas bidimensionais. Vamos
usá-la para criar a textura com as letras brancas sobre
fundo azul:
O interpretador GhostScript pode processar um fonte
PostScript e gerar um bitmap com o resultado, ao
invés de imprimir em papel. O resultado, uma vez
convertido em GIF e girado 90 graus, pode ser visto aqui:
Não é que eu seja narcisista, note que a imagem
precisa ser razoavelmente grande para uma
resolução apropriada no processo de mapeamento.
Gerando Imagens
Já vimos o programa em PostScript
para gerar a textura, e o programa em
POV que descreve a cena; falta usar o último para
criar um conjunto razoável de versões da esfera.
Animação consiste em enganar nossa visão
mostrando figuras em seqüência que nossa mente
fundirá numa só; precisamos de um número
grande o suficiente sem ocupar excessiva memória
(afinal, todas as imagens precisam estar disponíveis
simultaneamente para garantir alguma continuidade de
apresentação). Decidimos criar 18 imagens
distintas, girando a esfera em múltiplos de 20 graus.
Basta alterar uma expressão no fonte POV, executar o
ray-tracer, esperar pelo rendering, converter
o resultado em GIF, e repetir tudo de novo mais 17 vezes -
não requer prática nem habilidade, só
paciência. Este é o resultado:

















Ok, eu sei que quatro das imagens são idênticas,
portanto poderia poupar algum trabalho. Mas pensando no caso
geral...
Finalmente, podemos passar à animação
propriamente dita.