O objetivo é usar o Pov Ray para criar uma animação. Como modelo, escolhemos o Cubo de Rubik e criamos um cenário adequado para conter a animação. Para uma breve história sobre o Cubo de Rubik e sua solução, visite http://rico.freeshell.org/rubik_sol.php
Baixe o código-fonte deste trabalho
aqui.
A animação com Pov Ray exigiu um grande esforço computacional, devido à qualidade dos frames necessários para criar a animação. Foram criados 201 frames de 1024x768 pixels utilizando anti-aliasing. Em uma máquina Athlon 700MHz, 384MB RAM, placa de vídeo RIVA TNT 2 com 32MB foram necessárias 32h49min57s para renderizar os 201 frames!!
Os frames foram submetidos ao Adobe Premiere para que fosse gerado um filme no
formato AVI com um frame rate de 50fps. Posteriormente o filme foi convertido
para o formato MPEG-2, reduzindo seu tamanho em quase 10 vezes.
As fases de desenvolvimento foram progressivamente adicionando qualidade ao cenário. Primeiramente foi necessário descobrir como o Pov Ray criava os frames de uma forma automática (já que é possível gerar um a um, mas com um mão de obra grande demais). Após, foram adicionados mais objetos e a cena se completou.
Antes de fazer a animação, foi necessário entender o código-fonte do Cubo de Rubik [1]. Para que fosse possível mover objetos independentes (cada cubinho que forma o cubo maior) foi criada uma matriz 3x3 que continha um cubinho em cada posição.
Cada cubinho é composto de 1 caixa (box), 12 cilindros e 8 esferas. As esferas e os cilindros, quando unidos à caixa (comando union), geram um cubinho bem acabado, com bordas e cantos arredondados. As faces dos cubinhos são compostas por caixas (box) com espessura finíssima e com os cantos arredondados. A aplicação de pigmento e dando um aspecto polido à superfície criou a seguinte imagem:
A chave para criar uma animação com Pov Ray é a palavra-chave clock. Colocando essa palavra no código e ajustando adequadamente o arquivo .INI (que contém as definições para a animação) foi possível criar alguns frames e ver o comportamento:
A mudança brusca de posição é para que as
animações fossem grosseiras de modo que pudessem mostrar suas características
com pouco tempo de renderização.
Sabendo como a animação se processa, apenas dividimos o código para que ele tivesse mais um efeito: o cubo desceria girando para depois começar as transformações. Para isso, basta um "if" que testará se o clock tem um determinado valor ou não. Esse teste divide a animação em duas partes:
As demais partes são compostas pelos frames da terceira fase.
Aqui adicionamos os objetos do cenário: paredes, piso, cadeira, armário, outros cubos e janela. A cadeira e o armário foram objetos tomados emprestados de [2].
As paredes, o piso e a janela foram construídos pela equipe. As paredes e o piso são apenas caixas (box) com uma textura apropriada. A janela foi mais complicada: cada batente e cada divisória é uma caixa com mesma textura da mesa. Um vidro totalmente transparente foi subtraído da parede (operação difference entre objetos) e adicionado o objeto janela (operação union), dando o efeito.
Após todo o tempo que durou a renderização dos frames (32 horas), o filme foi montado. Utilizamos o Adobe Premiere para gerar um AVI, que fora convertido pra MPEG-2 com o WinMPG Video Convert. Infelizmente houve perda de qualidade durante o processo de produção do filme, apesar da qualidade das imagens que o compôs.
A geração de animação em computação gráfica é um tema em amplo desenvolvimento, como é visto nos filmes que são apresentados no cinema, onde, por vezes, fica difícil de distinguir uma cena real de uma gerada por computador.
Fazer uma animação, mesmo com as ferramentas que não são as utilizadas pela indústria cinematográfica, foi uma experiência empolgante. Poder aplicar os conceitos teóricos da Computação Gráfica e visualizar as mudanças de uma forma rápida e fácil estimula a criação de mais objetos e cenários com o Pov Ray. Por curiosidade, há uma referência [3] com muitos objetos gerados pelo Pov Ray, dando chance aos mais entusiasmados para criar cenários dos mais diversos aspectos.