Dr. Queue com Um Render Farm GNU

Por Alexandre da Silva costa [email protected]

1 Este artigo tem como intuito ensinar como usar o consagrado software de animações, blender com o render farm Dr.queue. Render Farm é um conceito muito próximo do cluster, porém em um cluster as aplicações tem seus processos subdivididos pelas maquinas de uma rede, para que cada uma faça uma parte e entregue o resultado final, tornando o processamento de aplicações complexas muito mais rápidas . No caso do Render farm, não dividimos os processos de uma aplicação, mas sim os quadros de uma animação. Chamamos de quadro as imagens estáticas que serão exibidas, formando uma animação, assim como são feitos desenhos animados convencionais, que serão posteriormente unidas à um arquivo de vídeo que exibirá os mesmos em sequência . Os resultados praticos, se você tiver uma maquina que renderiza uma animação em 2 horas, se tiver outra identica, fara o mesmo serviço em aproximadamente 1 hora, se tiver 8 maquinas o serviço estara pronto em 7,5 minutos e assim por diante.

Para quem não conhece, explicarei o que é renderização. Quando modelamos em um software em 3d usamos sistemas vetoriais para criar nossos modelos, como é feito em programas mais simples como inkscape ou corel Draw, porém em programas 3d usamos sistemas um pouco mais complexos, como opengl, que conseguem gerar vetores 3d para gerarmos nossos modelos, este tipo de técnica necessita de um processador e placa de vídeo razoável para que possamos criar modelos complexos, como seres humanos, animais, prédios, carros. Quando temos reflexo, sombras e brilho, texturas de alta resolução então, então que a coisa fica preta! Poucos supercomputadores conseguem criar a animação em tempo real, imagine qual supercomputador conseguiria criar uma animação igual ao shrek em tempo real? E quem quisesse que ver o filme teria que comprar o supercomputador? Por isso temos a renderização das imagens, que consiste em gerar vários arquivos bitmap (fotos digitais) , que podem ser criadas lentamente por um computador inferior, e depois unidas, e com menor processamento , exibidas em sequência, economizando para quem quer assistir, e tornando possível colocar os filmes em sistemas compatíveis com filmes convencionais, como projetores, fitas de vídeo etc.

Bom então o que faz o Dr. Queue? Ele aproveita da propriedade de programas como blender de usarem além de suas interfaces gráficas para renderizarem imagens e animações , usarem também a linha de comando. Por exemplo, se digitarmos na linha de comando:

#blender -b animacao.blend -s 1

O Comando "blender -b" diz que ele vai renderizar um arquivo, no caso animacao.blend, séra renderizado apenas o frame um, assim como é especificado no parâmetro -s. Para concluir, o arquivo que séra gerado é especificado dentro do arquivo animacao.blend quando ele é gerado no blender, existe no campo renderização o local aonde setamos o destino da renderização. O Drqueue gerencia a colaboração entre as maquinas escravas, A maquina mestre rodando o envia para as escravas um comando semelhante ao comando acima,dentro de um script, porém ele verifica qual frame já foi renderizado e qual maquina esta disponível e envia a tarefa a ela, e continua enviando tarefas as maquinas que terminam seus serviços, ate que a renderização de todos os frames sejam concluídos. Atualmente o Dr.queue também trabalha com Maya, Lightwave, , Blender, BMRT, , , , After Effects, , and , porém nada impede que seja adaptado a outros programas. Tem versões pre compiladas para Debian, windows e Mac OSX.

2 Instalação do Drqueue e Blender:

A instalação do blender é muito simples, bastando descompactar o programa que pode ser baixado em: www.blender3d.org . Por questão de compatibilidade é nescessario copiar o executavel para /usr/bin e também a pasta .blender deve ser copiada junto para que o programa encontre os scripts python e arquivos de configuração que ele nescessita.

O Drqueue pode ser baixado em www.drqueue.org . Para a instalação de Drqueue é nescessario primeiro verificar as dependencias para sua compilação:

● gcc ● g++ ● make ● libgtk (2.0 ou maior) ● libgtk-devel (2.0 ou maior) ● tcsh

É nescessario setar duas variaveis de ambiente, recomendo que coloque as mesmas no / etc/bashrc pois depois de instalado o programa ira nescessitar das variaveis setadas para executar.

#export DRQUEUE_ROOT=”/mnt/shared/drqueue”

/* Essa variavel seta o diretorio de instalação, o diretorio é um exemplo, recomendavel */

#export DRQUEUE_MASTER=”192.168.0.1”

/* Essa variavel seta o endereço de rede da maquina master */

Também é nescessario criar um usuario “drqueue” que sera usado por questão de direitos de acesso, senão o script de instalação não ira compilar os arquivos. Então como root digite:

#useradd drqueue /* não precisa atribuir senha para ele com o passwd*/

A pasta aonde se instala o drqueue deve ser compartilhada e montada em todas as maquinas no mesmo ponto, assim todas as maquinas teram uma pasta /mnt/shared/drqueue que apontaram para a mesma maquina que sera a maquina mestre, para aonde serão enviadas as renderizações. Recomendo fazer o compartilhamento por nfs que é nativo do , caso não saiba faze-lo, tem um otimo tutorial no “viva o linux” de autoria do Fabiano pires : http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=2478

Com tudo nescessario setado basta digitar como usuario root: #make #make INSTROOT=$DRQUEUE_ROOT install

Esta pronto, tudo esta instalado, mas é importante dar permissão de acesso de leitura e escrita a pasta compartilhada para o usuario que for executar o drqueue, senão ele não podera executar nenhum dos aplicativos, que nescessitam escrever em pastas temporarias aonde esta instalado o drqueue.

3 Utilização:

-Para iniciar o mestre usaremos o aplicativo “/mnt/shared/drqueue/bin/master” -Para iniciar o escravo “/mnt/shared/drqueue/bin/slave” -Para enviar um job, usaremos o drqman : “/mnt/shared/drqueue/bin/drqman”

Para verificar se ele reconheceu as maquinas escravas você pode ir à guia Computers:

Nesta guia serão listados todos os escravos. 4 Para iniciar um novo job vá na guia jobs com o botão direito em new job, você vera que com o botão direito também é possivel outras ações como cancelar e deletar um job.

5 Depois aparecera uma nova tela aonde setaremos o arquivo que sera renderizado:

1- Selecione o aplicativo de origem do arquivo a ser renderizado em “kind of job” 2-Selecione o arquivo a ser renderizado em “scene file” 3-Vá para start e and frame e selecione quais frames serão renderizados 4- Vá ao botão create script e o aplicativo ira gerar o script que realmente fara o serviço. 5- Depois vá ao botão submit que enviara o job para o drqueue destribuir.

Na guia name é possivel colocar um nome no job, mas não é obrigatorio.

6 Depois é so monitorar o andamento do job na tela principal, mas você deve marcar a opção de refresh automatico a cada 5 segundos, senão você tera que fazer o refresh manualmente.

Depois que todos os frames tiverem sidos renderizados não hávera mais frames em “left”.

7 Observações sobre o Blender:

O local aonde serão renderizados os frames é setado no arquivo gerado no blender , e não no drqueue, por isso devemos colocar o caminho no arquivo para o diretorio compartilhado na maquina master ,aonde todas as maquinas devem ter direito de escrita. Também o arquivo que sera renderizado deve estar nessa pasta compartilhada, pois o script do drqueue procura em cada uma dessas maquinas, no mesmo caminho o arquivo para que ele seja renderizado localmente. Ou seja se os arquivos que você trabalhar não estivrem nessa pasta compartilhada , quando não der erro na renderização, os mesmos ficaram desorganizados.

Como no exemplo acima , na parte de renderização, na guia output, o primeiro caminho é o do arquivo a ser renderizado, que sera na pasta compartilhada, no caso do drqueue ele renderizara os arquivos em sequencia, recomendo renderizar como uma sequencia de jpg's, que sera facilmente transformado em filme pelo sequenciador do blender, ou qualquer outro editor de video.

Conclusão:

O Blender que já é um software muito interessante, não só pelo custo, quanto pela sua qualidade, se torna um atrativo muito maior com o Drqueue, O custo do serviço de uma animação pode ser consideravelmente diminuido quando o tempo de entrega do mesmo também é, fora a satisfação do cliente em ter um produto em menos tempo, oque é um diferencial competitivo. Coisa que o com o software propietario consumiria uma fortuna, com o software livre nescessita apenas de treinamento e hardware. O preço do 3d max, por exemplo: 3485 Dolares, fora os outros softwares que cada estação tem que ter.

8