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:
  1. simular graficamente algo tangível (dependendo da seriedade e da autoridade de quem usa, o nome disso varia de "videogame" a "Realidade Virtual")
  2. animar de forma simples um desenho atraente
  3. modelar mais ou menos realisticamente (embora não necessariamente com gráficos state-of-the-art) algum objeto ou sistema físico
  4. 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:

Exemplo gerado pelo POV

"Programa" POV que descreve a esfera

>

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:

Mini-programa PostScript que cria a textura

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:

Textura envolvendo a esfera

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:

Frame 1Frame 2Frame 3Frame 4Frame 5Frame 6Frame 7Frame 8Frame 9Frame 10Frame 11Frame 12Frame 13Frame 14Frame 15Frame 16Frame 17Frame 18

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.

Programa Java que implementa o applet

> Sorry, Java not supported!