Avances tecnológicos del siglo XXI y ejemplos de estos
Java 3D
1. Ingeniero Pedro Contreras Flores
pcontreras@informatica.uda.cl
Académico
Universidad de Atacama
InfoUDA - Junio 2002
2. AgendaAgenda
Introducción a la visualización 3DIntroducción a la visualización 3D
Características de API JAVA3DCaracterísticas de API JAVA3D
Diseño y Programación en Java 3DDiseño y Programación en Java 3D
Ejemplos en Java 3DEjemplos en Java 3D
3. La Evolución de las Graficas 3DLa Evolución de las Graficas 3D
Terminales Raster y MinicomputadoresTerminales Raster y Minicomputadores
Gráficas por carácterGráficas por carácter
FORTRANFORTRAN
Primitivas y SuperficiesPrimitivas y Superficies
Estaciones de trabajoEstaciones de trabajo
CC
Listas de muestras, SólidosListas de muestras, Sólidos
Estaciones de trabajo con aceleración 3DEstaciones de trabajo con aceleración 3D
OpenGLOpenGL
C++C++
Mapeo de Textura , Modo Inmediato,Mapeo de Textura , Modo Inmediato,
LuminosidadLuminosidad
Red de trabajo deRed de trabajo de
computadorescomputadores
Java3DJava3D
JavaJava
Escenas graficas, Geometrías,Escenas graficas, Geometrías,
movilidad, Sonido espacialmovilidad, Sonido espacial
4. Java 3D: para usuarios y usuariosJava 3D: para usuarios y usuarios
finalesfinales
Java 3D es una red de trabajoJava 3D es una red de trabajo
central, utiliza escenas gráficascentral, utiliza escenas gráficas
basadas en API, revoluciona elbasadas en API, revoluciona el
desarrollo de aplicaciones gráficasdesarrollo de aplicaciones gráficas
3D3D
Beneficios para los usuarios finalesBeneficios para los usuarios finales
Portabilidad de aplicacionesPortabilidad de aplicaciones
Independencia de hardwareIndependencia de hardware
Escalabilidad de rendimientoEscalabilidad de rendimiento
5. Puntos Clave de Java 3DPuntos Clave de Java 3D
Fácil de usarFácil de usar
Simplifica la programación de graficas 3DSimplifica la programación de graficas 3D
Productividad de JavaProductividad de Javatiempo en mercadotiempo en mercado
Gráficas 3D para la redGráficas 3D para la red
Habilita la colaboración de modelos 3D yHabilita la colaboración de modelos 3D y
datos sobre la reddatos sobre la red
Rendimiento EscalableRendimiento Escalable
Optimo rendimiento sobre un extenso rangoOptimo rendimiento sobre un extenso rango
de hardwarede hardware
No requiere plataforma especifica para lasNo requiere plataforma especifica para las
aplicacionesaplicaciones
3D para Java y Java para 3D3D para Java y Java para 3D
Provee API grafica 3D para desarrolladoresProvee API grafica 3D para desarrolladores
Facilita otros desarrollos 3D movidos a JavaFacilita otros desarrollos 3D movidos a Java
6. Jerarquía de Escena GráficaJerarquía de Escena Gráfica
TGTG
TGTG
BGBG BGBG
BB
SS
VPVP
ApperanceApperance GeometryGeometry
ViewView
Other ObjectsOther Objects
Virtual UniverseVirtual Universe
LocaleLocale
BranchGroup NodesBranchGroup Nodes
BehaviorBehavior
NodeNode
Shape3D NodeShape3D Node
View PlatformView Platform
TransformGroupTransformGroup
NodesNodes
8. Escena gráfica parcialEscena gráfica parcial
BGBG
TGTG
BGBG
BGBG
BB
BB
ApperanceApperance
GeometryGeometry
Virtual UniverseVirtual Universe
CuartoCuarto
MueblesMuebles
ConductaConducta
View PlataformView Plataform
BGBGJuguetesJuguetes
MuñecoMuñeco
TGTG
BB
CamiónCamión
SS
SS
CamaCama
CómodCómod
aa
TGTG
SS
SSSSSS
CajonesCajones
Marco deMarco de
cajonescajones
9. Definición de GeometríaDefinición de Geometría
Nodos Shape3DNodos Shape3D
Usar herramientas autorizadasUsar herramientas autorizadas
Cargador Lightwave3DCargador Lightwave3D
Cargar los .objCargar los .obj
Cargar VRMLCargar VRML
Cargar 3DStudioMaxCargar 3DStudioMax
Cargadores de costumbreCargadores de costumbre
10. Apariencia de Java3DApariencia de Java3D
AtributosAtributos
Colores, texturasColores, texturas
EsfumadoEsfumado
LuminosidadLuminosidad
Ambiente, direccional, puntoAmbiente, direccional, punto
(manchas)(manchas)
11. ConductasConductas
Animación y movimientoAnimación y movimiento
Detección de colisiónDetección de colisión
InterpolacionesInterpolaciones
MorphingMorphing
Enlazar dispositivos de entradaEnlazar dispositivos de entrada
Establece regiones limitesEstablece regiones limites
12. Visualizar el ModeloVisualizar el Modelo
Independientes GeometríasIndependientes Geometrías
No es un modelo estrictamenteNo es un modelo estrictamente
basado en cámarabasado en cámara
Metafóricamente se rastrea la visiónMetafóricamente se rastrea la visión
desde la plataformadesde la plataforma
Cambiar fácilmente los modosCambiar fácilmente los modos
Sin reescribir códigoSin reescribir código
TGTG
VPVP
ViewView
Other ObjectsOther Objects
VirtualUniverseVirtualUniverse
ViewPalataformViewPalataform
13. DVR
JSDT
JAI
JMF
Java Sound Java 3D
Plataforma
JDK 1.2 Java 2D
Java Sound Engine
Java Applet o Application
Componentes JavaComponentes Java
14. Rasgos Característicos deRasgos Característicos de
JAVA3DJAVA3D
Compresión geométrica menosCompresión geométrica menos
perdida visualmenteperdida visualmente
Innovación en la vista del modeloInnovación en la vista del modelo
Pantallas del piso, stereo, portalesPantallas del piso, stereo, portales
Ejecución de desechoEjecución de desecho
3D audio espacial3D audio espacial
Representación automáticaRepresentación automática
Escribir en JavaEscribir en Java
15. Más Características de Java3DMás Características de Java3D
Detección de colisiónDetección de colisión
Integrar con otros tipos de medios (JavaIntegrar con otros tipos de medios (Java
Media)Media)
Soporte para dispositivos de acciónSoporte para dispositivos de acción
continua (trackers)continua (trackers)
Control de vistas extensivas con múltiplesControl de vistas extensivas con múltiples
sistemas de coordenadassistemas de coordenadas
Soporta múltiples representacionesSoporta múltiples representaciones
Morphinganimaciones característicasMorphinganimaciones características
16. J3D Diseño y RendimientoJ3D Diseño y Rendimiento
Ejecución paralela en todos los nivelesEjecución paralela en todos los niveles
Soporte simultaneo para múltiples modosSoporte simultaneo para múltiples modos
de renderizadode renderizado
Soporta niveles de detalleSoporta niveles de detalle
Aceleración nativa de hardwareAceleración nativa de hardware
Permite automático renderizado paraPermite automático renderizado para
escenas por bajo hardware llegando alescenas por bajo hardware llegando al
máximo rendimientomáximo rendimiento
17. Mercados y aplicacionesMercados y aplicaciones
Visualización de datosVisualización de datos
Aplicaciones colaborativasAplicaciones colaborativas
CADCAE, especialmente en diseñoCADCAE, especialmente en diseño
3D: desarrollo de paginas web o3D: desarrollo de paginas web o
interfaces de usuario.interfaces de usuario.
Creaciones de componentes digitalesCreaciones de componentes digitales
Juegos, educación, especialmenteJuegos, educación, especialmente
basadas en redes, sistemasbasadas en redes, sistemas
multijugadoresmultijugadores
Simulación y animación visualSimulación y animación visual
Negocios gráficosNegocios gráficos
18. ¿Quién usa JAVA 3D hoy?¿Quién usa JAVA 3D hoy?
SolidWorks - MCAD file loaderSolidWorks - MCAD file loader -- wwwwww..solidworkssolidworks..comcom
Division - MCAD file loaderDivision - MCAD file loader -- wwwwww..divisiondivision..comcom
Fakespace - Support for Immersive WorkbenchFakespace - Support for Immersive Workbench --wwwwww..fakespacefakespace..comcom
SSEC - Scientific visualization of atmospheric dataSSEC - Scientific visualization of atmospheric data
Out of the Blue - Interactive educational systemsOut of the Blue - Interactive educational systems
Facet - Enterprise complex decision support toolsFacet - Enterprise complex decision support tools
TASC - Interactive, collaborative command & controlTASC - Interactive, collaborative command & control
Tripos - Molecular modeling / viewingTripos - Molecular modeling / viewing
Nearlife - Virtual FishtankNearlife - Virtual Fishtank
Templegames - Sailing simulatorTemplegames - Sailing simulator
Parallelization - 3D Virtual WhiteboardParallelization - 3D Virtual Whiteboard
Andy van Dam, Brown University - Teaching Java 3DTM technology;Andy van Dam, Brown University - Teaching Java 3DTM technology;
Graphics Research; etc.Graphics Research; etc.
etc. etc. etc.etc. etc. etc.
19. El FuturoEl Futuro
Dispositivos de entradaDispositivos de entrada
Keyboard, mose, joystick, data glove,Keyboard, mose, joystick, data glove,
head trackers, ?head trackers, ?
Dispositivos visualesDispositivos visuales
Flat screen, stereo, tesselation, Portal,Flat screen, stereo, tesselation, Portal,
Cave, Networked immersiveCave, Networked immersive
enviroments, ?enviroments, ?
¿Quieres que tus herramientas¿Quieres que tus herramientas
lleguen allí?lleguen allí?
20. Su próximo pasoSu próximo paso
Instalar Java 3DInstalar Java 3D
Aprender Java 3DAprender Java 3D
Ver demosVer el códigoVer demosVer el código
wwwwww..sunsun..comcom//desktopdesktop/java3d/java3d
21. RecuerdeRecuerde
Fácil de usarFácil de usar
Gráficas 3D para la redGráficas 3D para la red
Rendimiento escalableRendimiento escalable
3D para Java y Java para 3D3D para Java y Java para 3D
Notas del editor
Java 3D es una API de gráficos 3D desarrollada por Sun para su lenguaje de programación Java, por su parte Java es un lenguaje orientado a objetos lo que le da una gran robustez y posibilidades de reutilización.
Java 3D se presenta como una colección de clases cuyo objetivo principal es facilitarnos la creación y representación de escenas tridimensionales en el ordenador así como la animación e interacción con las mismas.
Para representar las escenas tridimensionales Java 3D usa el concepto de grafo de una escena. En el grafo de una escena tenemos descrita tanto la geometría de los objetos tridimensionales como sus propiedades (colores, ...), el sitio en que están situados, la orientación que tienen, qué fuentes de luz existen en la escena, dónde está situado el observador, ...
Los tipos de aplicaciones y la calidad de las graficas son semejantes a las creadas por otros lenguajes como VRML, pero la compatibilidad y reutilización de componentes es distinto por las ventajas de Java como lenguaje.
En esta exposición se explicara la construcción de entornos aspectos genéricos de visualización, traspaso de graficas 2D a 3D, programación en Java 3D y finalmente ver ejemplos prácticos.
Los API de los gráficos han evolucionado así también han evolucionado el hardware y requisitos del cliente.
En inicios de los años ochenta, el estado del arte consistió en terminales como mini ordenadores y sistemas informáticos grandes. Se desarrollaron las aplicaciones gráficas en FORTRAN que usa el standard CORE de implementación llamado DI-3000. Se limitaron los diseñadores al uso de primitivas (las líneas, polilines, los polígonos, etc) y superficies.
Con la utilización de las estaciones de trabajo, las capacidades gráficas aumentaron dramáticamente. Los desarrolladores ahora usaban el lenguaje de programción C y haciendo las bibliotecas PHIGS y PEX. Ellos aprovecharon la tecnología de listas de despliegue y algunos capacidades de modelamiento de sólidos.
Cuando las estaciones de trabajo fueron más poderosas y la programación orientada al objeto gano popularidad, los desarrolladores emigradon a C++ y OpenGL por defecto para desarrollo de los gráficos 3D. Las capacidades de las estaciones de trabajo han incluido rutinas de trazado de texturas, controles adicionales y sobre todo procesos de renderizado (rendimiento), y modelos luminosos.
Ahora nosotros estamos era de las redes de trabajo dónde la colaboración es la clave. Todos queremos compartir la información por la red. Los desarrolladores están reuniéndose a el entorno de programación Java, y que no quiere ser molestado con los detalles de algunas plataformas especificas.
El punto importante es que el ingreso de un nuevo paradigma no señala el fallecimiento de su predecesor. OpenGL continuará siendo usado durante muchos años, y, de hecho, es acostumbrado por Java 3D como interface al hardware.
Las Palabras Claves:
Red centrica: Todos nosotros sabemos que Java es el idioma de la red. Java 3D extiende ese paradigma gráficos 3D, osea ha habilitando la colaboración 3D por la red.
La Escena Grafica: Este ambiente de alto nivel quita mucha de la complejidad de programar en 3D. Usted ya no necesita preocuparse por las plataformas dando en cada máquina en el blanco.
El API (Aplicación que Programa la Interfaz): Este es un producto para diseñadores; no es una herramienta de usuario común.
Los beneficios:
Escriba solo una vez y ejecutelo en cualquier parte
Usted decide qué hardware es correcto para usted, esto es hoy y en el futuro.
Las escalas para Java 3D en la utilidad de sus aplicaciones esta para: portátiles, PC, estaciones de trabajo, e incluso supercomputadores, aprovechando las capacidades a cada nivel (computadores & gráficas). Y también viendo ejemplos en una pantalla plana o estéreo, y monitores comunes o totalmente inmersivos (cuevas). Todo esto sin volver a escribir la aplicación.
Las escenas graficas de la arquitectura Java 3D lo hace mucho más fácil cada vez que se escibe un programa 3D. Usted ya no tiene que ser un guru de los gráficos para escribir aplicaciones y applets 3D eficaces.
Java 3D se diseña para trabajar bien en la red.
Java 3D puede correr en todo, desde un pc portátil a una WS (WorkStation) e incluso un Supercomputador, y se aprovecha del hardware como parte de él.
También como parte de él considera un rango de formas para ver los ambientes, desde pantallas simples a pantallas desde el piso que son totalmente para ambientes del inmersivos y todo esto sin volver a escribir el código
Java 3D hace posible agregar gráficos 3D a los applets de Java y aplicaciones. Y ellos da una continuidad en el desarrollo de aplicaciones 3D pero ahora aprovechar de todos los beneficios del paradigma de Java, a C y a diseñadores de C++.
Esta es es la estructura básica de una escena gráfica, la cual consiste en una rama de contenido (izquierda) y una rama de vistas (derecha). Un diseñador, deberá definir (o cargar) los objetos que deben ser puestos en la escena (mundo), incluso la geometría, apariencia, y conducta de cada objeto. En el lado de contenido, usted define también sus condiciones medioambientales, como las luces, envolver en niebla, etc.
El nodo Shape3D es el nivel más fino de granularidad dentro de la escena grafica en Java 3D.
Si usted desea cambiar su ambiente de despliegue, usted puede cambiar simplemente los parámetros en la ViewPlataform, sin hacer cambioa a la rama de contenido.
Escena de un niño en su pieza y con juguetes.
Este es un ejemplo simple del lado de contenido de una escena gráfica, este caso es el cuarto de un niño. Para claridad, se ha mostrado sólo una Geometria y componente de nodo de Apariencia en un nodo de Shape3D, aunque obviamente cada nodo de Shape3D contiene la referencia de una única (o común) geometría o componente de nodo de apariencia.
La Cama y los nodos de Marco de Cómoda no tienen una Conducta asociada entre ellos. Es decir ellos serán estáticos. También los tres Cajones son asociados con una sola conducta, mientras que se indica que ellos no realizan todo el movimiento juntos. En una aplicación real, usted asociaría una conducta separada y probablemente con cada cajón.
El API de Java 3D da varias opciones para definir la geometría de sus objetos. Como en las API de bajo nivel de hoy (OpenGL o Direct3D) usted puede crear su mundo realmente definiendo cada vértice de cada triángulo en cada objeto. Nosotros no recomendamos eso.
Hay varios cargadores para herramientas del autoria existentes que proporcionan la Java 3D API, y un número importante proporciono algunos de estos cargadores que cargan sólo la geometría, mientras otros también cargan los atributos y conductas.
Usted también puede crear a constructores por defecto que pueden transmitir código fuente para el cargador de VRML, un ejemplo podría ser desarrollar su propio cargador de VRML.
Una vez que usted ha definido la geometría, usted puede especificar los atributos de sus objetos y ambiente.
Java 3D hace fácil la inclusión de conductas (animación) en sus escenas 3D. El rasgo de descubrimiento de colisión puede activar un evento siempre que dos objetos choquen. Java 3D mantiene un juego de interpoladores lo que predefine los movimientos de los objetos. Esta incluso el efecto morphing. Y usted puede enlazar las conductas desde la entrada de dispositivos de juego.
Por ejemplo, en SIGGRAPH 98 (http://www.siggraph.org/s98/), Sun demostro Java 3D en un Banco de Trabajo de Espacio Inmersivo. Usando datos de 6 grados de datos de libertad, usted podía meter la mano en la escena, agarrar un objeto, y muévalo alrededor en la escena.
Los limites de las regiones permiten que se especifique que las conductas sólo ocurrirán bajo un juego de condiciones. Esto permite definir escenas muy complejas y lograr buena actuación del sistema.
El modelo mostrado es completamente independiente de la geometría. Esto significa que peueden cambiarse sus características sin requerir los cambios a la geometría.
Ver graficas en Java 3D es similar a los modelos tradicionales basados cámara, pero con capacidades adicionales. Por ejemplo, Java 3D puede tener dos "cámaras" para la proyección estereofónica (uno para cada ojo), y usted puede especificar los parámetros físicos incluso como la distancia entre los alumnos (para definir la proyección estereofónica óptima). Usted también puede poner un Transform Group sobre el ViewPlatform para mover la "cámara" por alrededor.
Los API’s Java Media se han definido para permitir definir las aplicaciones de medios de comunicación más rápida y fácilmente. Las aplicaciones de Java pueden realizar "la mezcla & partición" llamando a cada uno de estos API de los medios de comunicación, y otras clases en Java, como sean necesitadas.
Usted puede conseguir más detalles especificos en la API de Medios de comunicación (http://java.sun.com/products/java-media)
What is the JavaTM Shared Data Toolkit? The JavaTM Shared Data Toolkit (JSDT) implements a multipoint data delivery service for use in support of highly interactive, collaborative, multimedia applications. It provides the basic abstraction of a session (i.e., a group of objects associated with some common communications pattern), and supports full-duplex multipoint communication among an arbitrary number of connected application entities -- all over a variety of different types of networks.
The Java Advanced Imaging API broadens the reach of the Java platform to allow sophisticated, high performance image processing functionality to be incorporated into Java applets and applications. The Java Advanced Imaging API goes beyond the functionality of traditional imaging APIs to provide a high-performance, platform-independent and extensible image processing framework.
What is the Java Media Framework API (JMF):The Java Media Framework API (JMF) specifies a simple, unified architecture to synchronize and control audio, video and other time-based data within Java applications and applets. For the purposes of this FAQ, "JMF" or "JMF API" refers to both the specification (as generated from javadoc) and the reference implementations that Sun provides with the specification.
La compresión de geometría es realizable por el programador. Usted especifica cuánta resolución del vértice desea, y Java 3D puede hacer la compresión por usted.
El ejecución escogida le permite especificar escenas muy complejas y todavía recibir un buen desempeño de su sistema.
Esto se hace limitar las especificaciones de las regiones para las conductas, iluminación, la niebla, etc. por ejemplo, usted podría definir una conducta que sólo ocurrierá si el ViewPlatform está dentro de 30 metros.
Java 3D le permite definir audio espacial 3D, mientras se habilita una experiencia inmersiva realista.
La escena grafica en Java 3D hace que el volumen sea dado para usted, usted no necesita tener relación con la arquitectura.
Usted todavía tiene control durante el ciclo dando la alternativa de tomarlo o no. Sin embargo, desde que Java 3D ha podido hacer esto ha perfeccionado su escena.
Java 3D puede activar los eventos siempre que dos objetos choquen, o mientras ellos están en contacto, y cuando ellos separan.
Java 3D apoya los dispositivos de acción continua, e incluye una interfaz para definir los nuevos dispositivos físicos.
Coordine los sistemas usan 32 bits de precisión, pero usted puede definir los sistemas de la coordenada múltiples (sitios) y especifica la distancia entre los sitios en 256 bits de precisión (para cada valor x, y, y z).
Java 3D no es ninguna industria específica. Cualquiera que quiera implementar aplicaciones de datos u objetos en 3D puede usar Java 3D. Es otra opción para las áreas de aplicación más exigentes como CAD y planteamiento molecular, es ideal para los juegos del multiplayer, educación, y el aplicaciones colaborativas, y bastante fácil para usar.
Los dispositivos de la entrada han estado apuntando a incluir dispositivos de seis grado de dispositivos de libertad, como los guantes de los datos y los perseguidores de cabeza.
Los dispositivos de despliegue han evolucionado a las pantallas de piso, estéreo, a los monitores de pared, a los portales inmersivos y las cuevas. El próximo paso lógico será unir los portales y las cuevas.
La pregunta es “¿Serán las herramientas que estoy usando hoy las que permitirán en el mañana crear entornos o intefaces? Si usted está usando Java 3D, la respuesta es sí.
No es ninguna ciencia oculta, usted puede hacerlo
La colaboración es una palabra importante
Java 3D esta acorde a sus necesidades y recursos