Es/Building TerraGear in Ubuntu 64

From FlightGear wiki
Jump to navigation Jump to search

Instalación básica

1.Empezar con una instalación limpia de Ubuntu Hardy 64-bits (también funciona en 32 bits).

2.Configurar correctamente la tarjeta de video, es altamente recomendable que sea una NVIDIA o ATI. (Las pruebas se han hecho sobre la primera, es decir NVIDIA).

   a) Instalar envyng para obtener el último driver de video y sus respectivas dependencias:	
       * sudo apt-get install envyng-gtk
   b) En caso de presentarse problemas con la resolución (usualmente se nos puede presentar una de 640*480), se debe corregir la resolución del monitor.
      Para esto, abrir un terminal y escribir:
       * sudo displayconfig-gtk

3.Instalar los paquetes básicos para acceso cvs y de desarrollo:

       * sudo apt-get install cvs git-core curl automake g++ gcc

4.Ubicar algún directorio donde procederemos a realizar la compilación de todas las aplicaciones y la descarga de las fuentes respectivas

 (Este es un procedimiento de orden más que necesario).

5.Descargar los paquetes en el directorio creado (ejemplo: Scenery_Creator): plib 1.8.5,newmat 11,gpc 2.32:

       * wget [http://plib.sourceforge.net/dist/plib-1.8.5.tar.gz]
       * wget [http://www.robertnz.net/ftp/newmat11.tar.gz]
       * wget [ftp://ftp.cs.man.ac.uk/pub/toby/gpc/gpc232.zip]

6.En simultáneo y abriendo otras sesiones de terminal se puede ir descargando el código de simgear y terragear-cs:

       * cvs -d :pserver:cvsguest@cvs.simgear.org:/var/cvs/SimGear-0.3 login
   (clave: guest)
       * cvs -d :pserver:cvsguest@cvs.simgear.org:/var/cvs/SimGear-0.3 co source
       * git-clone http://mapserver.flightgear.org/git/terragear-cs/

7.Antes de proceder a compilar los paquetes principales debemos entender que el terragear depende del simgear y este a su vez tiene varias dependencias que satisfacer.

 La más complicada es plib que requiere de diversos paquetes y -posiblemente- una modificación en su archivo configure.
       * sudo apt-get install xlibmesa-gl-dev freeglut3-dev glutg3-dev libglut3-dev xorg-dev
   a) Descomprimir el archivo plib y dirigirse al sub-directorio creado.
   b) Opcionalmente: En la linea 6749 del archivo configure debemos quitar el -lXi, cuidando los espacios del caso.
   c) Proceder a la compilación del caso con:
       * ./configure && make
   d) Para instalar la libreria no olvidar que se necesita permisos de administrador:
       * sudo make install

8.Como paso previo a compilar simgear no debemos olvidar instalar los siguientes paquetes:

       * sudo apt-get install libopenal-dev libalut-dev openscenegraph zlib1g-dev libopenscenegraph-dev

9.Nos vamos al directorio donde hemos descargado simgear y ahora lo compilaremos, no sin antes saber que cuando uno emplea un cvs para descargar el código fuente

 se debe generar el archivo configure y esto se hace con:
       * ./autogen.sh
   El archivo configure está creado ahora.
       * ./configure && make
       * sudo make install

10.Para continuar debemos cumplir con 2 dependencias: gpc y newmat. Debemos descomprimir ambos paquetes y dentro de cada directorio:

   a) GPC:
       - Crearemos un Makefile según el archivo README.gpc incluido dentro del directorio terragear-cs. Puedes también copiar y pegar las líneas siguientes:
                       # Unix/Linux makefile for GPC 2.32
                       #
                       # Riley Rainey  (riley.rainey@websimulations.com)
                       CFLAGS = -O -g
                       libgenpolyclip.a: gpc.o
                               rm -f $@
                               ar cr $@ $<
                               ranlib $@
                       clean:
                               rm -f libgenpolyclip.a *.o core *~
                       install: libgenpolyclip.a
                               -mkdir -p /usr/local/lib
                               -mkdir -p /usr/local/include
                               install libgenpolyclip.a /usr/local/lib/libgenpolyclip.a
                               install gpc.h /usr/local/include/gpc.h
       - Modificaremos el archivo gpc.h, buscando y cambiando el valor de DBL_EPSILON por 0.000001
       - Y falta, obviamente, compilar con make e instalar con sudo make install.  Hecho!!!
   b) NEWMAT:
       * make -f nm_gnu.mak
       * sudo cp libnewmat.a /usr/local/lib
       * sudo mkdir /usr/local/include/newmat
       * sudo cp *.h /usr/local/include/newmat
               

11.Finalmente, y antes de proceder con la compilación en sí del terragear-cs, debemos instalar algunos paquetes adicionales con:

       * sudo apt-get install libwxgtk2.8-dev libcurl4-openssl-dev
   Para luego, dentro de su directorio:
       * ./autogen.sh
       * ./configure && make
       * sudo make install

12.Listo, ya podemos hacer uso de terragear.

Pasos opcionales

13.Si queremos emplear el comando photo y de esta manera poder insertar imágenes en nuestra escena, entonces necesitaremos el comando chop.pl:

       * sudo gedit /usr/local/bin/chop.pl:
   Copiar el código siguiente:
               #!/usr/bin/perl
               die "Usage: $0 file xdiv ydiv res\n" if ( $#ARGV != 3 );
                   
               $file = shift @ARGV;
               $xdiv = shift @ARGV;
               $ydiv = shift @ARGV;
               $res = shift @ARGV;
               die "Must start with a .png file\n" if ( $file !~ m/\.png$/ );
               # extract image dimensions
               $info = `file $file`;
               $info =~ s/,//g;
               ($junk, $type, $junk, $junk, $width, $junk, $height, $junk)
                   = split(/\s+/, $info, 8);
               print "$width - $height\n";
               $basename = $file;
               $basename =~ s/\.png$//;
               # convert source image to pnm
               `pngtopnm $basename.png > $basename.pnm`;
               $dx = $width / $xdiv;
               $dy = $height / $ydiv;
               for ( $j = 0; $j < $ydiv; $j++ ) {
                   for ( $i = 0; $i < $xdiv; $i++ ) {
                       print "Paso $i $j\n";
                       $x = $dx * $i;
                       $y = $height - $dy * ($j + 1);
                       $outputpnm = sprintf("$basename%X%X.pnm", $i, $j);
                       $outputsgi = sprintf("$basename%X%X.sgi", $i, $j);
                       $outputrgb = sprintf("$basename%X%X.rgb", $i, $j);
                       printf "Diviendo archivos...\n";
                       printf "pnmcut $x $y $dx $dy $basename.pnm | pnmscale -xysize $res $res > $outputpnm\n";
                       `pnmcut $x $y $dx $dy $basename.pnm | pnmscale -xsize $res -ysize $res > $outputpnm`;
                       printf "Convirtiendo archivos...\n";
                       `convert $outputpnm $outputsgi`;
                       printf "Renombrando archivos...\n";
                       rename($outputsgi, $outputrgb);
                       unlink($outputpnm);
                   }
               }
   Guardar el archivo.
   Instalar unas últimas 2 dependencias que permiten manipular en sí las imágenes:
       * sudo apt-get install imagemagick netpbm

14. Instalar QGIS para mejorar nuestro escenario.

       * sudo gedit /etc/apt/source.list
   Agregar al final:
               deb http://ppa.launchpad.net/qgis/ubuntu hardy main
   Luego no olvidar de:
       * sudo apt-get update
       * sudo apt-get install qgis qgis-plugin-grass