Menu Content/Inhalt
Google
 
Inicio arrow Documentacion
Documentacion Imprimir
Documentacion
Ventana3D

Nota: Solo valido para las versiones anteriores a la 0.5, la mayoria de los problemas descritos en esta seccion ya fueron solucionados en la version 0.6

Es un manejador de ventana (window manger) en tres dimensiones , por lo que ademas de mover, cambiar de tamano ,iconificar nos permite rotar, trasladar  en su  eje (x,y,z), dandole una apariencia distinta.
Para ello se aprovecha las capacidades graficas de una tarjeta aceleradora 3D, y las nuevas extensiones del XServer X.org 6.8.0 .


Requisitos (Dependencias):

El programa se ha testeado en una maquina de las siguientes caracteristicas.

AMD 1.8GHz  con 128Mb de memoria
Tarjeta grafica 3D  NVIDIA TNT2 32M    (Aceleracion 3D, primordial).
Se trabajo con una resolucion 1280x1024 a 24 bits  (recomendado).
Memoria swap 200M (Depende de la cantidad de aplicaciones abiertas).


Librerias externas.

*   XServidor X.org 6.8.0 o posterior  X.org
     Es necesario, ya que nos proporciona nuevas extensiones  como Xcompsite, Xrender, Xfixes, Xevie , Xdamage

*  OpenGL   (Si se trabaja con una tarjeta NVIDIA recomendado sus drivers originales  www.nvidia.com

*   Imlib2    (Se utilizo la version 1.0.6    o  posterior)   Imlib2

Instalacion

Descomprimir el archivo aplicar los siguientes comandos

./autogen.sh

./configure

make

make install

Se deben instalar los siguientes archivos en el directorio /usr/local/share/Ventana3D/

/usr/local/share/Ventana3D/doc/*.*
/usr/local/share/Ventana3D/XSERVER/bin/LEEME.txt
/usr/local/share/Ventana3D/XSERVER/bin/X.lg3d-0.7
/usr/local/share/Ventana3D/XSERVER/bin
/usr/local/share/Ventana3D/XSERVER/lib/libX11.so
/usr/local/share/Ventana3D/XSERVER/lib/libX11.so.6
/usr/local/share/Ventana3D/XSERVER/lib/libX11.so.6.2
/usr/local/share/Ventana3D/XSERVER/lib
/usr/local/share/Ventana3D/XSERVER
/usr/local/share/Ventana3D/config/Vt3DConfig
/usr/local/share/Ventana3D/config
/usr/local/share/Ventana3D/cursores/X_luis
/usr/local/share/Ventana3D/cursores
/usr/local/share/Ventana3D/fondopantalla/glass.jpg
/usr/local/share/Ventana3D/fondopantalla/iss.jpg
/usr/local/share/Ventana3D/fondopantalla/london.jpg
/usr/local/share/Ventana3D/fondopantalla/moscu.jpg
/usr/local/share/Ventana3D/fondopantalla/rivera-512.jpg
/usr/local/share/Ventana3D/fondopantalla/suse-default-512.jpg
/usr/local/share/Ventana3D/fondopantalla/suse-verde.jpg
/usr/local/share/Ventana3D/iconos/*.*
 /usr/local/share/Ventana3D/iconos/48x48-general/*.*

...............

 /usr/local/share/Ventana3D/iconos/48x48-general/xv.xpm
/usr/local/share/Ventana3D/imagenes/*.*

.....................................

 /usr/local/share/Ventana3D/modelos/*.*
.................
/usr/local/share/Ventana3D/objetos/ovoide.ase
 /usr/local/share/Ventana3D/objetos
 /usr/local/share/Ventana3D/screenshot
 /usr/local/share/Ventana3D/tga/*.*

..................

/usr/local/share/Ventana3D/xbm/ratonA.c
/usr/local/share/Ventana3D/xbm/ratonA.xbm
/usr/local/share/Ventana3D/xbm
/usr/local/share/Ventana3D/xpm/opera.xpm
/usr/local/share/Ventana3D/xpm
/usr/local/share/Ventana3D/
`

Modo de uso

1.- Se ejecuta el programa en una consola (en modo texto).

2.- Lo mas importante es verificar si existe un servidor X activo, por ejemplo programas como el kdm o algun otro que es un     administrador de window    
     manager, matar los procesos de estos programas y el Servidor X, ya que al tratar de ejecutar el programa ventana3d, no se ejecutara.

3.- Configuracion de l archivo de configuracion  del servidor X.org en /etc/X11/X.org   o  en $Home/X.org  o  /etc/X11/XF86Config . El archivo de
     configuracion utilizado en su distribucion Linux, colocar las extensiones para habilitarlas, auque por defecto el

    script de inicio Vt3d-session los inicia.

Section "Module"
  Load         "glx"
  Load         "dbe"
  Load         "extmod"
  Load         "freetype"
  Load         "v4l"
  Load         "type1"
  Load         "speedo"
EndSection

Section "Extensions"
Option "Composite" "true"
Option "RENDER" "true"
Option "XEVIE" "true"
EndSection

Nota: para los que tienen una tarjeta Nvidia

Section "Device"
  BoardName    "RIVA TNT2 Model 64"
  BusID        "1:0:0"
  Driver       "nvidia"

  Identifier   "Device[0]"
  Screen       0
  VendorName   "NVidia"
Option "AllowGLXWithComposite" "true"
EndSection

Nota: sugiero habilitar la resolucion 1280x1024 a 24bits


Section "Screen"
  Device       "Device[0]"
  Identifier   "Screen[0]"
  Monitor      "Monitor[0]"

  DefaultDepth 24

  SubSection "Display"
    Depth      24
    Modes      "1280x1024" "800x600" "640x480"
  EndSubSection

EndSection


Ejecutar el programa
Ejecutar el script  " Vt3d-session " que inicializara el servidor que se encuentra en /usr/local/bin

Vt3d-session

A todos aquellos que han utilizado el Looking glass es el mismo script de inicializacion de su servidor, he modificado algunas lineas para su ejecucion.

El Servido X

En el codigo fuente incluyo un servidor X  y la libreria libX11.so .

    Servidor X: Proviene del proyecto Looking Glass version 0.70.
    Libreria libX11.so: Proviene del codigo fuente de X.org version 6.8.2, lo he modificado por motivo del cursor, que no es  dibujado correctamente, por el       momento solo se dibuja ulgunos tipos de cursores.
    El proyecto Looking Glass han solucionado este problema.
    Todas las aplicaciones X, utilizan este servidor y esta libreria libX11.so.


El escritorio 3D

La figura No 1 inferior nos muestra las partes del que esta integrada.
Figura No 1

La barra de tareas

Contiene los iconos de las aplicaciones, por ejemplo en este caso son los programas de Nvu y xterm, al minimizar o  al hacer click en dichos iconos
estos maxinimizan o le dan el foco ala aplicacion seleccioanda. Tenemos tambien los iconos Xterm , INICIO ,Screenshot, donde se hace click con el cursor, lo que provoca el lanzamiento de  un terminal X, el despliegue del menu de inicio y finalmente una captura de pantalla, respectivamente. Lo referente a la captura de pantalla se guarda en disco "/usr/local/share/Ventana3D/screenshot" la imagen formada en formato  .ppm, lo cual puede ser leido  por cualquier editor grafico.
Figura No 2

Menu de INICIO

Es un simple menu que se puede acceder mediante el mouse haciendo click con el mouse en el icono INICIO, ala vez se puede acceder por teclado al
presionar  las teclas Crtl + Esc, tambien por la tecla especial al lado dela tecla Ctrl del lado izquierdo. Al mapearse el menu al apretar la tecla Esc lo desmapea o lo esconde.

El menu contiene solo algunos programas y no es configurable.

Menu de ventana

Llamado asi debido que al acceder a este menu con el mouse al hacer click en el boton derecho en el escritorio aparece este menu nos permite acceder a sus funciones 3D Rotacion, traslacion, transparencia y Reset 3D de la ventana que es seleccionada.
Figura No 4

Opciones de la Ventana:

Tipica barra, donde se puede matar,maximizar o minimizar una aplicacion.
Figura No 5

Fondo de pantalla

La imagen que se utiliza como fondo de pantalla esta en formato .jpg y debe tener preferentemente unas dimensiones de ancho=512  alto=512 es decir 512x512, puede trabajar con resoluciones mayores o menores pero el consumo de memoria seria innecesario.Se puede cambiar de fondo de pantalla en el directorio "/usr/local/share/Ventana3D/fondopantalla/" se han colocado alguanas imagenes pero pueden agragarse en este directorio e indicarle al programa modificando el archivo de configuracion   ubicado en :

/usr/local/share/Ventana3D/config/Vt3DConfig.
Para ello solo sustituir la primera Linea por el path de la imagen que se quiere utilizar por ejemplo.
[Background]
/usr/local/share/Ventana3D/fondopantalla/rivera-512.jpg
/usr/local/share/Ventana3D/fondopantalla/glass.jpg
/usr/local/share/Ventana3D/fondopantalla/iss.jpg
/usr/local/share/Ventana3D/fondopantalla/london.jpg
/usr/local/share/Ventana3D/fondopantalla/moscu.jpg
/usr/local/share/Ventana3D/fondopantalla/suse-default-512.jpg
/usr/local/share/Ventana3D/fondopantalla/suse-verde.jpg


Cambiando a:
[Background]
/usr/local/share/Ventana3D/fondopantalla/Mi_imagen.jpg
/usr/local/share/Ventana3D/fondopantalla/glass.jpg
/usr/local/share/Ventana3D/fondopantalla/iss.jpg


*****imagenes*********
/usr/local/share/Ventana3D/fondopantalla/glass.jpg
/usr/local/share/Ventana3D/fondopantalla/iss.jpg
/usr/local/share/Ventana3D/fondopantalla/london.jpg
/usr/local/share/Ventana3D/fondopantalla/moscu.jpg
/usr/local/share/Ventana3D/fondopantalla/rivera-512.jpg
/usr/local/share/Ventana3D/fondopantalla/suse-default-512.jpg
/usr/local/share/Ventana3D/fondopantalla/suse-verde.jpg

Nota: Solo se lee la primera linea las demas no importan.

Uso del Teclado y mouse:

El uso del teclado es importante debido a que realiza el mayor trabajo:

    Alt+F4 = Cierra una aplicacion

    Alt + Tab = Commuta aplicaciones

    Ctrl + Esc = Activa el menu de inicio

    Tecla especial (izquierda) = Activa el menu de inicio

    Esc = Oculta el menu de inicio y el menu de ventana

    Print Screen = Captura de pantalla (screenshot).

    Para funciones 3D

    Ctrl + Shift  (Teclas del lado izquierdo)  Mantener presionadas permanentemente.

Ctrl+Shift Teclas Alfanumericas Rotacion  X
4
6


Ctrl+Shift Teclas Alfanumericas Rotacion  Y
8
2


Ctrl+Shift Teclas Alfanumericas Rotacion  Z
7
3


Ctrl+Shift Teclas Alfanumericas Traslacion  X
Tecla Izquierda
Tecla Derecha


Ctrl+Shift Teclas Alfanumericas Traslacion  Y
Tecla Arriba
Tecla Abajo


Ctrl+Shift Teclas Alfanumericas Rotacion  Z
1
2

Al activar la opcion Reset3D, permite que la aplicacion retorne asu estado inicial, como si se tratase de una aplicacion en 2D, es decir  sin rotacion, traslacion.

El mouse:

Se puede mover, cambiar sus dimesiones, como en un tipico window manager , pero cuando uan aplicacion rota, traslada, solo se puede mover mas no cambiar sus dimensiones.
*Este punto es muy importante, el cursor del mouse solo tien una sola forma debido a que me he visto en la obligacion de modificar la libreria libx11.so  sobre el manejo del cursor debido a que ocasiona distorcion del escenario 3D, al moverse. El program Looking Glass, solucionaron este problema, que aun no he podido determinar como lo han solucionado en su servidor  X LG ,en futuras versiones  este problema se superara.Para ver este problema ejecute el programa xcalc y vera lo que pasa.


Eficiencia:

Como si se tratase de un video juego 3D, requiere una velocidad de proceso alta, mucha memoria fisica y virtual.
La velocidad se ve afectada por la cantidad de aplicaciones activas y las dimensiones de las aplicaciones.

Estabilidad:

Se ve afectada por el tipo de aplicacion a ejecutar existen alguans aplicaciones criticas.
Las extensione Xcomposite , etc , no son tan estables.
* En caso de bloqueo del teclado y congelamiento de la pantalla: Bajo ciertas condiciones ya descritas puede ocurrir una catastrofe,  para ello pueden ver dos soluciones:

Acceder por medio de una red atravez de otra computadora y matar el proceso del Servidor y luego reiniciarlo desde la maquina que
se utiliza para el acceso y matarlo desde esta, para que restituya las funciones correctas del teclado y pantalla.
He utilizado esta opcion varias veces en el desarrollo del proyecto
La otra solucion y no recomendable cuando no se puede acceder por red, no queda otra opcion que resetear la maquina.
La primera solucion por defecto es acceder a modo consola apretando Ctrl + Alt + Tecla de Funcion(F1, F2 ,etc)

Programas que no deben ejecutarse, o tener ciertas precauciones:
1.- Kdevelop: NO he podido determinar porque este programa provoca un bloqueo en pantalla y teclado .
2.-Aplicaciones que utilizen OPENGL como drivers:   
    *Juegos complejos
    *Reproductores de video que utilizen drivers opengl como Xine, gmplayer,kaffeine, La solucion es cambiarles en su  configuracion su driver por "xv" asi       funciona correctamente.
    Nota: Para obtener capturas de pantalla no se obtendra si se utiliza  en Xine por ejemplo el drivers XV, para ello se utiliza el  driver  "shm", pero va    
    muy lento la reproduccion.
3.- El programa que visualiza imagenes "xv", he experimentado cierta lentitud en su uso.

4.- AMSN, este programa como casi todos que estan basados en las librerias Tk, tcl, provocan ciertas dificultades en su uso.

5.-  gmplayer, no funciona correctamente.
 
Mas de Ventana3d Imprimir
MasVentana3d Objetivos del Proyecto

a) Demostrar que el sistema operativo Linux es una plataforma en el que se pueden desarrollar escritorios 3D.


Desarrollo

En el año 2004 me llamo mucho la atencion una utilidad llamada 3ddesktop, esta aplicacion permitia commutar los escritorios virtuales en un escenario 3D algo novedoso  y en ese momento nacio la idea de hacer un escritorio 3D.

Al buscar informacion si existia ya proyectos de este tipo, encontre que ya otros estaban desarrollando proyectos como metisee y posteriormente nacio Looking Glass y XGL.

Al encontrar informacion tecnica del como se desarrollaban esos proyectos, comenze a dudar si valia el tiempo y esfuerzo hacer mi propio escritorio 3D tome la decision de continuar con mi idea original.

Despues de realizar un estudio del codigo fuente de estos proyectos 3D y sobre todo del servidor XFree86, conclui que las extensiones graficas del  server X solo se desarrollo para aplicaciones 2D. Por lo tanto habia una barrera tecnologica que  habia que superar ya se ha modificando el servidor X  y añadiendo extensiones especificas para 3D.

Durante los meses siguientes trate de agregar externsiones 3D al servidor X y ademas saber como implementaban estas esxtensiones los  demas escritorios 3D

El servidor X del escritorio 3D Looking Glass era el que mas se adaptaba a mis necesidades lo cual en su momento tome la decision de usar , ya que hacer mis propias modificacioines en el servidor X me llevaria mas tiempo de lo que creia.

En ese mismo año paso un suceso importante referente al servidor X que utilizaban todas las distribuciones Linux y otros Unix  el XFree86, optaron por cambiar de licencia de la version XFree86 4.4 , este cambio de licencia  chocaba con los principios de la GPL  desde ese momento se adopto lo que es hoy el X.org.

Este cambio favorecio el desarrollo de nuevas capacidades graficas 2D y 3D del servidor X, a lgunas de esas nuevas  extensiones que se usa en Ventana3d son las siguientes:

XComposite: que permite la manipulacion del contenido de las ventanas de cada aplicacion X, lo cual nos permite manipularlo permitiendo poner transparecias , sombras.

Xevent: También conocido como XEvIE es utilizado para el control de eventos del teclado y del mouse ,  al igual q xcomposite nos permite manipular los eventos de las aplicaciones X11.

Con las nuevas capacidades incorporadas en X.org server, ya se tenia lo necesario para comenzar el desarrollo de Ventana3d.

Ventana3d esta divido en dos  partes basicamente:

a) Motor grafico 3D: Esta hecho en OpenGL que permite la creacion de objetos 3D, texturizacion, movimientos, iluminación , sombreado, transparencia, objetos animados, etc.


b)Manejador de ventanas (window manager) : Nos permite el control sobre las aplicaciones X, cualquier programa que se ejecute esta bajo el control del manejador de ventanas, lo cual permite maximizar, minimizar, redimencionar, cerrar programas, manejo de los iconos del escritorio, menus desplegables ,etc.. Ver figura 1
Figura 1. Diagrama de bloques de Ventana3d

Proyecciones
Figura 2.  Motor grafico 3D

La figura 2 nos muestra graficamente cual es la funcion del motor grafico.

a) Cualquier aplicación X (cliente) tiene una representacion en el servidorX en forma de pixmap, lo cual con la extension Xcomposite nos permite redirigir el contenido graficohacia el motor 3d, ademas de los eventos del teclado y el mouse.


b) El pixmap que contiene informacion grafica del cliente es usado como textura del objeto 3D creado.


c) Se crea un objeto 3D, con medidas adecuadas de acuerdo al ancho y alto de la aplicación X ( cliente).


d) Ya obtenido el objeto 3D y la textura se procede al renderizado del objeto  lo cual nos permitira mover, rotar en sus 3 ejes x,y,z.


Situacion Actual

Actualmente su desarrollo esta detenido, la ultima version disponible  corrige algunos fallos en su programacion ademas se agrego algunas utilidades para la configuracion del escritorio usando la libreria QT.

Funciona unicamente en Linux , no ha sido portado a otros sistemas operativos.

Proyecciones

Mejorar el soporte para aplicaciones que utilizan opengl como juegos, reproductores multimedia que usan cotroladores opengl.

Sustituir las librerias QT por librerias escritas en opengl para una mayor integracion y asi desarrollar aplicaciones para la configuracion del escritorio.