Anda di halaman 1dari 58

I Jornadas de Software Libre de Castilla-La Mancha Escuela Politcnica Superior de Albacete 9-12 diciembre 2004

Java 3D y Looking Glass


Desarrollos open source de SUN
Vctor Lpez Jaquero Jos Pascual Molina
Departamento de Informtica, UCLM { victor | jpmolina} @info-ab.uclm.es

Contenidos
Primera parte: Java 3D
A cargo de Vctor Lpez

Segunda parte: Looking Glass


A cargo de Jos Pascual Molina

Primera parte
Java 3D

Qu es Java 3D?
Java 3D es un API orientado a objetos para el lenguaje Java de SUN para la programacin de aplicaciones grficas tridimensionales que permite
Construir objetos 3D Visualizarlos Controlar su comportamiento http://java.sun.com/products/java-media/3D/

Ventajas de Java 3D
Es una API de cdigo abierto Interfaz de alto nivel La visualizacin se basa en las APIs:
OpenGL DirectX (slo Windows)

Programacin 3D independiente de la plataforma (Linux, Solaris, Windows, Mac Os X, Irix 6.5) Existen cargadores para importar objetos en el API
VRML97, 3D Studio, Lightwave, Quake 2, ...

La escena se construye creando un grafo La aplicacin 3D puede ser un Applet.

Ventajas de Java 3D
Ejemplo de aplicacin

Desventajas de Java 3D
Hasta ahora Sun slo proporcionaba apoyo para la versin de Solaris y la de Windows. El API oculta detalles de cmo se visualiza la escena. Los componentes de Java 3D son pesados (heavyweight). Java 3D es una extensin que no forma parte de la distribucin estndar de Java. No es tan rpido como una aplicacin en cdigo nativo en OpenGL o DirectX.

Aplicaciones de Java 3D
Visualizacin cientfica Visualizacin de informacin Visualizacin mdica Sistemas de Informacin Geogrfica (GIS) Diseo Asistido por Ordenador (CAD) Animacin Educacin

Aplicaciones de Java 3D

Visualizacin cientfica

Educacin en medicina

CAD

Animacin

Caractersticas de Java 3D
De los objetos se puede controlar su color y textura.

Permite aadir luces y efectos de niebla.

Caractersticas de Java 3D
De los objetos se puede controlar su tamao, posicin y orientacin y cmo dichos atributos evolucionan en el tiempo:

Modos de Programacin de Java 3D


Modo conservador (retained)
El programador no puede acceder al API que est usando Java 3D para la visualizacin (OpenGL, DirectX).

Modo inmediato (immediate)


Permite al programador interactuar con el API subyacente.

Modo mixto (mixed)


Permite mezclar el modo conservador y el modo inmediato.

El Grafo de Escena
Las escenas 3D visualizadas en Java 3D se describen mediante el grafo de la escena. El grafo de la escena se compone de:
Subgrafo de contenidos (los objetos que se visualizan en s) Subgrafo de vista (configuracin de cmo se visualiza el subgrado de contenidos)

El Grafo de la Escena
Cuando se aade una rama al grafo en un nodo que sea descendiente de un nodo Locale, sta pasa a estar viva (Live), mientras que si se quita del rbol, la rama deja de estar viva Slo se visualizan las ramas vivas. Todos los nodos del grafo de escena contienen unos bits (capabilities) que determinan qu propiedades del nodo pueden ser modificadas. El grafo de escena puede ser compilado para se optimizado, teniendo en cuenta los bits de capacidades. Las capacidades son por defecto de slo lectura cuando un nodo est vivo o compilado.

El Grafo de Escena
Elementos del grafo de escena
Grupos
BranchGroup TransformationGroup Switch SharedGroup Enlaces a SharedGroups (links) Shape3D (cubo, cubo de colores, cono, esfera, ...) Luces (AmbientLight, SpotLight, ...) Comportamientos Sonidos Efectos de niebla (fog) Imgenes de fondo (background)

Individuales

El Grafo de Escena
Universo Rotar o posicionar los objetos (de forma relativa al anterior BG) Locale (sistema de coordenadas del universo)

Agrupa nodos

El Grafo de Escena

El Grafo de Escena
Ejemplo de cdigo de una escena simple

Hgase la Luz
Tipos de nodos de iluminacin
AmbientLight: ilumina a todos los objetos de la escena desde todas las direcciones. DirectionalLight: posicionadas en el infinito, e iluminan en una direccin concreta. PointLight: irradia luz desde un punto concreto del espacio en todas direcciones. SpotLight: irradia luz desde un punto concreto del espacio en una direccin concreta y con un haz de luz de un tamao determinado (como un foco en teatro).

Lo nodos de iluminacin actan dentro del rea de influencia que se les asigne (InfluencingBounds).

Hgase la Luz
Ejemplo ExHenge

... Y Lleg el Movimiento


Comportamientos
Permiten aadir animacin a las escenas de una forma sencilla. Los valores alfa describen la dinmica del comportamiento.

Los comportamientos se asocian a los nodos que modifican.

... Y Lleg el Movimiento


Comportamientos
Permiten aadir animacin a las escenas de una forma sencilla. Interpolator (interpoladores)
ColorInterpolator PathInterpolator (PositionPathInterpolator, ...) PositionInterpolator RotationInterpolator ScaleInterpolator TransparencyInterpolator

... Y Lleg el Movimiento


Comportamientos
Ejemplo de Esferas rotando
RotationInterpolator
Alpha rotor1Alpha = new Alpha(-1,Alpha.INCREASING_ENABLE, 0, 0, 4000, 0, 0, 0, 0, 0); RotationInterpolator rotator1 = new RotationInterpolator(rotor1Alpha, TG que se modifica. l1RotTrans, yAxis, 0.0f, (float) Math.PI*2.0f);

... Y Lleg el Movimiento


Comportamientos (II)
MouseBehavior
MouseRotate MouseTranslate MouseZoom PickRotateBehavior PickTranslateBehavior PickZoomBehavior

PickMouseBehavior

... Y Lleg el Movimiento


Comportamientos (III)
Un comportamiento se activa cuando
1. Los objetos sobre los que se aplican entran en el rea de accin definida para el comportamiento (SchedulingBound)
Ej. El objeto sobre el que se aplica est a menos de 10 metros del observador.

2. Se cumple su condicin de activacin (WakeUpCondition)

Ej. Cuando pasen 10 segundos.

... Y Lleg el Movimiento


Comportamientos
Ejemplo de seleccin e interaccin con objetos.

Las Apariencias es lo Que Importa


Java 3D permite personalizar la apariencia de cada objeto en la escena, incluyendo su:
Color Transparencia Modelo de sombreado (Gouraud, phong, ...) Grosor de las lneas ...

La apariencia de un objeto se manipula a travs de la clase Appearance.

Las Apariencias es lo Que Importa


Ejemplo con distintos tipos de apariencias

Resumen
Java 3D es una extensin de Java que proporciona una interfaz de alto nivel para la creacin de aplicaciones 3D. En un API multiplataforma. Permite incluir en la escena multitud de formatos. Se puede integrar con cualquier aplicacin escrita en el lenguaje Java. Es de cdigo abierto. ;)

Referencias
Sitio de la comunidad de Java 3D
http://www.j3d.org

Sitio oficial de Java 3D en Sun


http://java.sun.com/products/java-media/3D/

Sitio del proyecto de cdigo abierto de Java 3D


https://java3d.dev.java.net/

Tutorial muy completo de Java 3D


http://www.sdsc.edu/~nadeau/Courses/Siggraph99/

Tutorial de Java 3D en castellano


http://www.programacion.com/java/tutorial/3d/

Segunda parte
Proyecto Looking Glass

Qu es Looking Glass?
Looking Glass (LG3D) es un proyecto de innovacin desarrollado por Sun Microsystems basado en su tecnologa Java, tambin Java 3D Aplica la tecnologa 3D al clsico sistema de ventanas, las ventanas son representadas en un entorno 3D y manipuladas como objetos 3D Su objetivo no es slo ofrecer un entorno ms vistoso, sino una experiencia ms rica tanto para el trabajo como para el entretenimiento
http://wwws.sun.com/software/looking_glass/index.html

Qu es Looking Glass?
Romper barreras
Las dos dimensiones del entorno de escritorio actual La manera en la que evolucionan esos entornos

Pioneros
1979, Xerox Star
La mejor forma de predecir el futuro es inventarlo (Alan Kay)

Pioneros
1985, NASA: Proyecto VIEW

Pioneros
1992, Wolfenstein3D: Videojuegos 3D
Cada vez ms exigentes, popularizan el hardware 3D Un desktop tan entretenido como jugar al Quake?

Pioneros
Nuevas metforas
Sgi FSN (fusion), 1992
Como en Parque Jursico! http://www.sgi.com/fun/freeware/3d_navigator.html

The Brutal File Manager, 2003


http://www.forchheimer.se/bfm/

Pioneros
1993, James Leftwich: InfoSpace
Crear una relacin 3D con la informacin

http://www.well.com/www/jleft/orbit/infospace/

Pioneros
1993, Xerox Information Visualizer
Superar los lmites fsicos de la pantalla

Revolucin? en Internet
La expansin de Internet abri la puerta a nuevas posibilidades, entre ellas la de acceder a mundos virtuales multiusuario a travs de la Web Dos tecnologas se convirtieron en la referencia para la creacin de mundos virtuales y aplicaciones 3D para la Web:
VRML (1.0, 1995) Java 3D (1.0, 1997)

Evolucin? en el desktop
Retos
Los entornos de ventanas actuales estn basados en bitmaps y primitivas 2D. Los grficos 3D se llevan a cabo aparte, separados de esos grficos 2D. Pero representar las ventanas en 3D requiere acceder a los entresijos de los sistemas operativos:
La salida grfica de las aplicaciones debe poder utilizarse como textura en el entorno 3D La entrada por teclado y ratn debe ser capturada e interpretada en el contexto del entorno 3D

Evolucin? en el desktop
Experimentos
Microsoft Task Gallery [Robertson, 2000]
http://research.microsoft.com/adapt/TaskGallery/

IBM RealPlaces [Roberts, 2000]


http://www-3.ibm.com/ibm/easy/eou_ext.nsf/publish/580

Evolucin? en el desktop
Alternativas
Clockwise3D, 2000
http://www.clockwise3d.com/

3DNA Desktop, 2002


http://www.3dna.net/

Evolucin? en el desktop
Preguntas
Cmo es una ventana en 3D? Qu hay en la cara posterior de una ventana? Cmo son los elementos de una ventana en 3D? Cmo sern las nuevas aplicaciones 3D? Cmo se utiliza el ratn y el teclado en un entorno tridimensional?

Caractersticas de LG3D
Ejecutar aplicaciones 2D

Caractersticas de LG3D
Rotar ventanas, anotar texto detrs

Caractersticas de LG3D
Organizar las ventanas en 3D

Caractersticas de LG3D
Panorama

Caractersticas de LG3D
Nuevas aplicaciones 3D

Demo

http://wwws.sun.com/software/looking_glass/demo.html

Arquitectura

Plataforma grfica

Licencia Open Source


Este prototipo de Looking Glass es slo el principio, faltan por explorar muchas ms ideas y posibilidades Por ejemplo, uno de los campos que se desea investigar es el look & feel de Swing 3D Sun ha apostado por el modelo open-source, ofreciendo el cdigo del proyecto a la comunidad de software libre https://lg3d.dev.java.net/

Requisitos
Libreras de desarrollo
JDK 5.0 Java 3D 1.3.2 JAI 1.2.2

Hardware
CPU: ~2GHz Pentium4 o similar Tarjeta grfica 3D (GeForce2 32MB o similar) https://lg3d-core.dev.java.net/lg3d-getting-started.html

Java Desktop 3D?


Al igual que The Task Gallery o RealPlaces, Looking Glass es un proyecto experimental cuyos resultados podran incorporarse en futuras versiones de los entornos de ventanas En el caso de Sun, ese entorno es Java Desktop System En el caso de Microsoft, el nombre clave de su futuro entorno es Longhorn

Otros desktops 3D
SphereXP
http://www.hamar.sk/sphere/

Infinite-3D, Cube
http://www.infinite-3d.com/index.html

Ms all del desktop 3D


Algunos proyectos persiguen ir ms all de los entornos monousuario y crear espacios 3D multiusuario basados en software de cdigo abierto Proyectos en curso:
Open Source Metaverse Project
http://metaverse.sourceforge.net/

Croquet
http://croquetproject.org/

MUPPETS
http://muppets.rit.edu/

Gracias