Ventana 3D 

GNU/Linux

Web: ventana3d.chileforge.cl

Contacto:

mailto:luis.revilla@gmail.com

mailto:lucho_amez@yahoo.es

Ventana3D

    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 .

Download: ventana3d-Beta-0.2.tgz Version Beta 0.2 


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   www.x.org   

              o  tambien el  XServidor LG de Looking Glasss       http://lg3d.dev.java.net

     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)   www.rasterman.com/raster/imlib.html

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.

escritorio
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.

barra

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.

inicio

Figura No 3

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.

derecho
Figura No 4

Opciones de la Ventana:

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

barra-ventana

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 Flechas Traslacion  X
Izquierda (<---)
Derecha
(-->)

Ctrl+Shift Flechas Traslacion
Y
Arriba
Abajo

Ctrl+Shift Teclas Alfanumericas Traslacion
Z
1
9

Ctrl+Shift Teclas Alfanumerica Reset3D
5

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.

Ventana3D:  Virtudes, defectos , lo que le falta 

*Su gran virtud; personalmente queda demostrado que X.org es el reemplazo natural de XFree86, proporciona nuevas extensiones utilizados actualmente para el desarrollo de los diferentes manejadores de ventanas como Gnome.

*Defectos; Varios:

    -La deformaciones que sufren las ventanas al rotar y  trasladarse, carecen de estetica.

     -No estan implementados correctamente el protocolo de comunicacion cliente-servidor ICCCM, utilizado por los window                    manager para un control total sobre las aplicaciones, nos permite mover,cambiar de dimensiones, matar,etc.

    -La lentitud, su velocidad en la renderizacion, se ve limitada por el tipo de maquina, y la cantidad de aplicaciones ejecutandose.

     -La mayoria de aplicaciones desplegan menus, como se muestra en la figura No 6, en esta version Beta  no esta implementado,       para su correcta  posicion en pantalla.

menu-fuera

Figura No 6-

*Lo que falta:

Ventana3D: Configuracion de los Iconos del Escritorio

escritorio
Figura No 7

El archivo de configuracion ubicado en:

/usr/local/share/Ventana3D/config/Vt3DConfig_Iconos_esc

Permite el agregar y quitar accesos directos a determinadas aplicaciones tiene el siguiente formato:

[ICON_ESCRITORIO]
Ark
/opt/kde3/bin/ark
/usr/local/share/Ventana3D/iconos_escritorio/ark.jpg
[ICON_ESCRITORIO]
Xwpe
/usr/local/bin/xwpe
/usr/local/share/Ventana3D/iconos_escritorio/cara.jpg
[ICON_ESCRITORIO]
Firefox
/usr/local/bin/firefox
/usr/local/share/Ventana3D/iconos_escritorio/mozila.jpg

[ICON_ESCRITORIO] ------> Indicacion de un icono
/opt/kde3/bin/ark  ------->  path correcto del ejecutable
/usr/local/share/Ventana3D/iconos_escritorio/ark.jpg  ----------> path correcto de su icono.jpg

Ventana3D: Configuracion del Menu de inicio

menuconfig
Figura No 8

El archivo de configuracion ubicado en:

/usr/local/share/Ventana3D/config/Vt3DConfig_Menu_Inico

Permite el agregar y quitar accesos directos a determinadas aplicaciones tiene el siguiente formato:

[PROGRAMAS]
#Nombre
Gambas
#Ejecutable
/usr/bin/gambas
#Icono
/usr/local/share/Ventana3D/iconos_escritorio/ok.jpg
#Nombre
Xterm
#Ejecutable
/usr/bin/xterm
#Icono
/usr/local/share/Ventana3D/iconos_escritorio/xterm.jpg
#Nombre
K3b
#Ejecutable
/opt/kde3/bin/k3b
#Icono
/usr/local/share/Ventana3D/iconos_escritorio/k3b.jpg
[Fin]
[INTERNET]
#Nombre
Firefox
#Ejecutable
/usr/local/bin/firefox
#Icono
/usr/local/share/Ventana3D/iconos_escritorio/mozila.jpg
#Nombre
Gaim
#Ejecutable
/opt/gnome/bin/gaim
#Icono
/usr/local/share/Ventana3D/iconos_escritorio/chat.jpg
[Fin]

[PROGRAMAS] ----->Ubicacion en programas
#Nombre  --->Indicacion del Nombre de la aplicacion
Gambas ---> Nombre de la aplicacion
#Ejecutable
/usr/bin/gambas -------> path correcto del ejecutable
#Icono  --->Indicacion del Icono de la aplicacion
/usr/local/share/Ventana3D/iconos_escritorio/ok.jpg   ------->path correcto del  icono
#Nombre
Xterm
#Ejecutable
/usr/bin/xterm
#Icono
/usr/local/share/Ventana3D/iconos_escritorio/xterm.jpg
#Nombre
K3b
#Ejecutable
/opt/kde3/bin/k3b
#Icono
/usr/local/share/Ventana3D/iconos_escritorio/k3b.jpg
[Fin]   --->Indicacion del Fin de la Configuracion de programas

Version 0.5  

Esta nueva version trae una mejora en lo que respecta al Motor grafico 3D, se ha mejorado el proceso de renderizado.
En cuanto ala comunicacion cliente-servido X, se ha corregido algunos problemas en la geometria de las aplicaiones y mapeo.
El movimiento de las ventanas, ahora se lo puede realizar con el mouse, para esto observar las dos figuras que se muestran,
para iniciar el movimiento es necesario tener  el puntero del mouse en la barra de la ventana indicada con una flecha de color rojo en las figuras, cuando el puntero del mouse cambie de cursor(+), y utilizando las teclas del lado izquierdo Shift o Control.

A.-
Apretando constantemente la tecla Shift y haciendo click (botono derecho) solamente un solo click , se puede controlar la rotacion de la ventana en X,Y.

B.-
Apretando constantemente la tecla Ctrl y haciendo click (botono derecho) solamente un solo click , se puede controlar la translacion en la coordenada Z.


Movimiento X,Y,Z

Figura No 9

Movimiento Z

Figura No 10

Preguntas  

Porque el cursor no cambia de forma  de acuerdo al requerimiento de una aplicacion?

Debido a que no esta implementado en la version libX11.so, que incluyo en el codigo del programa.

Me he visto forzado ha modificar la libreria libX11.so debido a que el Server X , no lo dibuja correctamente, como lo muestra la figura No 7

cursor_5

Figura No 11