Animação com Pov RayTM  - O Cubo de Rubik

Projeto desenvolvido por:


Visão geral


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

Detalhes de implementação


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.

 


Fases de desenvolvimento


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.

Primeira Fase

        Primeiro estabelecemos o storyboard, ou seja, a seqüência de movimentos que o cubo executaria na animação. Para isso, desenhamos um pequeno cubo no Paint do Windows e o multiplicamos num arquivo Word. Colorindo com lápis de cor e de posse de um cubo real, foi possível montar a seqüência desejada de animação.

 


Segunda Fase

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:

 




Terceira Fase

          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.


Quarta Fase

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.



Quinta 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.

         O ângulo da câmera também fora mudado pra que a perspectiva fosse a mais real possível. O código-fonte pode ser baixado aqui.
       




Sexta Fase

        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.

          E pronto! Baixe o filme e veja.
      

 

Conclusões finais


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.

           

               


Material de referência