martes, 31 de enero de 2012

Blender Tutorial - Compilar Blender en Ubuntu 11.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.
Actualmente para ubuntu igual que para windows los desarrolladores nos proveen de las librerias compiladas, para lo cual vamos a poder saltear como 5 pasos que eran bastante tediosos.

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

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.
    - Volvemos a navegar en otra terminal la carpeta "Blender-Svn" y traemos las carpetas de dependencias:
        Para linux 32:  svn co https://svn.blender.org/svnroot/bf-blender/trunk/lib/linux lib/linux
        Para linux 64: svn co https://svn.blender.org/svnroot/bf-blender/trunk/lib/linux64 lib/linux64
    - Con esto ya tenemos todo el source y las dependencias.


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 -DWITH_OPENCOLLADA:BOOL=OFF -DWITH_CODEC_FFMPEG:BOOL=ON -DWITH_CYCLES_CUDA_BINARIES:BOOL=ON -DWITH_FFTW3:BOOL=ON -DWITH_MOD_OCEANSIM:BOOL=ON ../blender   && make -j4 install


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!

12 comentarios:

  1. gracias por el tuto me tira este error

    [100%] Building C object source/creator/CMakeFiles/blender.dir/buildinfo.c.o
    make[2]: *** No hay ninguna regla para construir el objetivo «/usr/lib/x86_64-linux-gnu/libGL.so», necesario para «bin/blender». Alto.
    make[1]: *** [source/creator/CMakeFiles/blender.dir/all] Error 2
    make: *** [all] Error 2

    ojala y me puedas ayudar

    ResponderEliminar
  2. Si, claro, eso es por que no tenes las librerias de tu tarjeta gráfica. Si tenés nvidia debés usar el software privativo.
    A mi me pasaba lo mismo.

    Un saludo

    ResponderEliminar
  3. Gracias por la respuesta si en efecto tengo Nvidia una gtx460 y los drivers los baje de la ppagina oficial y los instale manualmente y todo funciona bien pero me sigue saliendo el mismo error, gracias

    ResponderEliminar
  4. Cuando lo instalás viste que te pregunta si querés las librerias GL, le decis que si.
    Después de eso borras todos los archivos donde compilaste y haces el cmake de cero.
    Por las dudas volvé a instalar el driver, con el kernel de hoy antes de hacer esto.

    A mi me pasó mucho esto.

    ResponderEliminar
  5. gracias por la respuesta tan pronta, mmm ahora me sale esto.

    /home/leonardo/blender-svn/blender/intern/cycles/kernel/kernel_displace.h(65): Warning: Cannot tell what pointer points to, assuming global memory space
    ptxas info : Compiling entry function 'kernel_cuda_shader' for 'sm_13'
    ptxas info : Used 24 registers, 2840+0 bytes lmem, 24+16 bytes smem, 944 bytes cmem[0], 2868 bytes cmem[1]
    ptxas info : Compiling entry function 'kernel_cuda_tonemap' for 'sm_13'
    ptxas info : Used 7 registers, 48+16 bytes smem, 944 bytes cmem[0], 20 bytes cmem[1]
    ptxas info : Compiling entry function 'kernel_cuda_path_trace' for 'sm_13'
    ptxas info : Used 24 registers, 5100+0 bytes lmem, 44+16 bytes smem, 944 bytes cmem[0], 4428 bytes cmem[1]
    [100%] Built target cycles_kernel_cuda
    make: *** [all] Error 2

    ResponderEliminar
  6. Te está diciendo que hay un error con cuda.
    El toolkit asumo que lo tenés bien.

    Sacale la opción cuda momentaneamente, con esta opción DWITH_CYCLES_CUDA_BINARIES:BOOL=OFF . Compilá y fijate que dice.
    Seguro que con esto anda.

    Después nos fijamos que puede ser, pero ya me imagino.

    ResponderEliminar
  7. un saludo oscurart, como bien mencionas hay otro problemita, aca lo dejo, disculpa las molestias

    [100%] Built target bf_intern_cycles
    Scanning dependencies of target blender
    make[2]: *** No hay ninguna regla para construir el objetivo «/usr/lib/x86_64-linux-gnu/libGL.so», necesario para «bin/blender». Alto.
    make[2]: *** Se espera a que terminen otras tareas....
    [100%] [100%] Building C object source/creator/CMakeFiles/blender.dir/creator.c.o
    Building C object source/creator/CMakeFiles/blender.dir/buildinfo.c.o
    make[1]: *** [source/creator/CMakeFiles/blender.dir/all] Error 2
    make: *** [all] Error 2

    ResponderEliminar
  8. Otra vez el mismo error del libGL, fijate "/usr/lib/x86_64-linux-gnu/libGL.so"
    Probá fijarte si estás instalando bien. No hay duda que sea eso.

    ResponderEliminar
  9. un saludo, muchas gracias por la ayuda lo volvi a hacer pero los mismos resultados con la dichosa libGL.so, entonces busque en mi sistema y efectivamente la tenia pero como libGL.so.1 y solo basto con hacer un enlace simbolico sudo ln -s /usr/lib/libGL.so.1 /usr/lib/libGL.so , y volvi a compilar y listo todo funciona ala perfeccion, muchas gracias oscurart por la ayuda y el tuto,

    talvez ayude si pones lo del enlace simbolico en tu tuto por si amas de a uno nos pasa lo mismo, de nuevo gracias..

    ResponderEliminar
  10. Genial, ahi lo sumo!.Era eso entonces!

    ResponderEliminar
  11. si oscurar de nuevo gracias de pasada buscando en tu blog me inspire y cambiel el splash y el suzanne del preview de materiales, gracias por el tuto

    ResponderEliminar
  12. como abro blender despues de lo hecho

    ResponderEliminar