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