Blogia
mundosimaginados

PovRay y Blender en Google Cloud. Generando vídeo en 4k.

 

Esto que hoy les cuento sirva para documentar mi experiencia de utilización de los servicios de Cloud Computing de Google para el cálculo de imágenes y animaciones con Pov-Ray y Blender.

Los servicios en la nube nos permiten adquirir y utilizar a demanda potencia de cálculo para el renderizado de imágenes y animaciones.

PovRay y Blender son dos proyectos veteranos que se basan en técnicas de raytracing para la generación de imágenes. Su característica principal y común en este caso es que necesitan de una potencia de cálculo elevada. Esto es debido a que los algoritmos de trazado de rayos evaluan cada pixel para decidir el color que se ha de aplicar a la hora de componer la imágen. Además si se aplican técnicas de suavizado la cantidad de cálculos a realizar crece.

Sus versiones más recientes incluyen planteamientos de programación concurrente en hilos para aprovechar los sistemas multitarea y son capaces de aprovechar todos los procesadores que se pongan a su disposición.

Los servicios utilizados que se describen a continuación son de pago se recomienda revisar las tarifas para elegir los servicios de forma adecuada.

Se accederá al Compute Engine desde cualquir cuenta de google accediendo a la cónsola de desarrollador.

Allí hay que crear un proyecto nuevo y una cuenta de facturación. Una vez activado el proyecto se puede ir al Compute Engine y empezar a trabajar. Este tutorial sirve para poner a punto un sistema básico. Aunque es más fácil hacerlo desde la interfaz gráfica.

El sistema se basa en la utilización de servidores en la nube. Para ello se crean instancias que es como se denomina a la máquina que se arrancará para su utilización.

Al arrancar una máquina virtual se pueden configurar una serie de parámetros. El más importante es el tipo de máquina. Pudiendo configurar un hardware con un procesador y 0,6 Gb de memoria principal (por menos de 2 centavos de dolar la hora) hasta un 16 cores con 104Gb de memoria (por 1,3$ la hora).

En mi experiencia la máquina adecuada para el cálculo de imágenes y vídeo en 4k es suficiente la de 16 cores con 14 Gb de memoria. 

Para arrancar la máquina hay que decidir el sistema operativo sobre el que se desea trabajar. Está disponible Debian 7 con una distribución mínima así como RedHat, SuSe e incluso MSWindows.

La elección para mi proyecto ha sido Debian. Los motivos han sido por ser el más parecido a Ubuntu y por ser el de menos planteamiento comercial.

Al lanzar una instancia se puede elegir hacerlo desde una imágen standard de la distribución o desde un disco de una máquina anterior.

Al principio cada vez que borraba una máquina borraba su disco asociado y al crearlas lanzaba un script que instalaba todo el software que iba a necesitar. 

Posteriormente he trabajado sin eliminar el disco asociado a la instancia y asociandolo a una nueva instancia cuando quería volver a trabajar. En este caso se nos facturará por el espacio que ocupa el disco si lo guardamos de una vez para otra. Pero ahorraremos tiempo al lanzar una instancia ya que tendremos el sistema configurado. Además así tenemos la posibilidad de lanzar instancias más modestas para tareas de administración y de transferencia de archivos de imágenes o vídeos y otras más potentes cuando vayamos a lanzar los render.

También existe la posibilidad de crear discos que se pueden adjuntar a la instancia discos para almacenamiento sin sistema que se puedan montar en las instancias que lancemos.

En el sistema recien instalado procederemos a la instalación de librerias y programas:

PovRay no está en los repositorios por lo que habrá que descargarlo y compilarlo. En la web del proyecto hay un documento explicativo, también hay que instalar las librerías necesarias y las utilidades. Aquí se indica lo mínimo a realizar para que funcione:

Actualizar lista de paquetes:

sudo apt-get -y update

Instalar utilidades sistema:

sudo apt-get -y install unzip

sudo apt-get -y install ftp

Instalar librerías:

sudo apt-get -y install build-essential

sudo apt-get -y install libopenexr-dev

sudo apt-get -y install libtiff5-dev

sudo apt-get -y install libjpeg8-dev

sudo apt-get -y install libpng12-dev

sudo apt-get -y install zlib1g-dev

sudo apt-get -y install libboost-dev

sudo apt-get -y install build-essential

sudo apt-get -y install libboost-thread-dev

sudo apt-get -y install autoconf

Instalar utilidades vídeo e imagenes:

sudo apt-get -y install libav-tools

Instalar servidor ftp.

sudo apt-get -y install vsftpd

Instalar Kdenlive

sudo apt-get -y install kdenlive

Instalar Blender desde los repositorios:

sudo apt-get -y install blender

Descargar y descompirmir los fuentes POV-Ray

wget "https://github.com/POV-Ray/povray/archive/3.7-stable.zip"

unzip povray-3.7-stable.zip

Instalación

cd /home/elartista/povray-3.7-stable/unix

./prebuild.sh
cd ..

  ./configure COMPILED_BY="???" 
make
sudo make install

(Es necesario sustituir ??? por el email o web para identificar la compilación como no estandar del software, si no se hace no funciona)

Instalar Blender desde la página del proyecto (se recomienda para aprovechar las mejoras de las últimas versiones):

wget "http://ftp.nluug.nl/pub/graphics/blender/release/Blender2.71/blender-2.71-linux-glibc211-x86_64.tar.bz2"
 

  tar xvjf blender-2.71-linux-glibc211-x86_64.tar.bz2

Los tres programas POV-Ray, Blender y kdenlive funcionan perfectamente desde la cónsola sin necesidad de entrar en el entorno gráfico. Mi forma de trabajar ha sido el hacer las pruebas y ediciones en local y luego subir al servidor virtual los scripts o comandos para lanzar los procesos. He probado a lanzarlos contra el servidor X de mi portátil pero el rendimiento no ha sido satisfactorio.

A continuación incluyo una serie de comandos para lanzar cada programa con los parámetros que he utilizado y que están validados. En mi experiencia POV-Ray aprovecha completamente los 16 cores observandose periodos de tiempo prolongados con el procesador al 1600%. En el caso de Blender aunque en algún caso llega a esos ratios lo normal es verlo sobre 800%. En algunos casos hay que indicarle el número de hilos que la tarea puede utilizar mediante parámetros al lanzar el programa.

Para exprimir la potencia de proceso he generado vídeo en 4k de resolución con un resultado satisfactorio como se pueden ver en los enlaces a los vídeos al final de este post.

Renderizar con POV-Ray con antialias una animación de 2000 imágenes a 4k.

povray +Iarchivo.pov +H2160 +W4096 +A +AM2 +R3 +KFI1 +KFF1999

Generar la animación corespondiente (mp4):

avconv -f image2 -r 25 -i archivo%04d.png  -b 15000k video.mp4

Dependiendo de la cantidad de movimiento puede ser necesario subir el parámetro del biterate -b (hasta 25000 p.e.)

Generar la animación corespondiente (ogv):

avconv -f image2 -r 25 -i archivo.png  -acodec libvorbis -b 15000k video.ogv

Renderizar con Blender usando 16 tareas:

blender -b 3_animacion_hd.blend -t 16 -F PNG -x 1 -a

Generar la animación corespondiente (ogv):

avconv -f image2 -r 25 -i %04d.png  -b 15000k 3_animacion_hd.mp4

La forma más fácil de obtener los archivos de las imágenes o vídeoses depositarlos en un servidor de FTP intermedio y luego descargarlos desde allí a nuestro equipo o conectarse mediante la IP externa del servidor por FTP y descargarlos. 

Con respecto a la seguridad y a la configuración de la red he utilizado las opciones estandard. Lo suyo sería revisar la configuración del linux y del firewall ya que al fin y al cabo no deja de ser un servidor conectado a Internet. Revisando los log después de tener una máquina en marcha durante una noche he detectado algún ataque chequeando puertos del sistema...

Como conclusión indicar que el resultado es completamente satisfactorio. Es cierto que hay que trabajar un poco. Pero una vez que se tiene un disco con el sistema y los programas instalados es bastante fácil lanzar una nueva instancia subir un fichero pov o blender y lanzar los render.

También me ha llevado tiempo ajustar todos los parámetros de las ejecuciones desde la línea de comandos que he incluído más arriba y que así ya temos para nuestros próximos desarrollos.

Con respecto a la cuestión económica la facturación es mensual y el consumo incurrido aparece con un par de días de cadencia. En el extracto indica de forma detallada el tipo de máquina y los minutos que se han utilizado así como los discos que se han utilizado y el tráfico de red que se haya cursado y no estuviera incluído.

 

Povray Amusant 4k video

Blender summer shape.


 

 

 


0 comentarios