domingo, 1 de julio de 2012

Blender Tutorial - Compilar Blender en Ubuntu 12.10


Blender Tutorial - Compilar Blender en Ubuntu 12.10
Siempre al pensar en compilar un programa nos agarra un dolor de cabeza. El caso de Blender es mucho mas simple, ya que el proceso está mucho mas simplificado y la documentación es excelente.

Lo primero que vamos a hacer es compilar el python 3.2, que es una tarea muy simple:
    - Buscamos el source de la versión 3.2 en: http://python.org/download/
    - Descomprimimos el archivo donde nos sea mas cómodo.
    - Abrimos terminal y la navegamos el folder con cd.
    - Para mi gusto lo mejor fue instalarlo en /usr/local para lo cual escribimos en la terminal:
        ./configure --prefix="/usr/local"
    - Finalizado esto hacemos:
        make
        sudo make install

Si queremos instalar cuda para usar la tarjeta gráfica (opcional):
    - Bajamos el CUDA TOOLKIT para Ubuntu de http://developer.nvidia.com/cuda-toolkit-40
    - Abrimos una terminal una vez bajado, y tipeamos:
        sudo sh archivoCuda.run
    - Cuando nos pregunte por el path a usar solo tocamos enter.
    - Para versiones modernas de gcc (>4.5) debemos hacer lo siguiente, sinó no anda:
        Del archivo /usr/local/cuda/include/host_config.h  borrar la linea
        #error -- unsupported GNU version! gcc 4.5 and up are not supported!

Bien, ahora vamos a compilar el Blender.
Las librerias precompiladas que se daban aparentemente causaban mas problemas que beneficios, por lo cual se optó por eliminarlas. El proceso va a tener unos pasos mas...

Para comenzar instalamos las siguientes librerias:

sudo apt-get install libpcre3-dev libexpat1-dev libxml2 libxml2-dev
sudo apt-get install subversion build-essential gettext \
 libxi-dev libsndfile1-dev \
 libpng12-dev libfftw3-dev \
 libopenexr-dev libopenjpeg-dev \
 libopenal-dev libalut-dev libvorbis-dev \
 libglu1-mesa-dev libsdl1.2-dev libfreetype6-dev \
 libtiff4-dev libavdevice-dev \
 libavformat-dev libavutil-dev libavcodec-dev libjack-dev \
 libswscale-dev libx264-dev libmp3lame-dev python3.2-dev \
 libspnav-dev yasm libglew1.5  libglew-dev glew-utils  python-pyglew git-core


Con esto listo ya vamos a poder traer el source de Blender:
    - Creamos una carpeta en un lugar que no se modifique y la llamamos "Blender-Svn".
    - Abrimos una terminal y navegamos la carpeta.
    - Pegamos el siguiente texto, y con esto el programa "SubVersion" va a sincronizar nuestra carpeta con el source actual:
        svn co https://svn.blender.org/svnroot/bf-blender/trunk/blender
    - Vamos a ver que se creo una carpeta que se llama "blender", con muchas carpetas dentro.
    - Con esto ya tenemos todo el source y las dependencias.


Ahora vamos a armar Open Image y el Boost, para que funcione el cycles.

Navegamos con "cd" la carpeta donde está el source de blender, y le decimos que...
mkdir boost
cd boost
Hay que conseguir de internet la versión 1_49_0 de Boost http://sourceforge.net/projects/boost/files/boost/1.49.0/ . Cuando lo conseguimos lo metemos dentro del folder que recientemente creamos (boost) y lo descomprimimos.
Con cd entramos en la carpeta boost_1_xx_x

./bootstrap.sh
./bjam -j4 variant=release link=static threading=multi --with-filesystem --with-thread --with-regex --with-system --with-date_time stage install --prefix=../
cd ../..

Ahora... traeremos el OIIO !, entonces ya estamos en el folder paralelo al source, y con el git clonamos el source asi:

git clone git://github.com/OpenImageIO/oiio.git
cd oiio
mkdir -p build/linux
cd build/linux
cmake ../../src/ -DBUILDSTATIC=1 -DBOOST_CUSTOM=1 -DBoost_INCLUDE_DIRS=`pwd`/../../../boost/include/ -DBoost_LIBRARY_DIRS=`pwd`/../../../boost/lib -DBoost_LIBRARIES="boost_date_time;boost_filesystem;boost_thread;boost_regex;boost_system" -DCMAKE_INSTALL_PREFIX=`pwd`/../../dist/linux
make -j4 install
cd ../../..


Si queremos instalar con FFMPEG (recomiendo instalar sin esta libreria y si todo funciona se instala al final).

Bajamos la versión 0.10.4 http://ffmpeg.org/releases/ffmpeg-0.10.4.tar.bz2
Compilamos en donde nos parezca cómodo.
Descomprimimos el archivo.

cd a la carpeta que descomprimimos
./configure --enable-shared
make -j 4
sudo make install

Si todo sale bien seguimos....


Compilamos:
    - Creamos una carpeta dentro de "Blender-Svn" llamada "cmake" (el nombre es solo el que uso yo).
    - Navegamos este folder con una terminal.
    - Dentro de la carpeta "cmake" escribimos esta linea:
        cmake ../blender -DOPENIMAGEIO_ROOT_DIR=../oiio/dist/linux -DBOOST_ROOT=../boost -DBOOST_CUSTOM=1 -DBoost_INCLUDE_DIRS=`pwd`/../boost/include/ -DBoost_LIBRARY_DIRS=`pwd`/../boost/lib -DBoost_LIBRARIES="`pwd`/../boost/lib/libboost_date_time.a;`pwd`/../boost/lib/libboost_filesystem.a;`pwd`/../boost/lib/libboost_thread.a;`pwd`/../boost/lib/libboost_regex.a;`pwd`/../boost/lib/libboost_system.a" -DWITH_CYCLES_CUDA_BINARIES:BOOL=ON -DWITH_FFTW3:BOOL=ON -DWITH_MOD_OCEANSIM:BOOL=ON -DPYTHON_NUMPY_PATH:FOLDERPATH="/usr/include/" -DWITH_OPENCOLLADA:BOOL=ON -DWITH_CODEC_FFMPEG:BOOL=OFF

## Para habilitar el FFMPEG cambiar el OFF por ON


POSIBLES PROBLEMAS

Error libGl: al llegar al 100% devuelve un error de libGl, como si no lo encontrara. Se puede deber a dos cosas: no tener el driver de la placa de video correctamente, o que haga falta el link a el.
Para el último caso se resuelve con el siguiente comando: sudo ln -s /usr/lib/libGL.so.1 /usr/lib/libGL.so


Con esto listo van a encontrar una carpeta llamada "bin" dentro de cmake con el soft compilado.

Un saludo!

1 comentario:

  1. Muchas gracias por el tutorial, en este momento lo estoy siguiendo y compilando todo,

    mi unica queja seria que no se entiende en que folder esta uno a ratos, folder paralelo no tiene mucho sentido a decir verdad, creo que seria mucho mejor postear las rutas y usar texto preformateado para las partes que son terminal.

    De nuevo gracias por el tut, muy util de verdad :)

    ResponderEliminar