Libro Diagramado de Tecnología de Multimedia y Realidad Virtual PDF
Libro Diagramado de Tecnología de Multimedia y Realidad Virtual PDF
Libro Diagramado de Tecnología de Multimedia y Realidad Virtual PDF
1
UNIVERSIDAD PRIVADA TELESUP
Prefacio:
La asignatura es de carácter teórico-práctico. Tiene como fin desarrollar en el
estudiante habilidades para el análisis y la aplicación de diferentes herramientas y
lenguajes en tecnologías multimedia y realidad virtual.
Realidad virtual es una ciencia basada en el empleo de ordenadores y otros
dispositivos, cuyo fin es producir una apariencia de realidad que permita al usuario
tener la sensación de estar presente en ella.
Tecnología multimedia y realidad virtual es un término
que se aplica a cualquier objeto que usa
simultáneamente diferentes formas de contenido
informativo como texto, sonido, imágenes, animación y
video para informar o entretener al usuario.
Puede dividirse en dos categorías principales: multimedia lineal: Ej. una película de
cine. Multimedia no lineal. Ej. videojuegos o en el e-learning. Las presentaciones
multimedia pueden verse en un escenario, proyectarse, transmitirse, o reproducirse
localmente en un dispositivo por medio de un reproductor multimedia. Los juegos y
simulaciones multimedia pueden usarse en ambientes físicos con efectos especiales,
con varios usuarios conectados en red, o localmente con un computador sin acceso
a una red.
2
UNIVERSIDAD PRIVADA TELESUP
Canvas y graphics.
Video y sonido Construcción de Utilización de
con java. formas de texto. rejillas de
elevación.
Creación de juegos
en MIDP. Java 3D. Nodos de 2
agrupación.
Utilización de
niebla.
Graficos vectoriales Clases y
con JME. Aplicaciones Más nodos.
en Java 3D.
Mundos
Virtuales en 3D.
3
UNIVERSIDAD PRIVADA TELESUP
Índice del Contenido
I. PREFACIO 02
II. DESARROLLO DE LOS CONTENIDOS 03 - 174
UNIDAD DE APRENDIZAJE 1: SISTEMAS MULTIMEDIA Y REALIDAD VIRTUAL 05-54
1. Introducción 06
a. Presentación y contextualización 06
b. Competencia 06
c. Capacidades 06
d. Actitudes 06
e. Ideas básicas y contenido 06
2. Desarrollo de los temas 07-50
a. Tema 01: Conceptos Básicos. 07
b. Tema 02: Canvas y Graphics. 22
c. Tema 03: Creación de Juegos en MIDP. 28
d. Tema 04: Gráficos Vectoriales con JME. 42
3. Lecturas recomendadas 51
4. Actividades 51
5. Autoevaluación 52
6. Resumen 54
UNIDAD DE APRENDIZAJE 2: JAVA 2D Y JAVA 3D 55-93
1. Introducción 56
a. Presentación y contextualización 56
b. Competencia 56
c. Capacidades 56
d. Actitudes 56
e. Ideas básicas y contenido 56
2. Desarrollo de los temas 57-89
a. Tema 01: Introducción a Java 2D. 57
b. Tema 02: Video y Sonido con Java. 65
c. Tema 03: Java 3D. 72
d. Tema 04: Clases y Aplicaciones en Java 3D. 81
3. Lecturas recomendadas 90
4. Actividades 90
5. Autoevaluación 91
6. Resumen 93
UNIDAD DE APRENDIZAJE 3: VRML 94-123
1. Introducción 95
a. Presentación y contextualización 95
b. Competencia 95
c. Capacidades 95
d. Actitudes 95
e. Ideas básicas y contenido 95
2. Desarrollo de los temas 96-119
a. Tema 01: Introducción a VRML. 96
b. Tema 02: Construcción de Formas de Texto. 103
c. Tema 03: Nodos de Agrupación. 108
d. Tema 04: Más Nodos. 116
3. Lecturas recomendadas 120
4. Actividades 120
5. Autoevaluación 121
6. Resumen 123
UNIDAD DE APRENDIZAJE 4: VRML (CONTINUACIÓN) 124-171
1. Introducción 125
a. Presentación y contextualización 125
b. Competencia 125
c. Capacidades 125
d. Actitudes 125
e. Ideas básicas y contenido 125
2. Desarrollo de los temas 126-167
a. Tema 01: El Color de los Objetos. 126
b. Tema 02: Utilización de Rejillas de Elevación. 137
c. Tema 03: Utilización de Niebla. 148
d. Tema 04: Mundos Virtuales en 3D. 157
3. Lecturas recomendadas 168
4. Actividades 168
5. Autoevaluación 169
6. Resumen 171
III. GLOSARIO 172
IV. FUENTES DE INFORMACIÓN 173
V. SOLUCIONARIO 174
4
UNIVERSIDAD PRIVADA TELESUP
5
UNIVERSIDAD PRIVADA TELESUP
Introducción
a) Presentación y contextualización:
Multimedia es la combinación o utilización de dos o más medios de forma
concurrente. El término multimedia está relacionado gráficos interactivos,
imágenes en movimiento, secuencias de audio y vídeo, las imágenes en tres
dimensiones, la composición de documentos digitales y la realidad virtual. En
principio, la cualidad multimedia no está restringida a la informática: un libro
acompañado de un DVD o CD ROM de audio es una obra multimedia, sin
embargo, poco a poco, el término multimedia se ha ido generalizando para
referirse a la informática y al mundo digital.
b) Competencia:
Reconoce las características de un entorno multimedia y de realidad virtual.
c) Capacidades:
d) Actitudes:
6
UNIVERSIDAD PRIVADA TELESUP
TEMA 1
Conceptos
Básicos
Competencia:
Conocer los principales elementos y los
sistemas multimedia de realidad virtual.
7
UNIVERSIDAD PRIVADA TELESUP
Desarrollo de los Temas
Conceptos Multimedia:
Es todo aquello que utiliza conjunta y simultáneamente
diversos medios de comunicación en la presentación de la
información, como imágenes, animación, vídeos, sonido y
texto. Básicamente, multimedia es la cualidad de un
sistema o documento que utiliza más de un
medio de comunicación al mismo tiempo.
Historia de la multimedia
En el año 1984, se produce el lanzamiento del primer
computador con amplias capacidades de reproducción de sonidos tales como el de un
radio AM y se desarrollaron programas que se conocen como ambiente WINDOWS,
este primer gran paso para la Multimedia fue la Apple Computer de Macintosh. El
ambiente interactivo inició su desarrollo con las nuevas tecnologías de la
comunicación y la información, muy concretamente, en el ámbito de los juegos de
video. A partir de 1987 se comenzó con juegos de video operados por monedas y
software de computadoras de entretenimiento.
8
UNIVERSIDAD PRIVADA TELESUP
En Noviembre de 1988 la Philips hace una propuesta a través del CD-I Green Book,
para desarrollar una serie de publicaciones sobre productos y diseños interactivos en
torno al CD-I con aplicaciones en museos, la industria química y farmacéutica, la
universidad o la calle. La tecnología de multimedia toma auge en los video-juegos, a
partir de 1992, cuando se integran: audio (música, sonido estéreo y voz), video,
gráficas, animación y texto al mismo tiempo.
9
UNIVERSIDAD PRIVADA TELESUP
1989: ATARI saca al mercado la primera máquina de galería de vídeo juegos con
tecnología 3D. En ese mismo año Autodesk presenta su primer sistema de realidad
virtual para P.C. A partir de aquí entramos de lleno a la carrera comercial los sistemas
de realidad virtual comienzan a popularizarse y muchos productos empiezan a invadir
el mercado, en forma paralela se crea un cierto movimiento cultural conocido como el
Cyberpunk. La estética y la temática del cyberpunk han llegado en los últimos años a
la televisión y al cine, quizás los mejores ejemplos son “El hombre del jardín”; y ”Blade
Runer“.
10
UNIVERSIDAD PRIVADA TELESUP
Aplicaciones de multimedia:
Multimedia estimula los ojos, oídos, yemas de los dedos y, lo más importante, la
cabeza. Se compone, como ya se describió, de combinaciones entrelazadas de
elementos de texto, arte gráfico, sonido, animación y vídeo.
11
UNIVERSIDAD PRIVADA TELESUP
12
UNIVERSIDAD PRIVADA TELESUP
13
UNIVERSIDAD PRIVADA TELESUP
Complementada con un par de lentes o cascos con audífonos integrados, así como un
par de guantes especiales y traje ajustado de cuerpo completo.
No cabe duda que la electrónica y las nuevas herramientas con las que cuenta la
computación harán en el próximo siglo un mundo con más esperanza, más humano,
ya que el acceso al conocimiento sería más fácil y rápido y por ende una educación
personalizada, eficiente, clara, efectiva y dinámica.
14
UNIVERSIDAD PRIVADA TELESUP
Descarga de MIDlets:
Los dispositivos deben proporcionar mecanismos mediante los
cuales podamos encontrar los MIDlets que deseemos descargar.
• En algunos casos, descargamos los MIDlets a través de un navegador WAP o
a través de una aplicación residente escrita específicamente para identificar
MIDlets.
• Otros mecanismos como Bluetooth, cable serie, etc, pueden ser soportados por
el dispositivo.
• El programa encargado de manejar la descarga y ciclo de vida de los MIDlets
en el dispositivo se llama Gestor de Aplicaciones o AMS (Application
Management Software).
MIDP
Mobile Information Device profile o MIDP (JSR 118) es una
versión de J2ME (Java 2 Micro Edition) integrada en el
hardware de celulares relativamente modernos que permite el
15
UNIVERSIDAD PRIVADA TELESUP
MIDP Y MIDLETS
Un dispositivo que posea la especificación MIDP debe ser capaz de:
• Localizar archivos JAD vinculados a un MIDlet en la red.
• Descargar el MIDlet y el archivo JAD al dispositivo desde un servidor usando el
protocolo HTTP 1.1 u otro que posea su funcionalidad.
• Enviar el nombre de usuario y contraseña cuando se produzca una respuesta
HTTP por parte del servidor 401 (Unauthorized) o 407 (Proxy Authentication
Required).
• Instalar el MIDlet en el dispositivo.
• Ejecutar MIDlets.
• Permitir al usuario borrar MIDlets instalados.
Localización de aplicaciones
El descubrimiento de una aplicación es el proceso por el cual un usuario a través de su
dispositivo localiza un MIDlet.
• El usuario debe ser capaz de ver la descripción del MIDlet a través de un
enlace que, una vez seleccionado, inicializa la instalación del MIDlet.
• Si éste enlace se refiere a un archivo JAR, el archivo y su URL son enviados al
AMS del dispositivo para empezar el proceso de instalación.
Instalación de MIDlets
La instalación de la aplicación es el proceso por el cual el
MIDlet es descargado al dispositivo y puede ser utilizado por el
usuario.
• Cuando existan múltiples MIDlets en la aplicación que
deseamos descargar, el usuario debe ser avisado de que existen más de uno.
16
UNIVERSIDAD PRIVADA TELESUP
Actualización de MIDLETS
La actualización se realiza cuando instalamos un MIDlet sobre un dispositivo que ya
contenía una versión anterior de éste.
• El dispositivo debe ser capaz de informar al usuario cual es la versión de la
aplicación que tiene instalada.
• Cuando comienza la actualización, el dispositivo debe informar si la versión
que va a instalar es más nueva, más vieja o la misma de la ya instalada y debe
obtener verificación por parte del usuario antes de continuar con el proceso.
• En cualquier caso, un MIDlet que no posea firma no debe de reemplazar de
ninguna manera a otro que sí la tenga.
Estados de un MIDLET
17
UNIVERSIDAD PRIVADA TELESUP
usuario. Las clases que nos ofrece CLDC, son las más importantes de los siguientes
paquetes de J2SE:
• java.lang
• java.util
• java.io
Básicamente, nos permite dos tipos de entorno, por un lado podremos trabajar con
‘Screens’ sobre las que podremos colocar elementos de la interfaz de usuario, como
textos, menus, etc., por otro, podremos basar nuestras aplicaciones en ‘Canvas’ sobre
las que podemos trabajar a nivel gráfico, es decir, a más bajo nivel. Tanto Screen
como Canvas son objetos que heredan de la clase ‘Displayable’.
La clase Alert
18
UNIVERSIDAD PRIVADA TELESUP
Podemos elegir el tipo de alerta que vamos a mostrar. Cada tipo de alerta tiene
asociado un sonido.
Es posible ejecutar el sonido sin tener que crear un objeto Alert, invocando al método
playSound(Display) de la clase AlertType, por ejemplo:
AlertType.CONFIRMATION.playSound(display)
19
UNIVERSIDAD PRIVADA TELESUP
En el siguiente ejemplo vamos a ver los dos tipos de alerta: modal y no modal. Vamos
a crear un objeto Form donde insertaremos dos comandos. Cada uno de ellos activará
una pantalla de alerta.
20
UNIVERSIDAD PRIVADA TELESUP
alerta2.setTimeout(5000);
// Creo la pantalla principal del MIDlet
pantallainicial = new Form(“Programa principal”);
// Inserto objetos en la pantalla
pantallainicial.addCommand(salir);
pantallainicial.addCommand(aler1);
pantallainicial.addCommand(aler2);
pantallainicial.setCommandListener(this);
}
public void startApp()
{
pantalla.setCurrent(pantallainicial);
}
21
UNIVERSIDAD PRIVADA TELESUP
Canvas TEMA 2
y
Graphics
Competencia:
Identificar las distintas herramientas para
realizar trabajos con canvas y graphics.
22
UNIVERSIDAD PRIVADA TELESUP
23
UNIVERSIDAD PRIVADA TELESUP
como de Screen. Por ejemplo, en la aplicación Hogar, las pantallas de cada dispositivo
podrían haberse creado usando las APIs de bajo nivel, con lo que habríamos
conseguido un aspecto mucho más llamativo, mientras que el menú principal podría
haber seguido siendo un objeto List. La clase Canvas permite manejar eventos de bajo
nivel y dibujar cualquier cosa por pantalla. Por esta razón se usa como base para la
realización de juegos.
24
UNIVERSIDAD PRIVADA TELESUP
Con estos códigos anteriores ya podemos conocer cuál es la tecla que ha pulsado el
usuario. Canvas, además proporciona unos métodos que permitirán manejar estos
eventos con facilidad. La implementación de estos métodos es vacía, por lo que es
misión nuestra implementar los que necesitemos en nuestra aplicación de acuerdo con
el propósito de ésta. Los métodos para el manejo de códigos de teclas aparecen en la
Tabla
El perfil MIDP nos permite detectar eventos producidos por dispositivos equipados con
algún tipo de puntero como un ratón o una pantalla táctil. Para ello, nos proporciona un
conjunto de métodos cuya implementación es vacía. Estos métodos en particular,
detectan las tres acciones básicas que aparecen en la Tabla
25
UNIVERSIDAD PRIVADA TELESUP
El igual que hacíamos con los eventos de teclado, es nuestro deber implementar estos
métodos si queremos que nuestro MIDlet detecte este tipo de eventos.
Para saber si el dispositivo MID está equipado con algún tipo de puntero podemos
hacer uso de los métodos de la Tabla.
El método paint()
La clase Canvas posee un método abstracto paint(Graphics g) que se ocupa de
dibujar el contenido de la pantalla. Para ello, se usa un objeto de la clase Graphics que
es el que contiene las herramientas gráficas necesarias y que se pasa como
parámetro al método paint().
26
UNIVERSIDAD PRIVADA TELESUP
27
UNIVERSIDAD PRIVADA TELESUP
Creación de
TEMA 3
Juegos en
MIDP
Competencia:
28
UNIVERSIDAD PRIVADA TELESUP
29
UNIVERSIDAD PRIVADA TELESUP
Dependiendo del dispositivo, cada uno de los códigos anteriores puede estar asignado
a una tecla diferente. Pueden existir dispositivos MID que tengan botones especiales
que hagan la función de movimiento y disparo: UP, DOWN, LEFT, RIGHT y FIRE, o
puede que estas acciones estén asociadas a los botones 2, 8, 4, 6 y 5
respectivamente. En cualquier caso, el programador no tiene por qué conocer a que
tecla específica está asociada una acción en concreto, lo que nos facilita bastante el
trabajo.
MIDP nos proporciona algunos métodos que nos permiten realizar conversiones entre
los códigos generales de teclado (keyCodes) y los códigos de juegos (ver Tabla 5.22).
Los métodos proporcionados por Canvas para controlar los eventos de bajo nivel
keyPressed(int keyCode), keyRepeated(int keyCode) y keyReleased(int keyCode)
trabajan con códigos genéricos de teclado (keyCodes). Para poder trabajar con
códigos de juegos tenemos que usar el método getGameAction(int keyCode) dentro de
cada uno de los métodos anteriores:
30
UNIVERSIDAD PRIVADA TELESUP
Main-Class: Clase_main_sin_extension
Sealed: true
Luego en consola:
jar cmf temp.mf MiEjecutable.jar archivo1.class
archivo2.class
31
UNIVERSIDAD PRIVADA TELESUP
Se permiten comodines (para incluir todos los class de la carpeta o que cumplan con
alguna condición dada):
jar cmf temp.mf MiEjecutable.jar archivo$.class
o
jar cmf temp.mf MiEjecutable.jar *.class
Para ejecutarlo desde consola:
java -jar MiEjecutable.jar
32
UNIVERSIDAD PRIVADA TELESUP
Archivos .JAR
Los MIDlets son empaquetados en carpetas .JAR junto a imágenes, logos, para formar
una MIDlet suite.
✓ Cada archivo .JAR lleva asociado un archivo .JAD (Java Application Descriptor,
Descriptor de Aplicación Java) que es utilizado para gestionar la instalación.
✓ El archivo .JAM (Java Application Manager, Manejador de Aplicaciones Java)
es el encargado de gestionar la descarga y la instalación de los MIDlets.
33
UNIVERSIDAD PRIVADA TELESUP
34
UNIVERSIDAD PRIVADA TELESUP
MIDlet: CREACIÓN
MIDlet: PUBLICACIÓN
35
UNIVERSIDAD PRIVADA TELESUP
INSTALAR MIDlet
Para poder instalar un MIDlet en un teléfono celular del cliente se siguen los siguientes
pasos:
✓ Paso 1: El Cliente pide una el archivo JAD.
✓ Paso 2: El archivo JAD es descargado al Cliente.
✓ Paso 3: El JAM verifica el archivo JAD.
✓ Paso 4: Se descarga la MIDlet suite al Cliente.
36
UNIVERSIDAD PRIVADA TELESUP
• Puede comprobar que el MIDlet no vulnera las políticas de seguridad del móvil.
• Puede transformar (convertir) el MIDlet de formato “público” a un formato específico
del dispositivo.
• Se extrae la aplicación del paquete (JAR) y se deja en disposición de ser
ejecutada.
MIDlet: EJECUCIÓN
El usuario selecciona el MIDlet y lo ejecuta, en este momento, el MIDlet entra en la
VM y se invocan los métodos que gestionan su ciclo de vida:
✓ Paused: Iniciado y a la espera.
✓ Active: Tiene recursos ejecutando.
✓ Destroyed: Ha liberado recursos, destruido hilos y terminado toda su actividad.
37
UNIVERSIDAD PRIVADA TELESUP
Borrado:
A través del AMS puede borrarse un MIDlet cuando no va a utilizarse más.
Se borra:
• MIDlet.
• Todos los registros en memoria permanente escritos por ese MIDlet.
MIDlet SUITE:
• Conjunto de MIDlets contenidas en un mismo .JAR. +
• El archivo .JAR cumple el formato estándar.
• Incluye los archivos de clases y otros recursos asociados al MIDlet, por
ejemplo imágenes.
• Normalmente aunque sólo se incluya un MIDlet se trabaja con MIDlet Suite.
• Los MIDlets en un MIDlet Suite comparten recursos:
• Contenidos en el JAR.
• RMS creados por los otros MIDlets del mismo MIDlet Suite.
MIDlet: MANIFIESTO
• El manifiesto (manifest.mf) está incluido en el JAR y contiene información
sobre los contenidos del archivo JAR.
• Archivo de texto con la estructura: atributo:valor
38
UNIVERSIDAD PRIVADA TELESUP
MIDlet: DESCRIPTOR
• Archivo de extensión .JAD y que permite al AMS comprobar si el MIDlet es
adecuado para descargarlo.
• Sigue el mismo formato que un manifiesto
MIDlet: javax.microedition.midlet.MIDlet
• Clase abstracta base para todos los MIDlets:
–protected MIDlet()
• Constructor para crear un MIDlet, sin argumentos.
–protected abstract void startApp() throws MIDletStateChangeException
• Se le llama cuando el MIDlet comienza (paused -> active state)
–protected abstract void pauseApp()
39
UNIVERSIDAD PRIVADA TELESUP
40
UNIVERSIDAD PRIVADA TELESUP
Archivo .JAD
MIDlet-Name: HelloWorld
MIDlet-Vendor: UC3M_APMOV
MIDlet-Version: 1.0
MIDlet-Jar-Size: 1204
MIDlet-Jar-URL: HelloWorld.jar
MIDlet-1: HelloWorld, HelloWorld.png, HelloWorld
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
MANIFIESTO
MIDlet-Name: HelloWorld
MIDlet-Vendor: UC3M_APMOV
MIDlet-Version: 1.0
MIDlet-1: HelloWorld, HelloWorld.png, HelloWorld
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
JAVA VERIFIED™
Si queremos que nuestras aplicaciones las utilicen terceros es importante pasar por un
proceso de verificación, si es una aplicación Java ME será el Java Verified™.
–Importante si queremos darla de alta en las tiendas de aplicaciones más populares.
41
UNIVERSIDAD PRIVADA TELESUP
Gráficos TEMA 4
Vectoriales
con JME
Competencia:
Emplear adecuadamente los gráficos
vectoriales con JVM en diferentes
aplicaciones pertinentes
42
UNIVERSIDAD PRIVADA TELESUP
Sistema de coordenadas
Vamos a comenzar a partir de este punto a explicar las
nociones necesarias para poder dibujar en la pantalla de
43
UNIVERSIDAD PRIVADA TELESUP
un MID. Dado que la clase Graphics nos va a proporcionar bastantes recursos para
dibujar en una pantalla Canvas, hemos de comprender como se organiza esta pantalla
en base a los pixeles, ya que al programar en bajo nivel hemos de trabajar a nivel de
pixel. La clase Canvas nos proporciona los métodos necesarios para obtener el ancho
y el alto de la pantalla a través de getWidth() y getHeight() respectivamente. Una
posición en la pantalla estará definida por dos coordenadas x e y que definirán el
desplazamiento lateral y vertical, siendo la posición (0,0) el pixel situado en la esquina
superior izquierda. Incrementando los valores de x e y, nos moveremos hacia la
derecha y hacia abajo respectivamente.
MANEJO DE TEXTO
La clase Font permite seleccionar el tipo de letra. Los atributos posibles son los
siguientes:
44
UNIVERSIDAD PRIVADA TELESUP
Figuras geométricas
Ya decíamos anteriormente que la clase Graphics nos proporcionaba métodos
capaces de mostrar figuras geométricas por pantalla. Estas figuras pueden ser: líneas,
rectángulos y arcos.
Líneas
Esta es la figura más simple que podemos representar. Una línea queda definida por
un punto inicial que representaremos por (x1, y1) y un punto final representado por
(x2,y2). Pues esa es toda la información que necesitamos para dibujar cualquier línea
en una pantalla Canvas, simplemente llamando a su constructor de la siguiente forma:
g.setColor(0,0,0) //Selecciono el color negro
g.drawLine(x1,y1,x2,y2) //Dibujo una línea desde (x1,y1) a (x2,y2)
45
UNIVERSIDAD PRIVADA TELESUP
Rectángulos
Aquí se nos da la posibilidad de dibujar hasta 4 tipos diferentes de rectángulos.
1. Plano
2. Plano con color de relleno
3. Redondeado
4. Redondeado con color de relleno
Para crear cualquier tipo de rectángulo tenemos que definir cuatro parámetros.
Los dos primeros corresponden al punto inicial (x,y), y los dos últimos al ancho y alto
del rectángulo:
g.setColor(0,0,0); //Selecciono el color negro
g.drawRect(x,y,ancho,alto); //Dibujo un rectángulo
Si queremos dibujar un rectángulo con color de relleno tendremos que escribir:
g.fillRect(x,y,ancho,alto);
Cuando vayamos a construir rectángulos con las esquinas redondeadas, es necesario
definir dos parámetros más: arcWidth y arcHeight que especifican el grado de
redondez, tal y como aparece en la Figura 5.11.
46
UNIVERSIDAD PRIVADA TELESUP
Arcos
En este caso podemos dibujar dos tipos de arcos: Arco simple o arco con color de
relleno. Para dibujar un arco tenemos que imaginarnos que ese arco va dentro de una
“caja” (ver Figura 5.12).
Aquí podemos ver un círculo y también el cuadrado que delimita a ese círculo.
Cuándo vayamos a crear un arco tenemos que tener en mente la “caja” que lo va a
delimitar. Esto es así porque a la hora de crear un arco hemos de crear primero esa
caja, especificando los parámetros como hacíamos cuando creábamos un rectángulo,
además del ángulo inicial y ángulo total.
47
UNIVERSIDAD PRIVADA TELESUP
ó
g.fillArc(1,1,getWidth()-1,getHeight()-1,90,290);
podemos ver el resultado en la Figura 5.13.
Ejercicio
Implementar un Midlet que permita mostrar una imagen en pantalla y moverla con el
teclado del dispositivo.
48
UNIVERSIDAD PRIVADA TELESUP
Internacionalización
Los desarrolladores de aplicaciones MIDP deben conocer las herramientas que nos
proporciona Java para emigrar programas escritos en un determinado idioma a otro
diferente. Las características lingüísticas, geográficas y culturales de un determinado
idioma son aspectos que debemos tener en cuenta al desarrollar un MIDlet. Estas
características forman lo que denominados internacionalización. En vez de este
término se usa normalmente i18n, ya que la palabra internacionalización posee 18
letras entre la i y la n. Para poder llevar a cabo este proceso, Java hace uso de los
llamados Locale que es una clase que almacena información sobre un determinado
idioma.
Aspectos a internacionalizar
49
UNIVERSIDAD PRIVADA TELESUP
Limitaciones
Como es bien sabido, los dispositivos MID poseen
bastantes restricciones. En este caso, como en la
mayoría, solo poseemos un subconjunto de las clases
orientadas a la internacionalización que posee J2SE.
Veamos cuales son las limitaciones con las que nos
vamos a encontrar:
50
UNIVERSIDAD PRIVADA TELESUP
Actividades y Ejercicios
Autoevaluación
1) Está relacionado con la realidad virtual:
a. Gráficos en 3D.
b. Gráficos en 5D.
c. Gráficos en 2D.
d. Gráficos en 4D.
e. Gráficos en HD..
2) Midlet es:
a. Un programa de lenguaje en VME.
b. un programa en lenguaje de programación Java.
c. Un programa en lenguaje de programación en Eclipse.
d. Un programa en lenguaje de programación en Applet
e. Un programa en lenguaje de programación en Multimedia.
52
UNIVERSIDAD PRIVADA TELESUP
53
UNIVERSIDAD PRIVADA TELESUP
e. SCRIPT.
Resumen
e. Graphics translate (int x, int y).
UNIDAD DE APRENDIZAJE I:
54
UNIVERSIDAD PRIVADA TELESUP
55
UNIVERSIDAD PRIVADA TELESUP
Introducción
a) Presentación y contextualización
Los temas que se tratan en la presente unidad temática, tienen por finalidad que el
estudiante tome conocimiento del lenguaje de programación Java Las aplicaciones
de Java son generalmente compiladas a bytecode (clase Java) que puede
ejecutarse en cualquier máquina virtual Java (JVM) sin importar la arquitectura de la
computadora subyacente.
b) Competencia
Describe las aplicaciones en Java 2D y Java 3D en los diferentes contextos
profesionales.
c) Capacidades
d) Actitudes
56
UNIVERSIDAD PRIVADA TELESUP
Introducción TEMA 1
a
Java 2D
Competencia:
57
UNIVERSIDAD PRIVADA TELESUP
INTRODUCCIÓN A JAVA2D
El control de relleno de las figuras y selector de colores.
✓ La clase Color contiene métodos y constantes para manipular los
colores.
✓ La clase Font contiene métodos y constantes para manejar
tipos de letras.
✓ La clase Font Metrics contiene métodos para obtener
información sobre los tipos de tetras.
✓ La clase Polygon contiene métodos para crear polígonos.
✓ La clase Graphics contiene métodos para dibujar cadenas, líneas, rectángulos y
demás figuras.
58
UNIVERSIDAD PRIVADA TELESUP
Control de colores
La clase Color declara los métodos y las constantes para
manipular los colores en un programa de Java. A
continuación se detallan algunos métodos de Graphics
que son específicos para los colores.
public Color (int r,int g, int b)
Crea un color basado en componentes rojo, verde y
azul, como enteros 0 a 255.
public Color (flota r, flota g, flota tb)
Crea un color basado en componentes rojo, verde y
azul, como valores de punto flotante de 0.0 a 1.0.
59
UNIVERSIDAD PRIVADA TELESUP
SELECTOR DE COLORES
El Paquete javax.swing proporciona el
componente de la GUI JColorChooser para
60
UNIVERSIDAD PRIVADA TELESUP
Esquema:
protected void paintComponent(Graphics g)
Primero se debe invocar el método paintComponent() de la superclase.
public class Lienzo extends JPanel {
protected void
paintComponent(Graphics g) {
super.paintComponent(g);
// ...
}
}
61
UNIVERSIDAD PRIVADA TELESUP
Ejemplo1.java:
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int width = (int) getSize().getWidth();
int height = (int) getSize().getHeight();
g.setColor(Color.ORANGE);
g.fillRect(0,0,width,height);
}
El contexto gráfico
La clase Graphics de java.awt proporciona las primitivas
necesarias para pintar diferentes tipos de elementos
(rectángulos, óvalos, cadenas, etc.) sobre el lienzo.
drawLine(), drawRect(), fillRect(),
drawOval(), fillOval(), drawString() …
Además, mantiene información como el color y la fuente
empleados
get/setColor(), get/setFont()
Eventos de ratón
La clase Component (del paquete java.awt) proporciona
dos métodos que permiten añadir un oyente para capturar
los eventos generados por el ratón, incluyendo los eventos
de movimiento.
void addMouseListener(MouseListener l)
62
UNIVERSIDAD PRIVADA TELESUP
void addMouseMotionListener(MouseMotionListener l)
La interfaz MouseListener
✓ void mouseClicked(MouseEvent e)
✓ void mouseEntered(MouseEvent e)
✓ void mouseExited(MouseEvent e)
✓ void mousePressed(MouseEvent e)
✓ void mouseReleased(MouseEvent e)
La clase MouseAdapter proporciona una implementación por defecto (esto es, que no
hace nada) de todas las operaciones de la interfaz MouseListener.
La interfaz MouseMotionListener
✓ Como su nombre indica, nos permite capturar aquellos eventos del ratón
relacionados con el movimiento del mismo.
✓ void mouseDragged(MouseEvent e)
✓ void mouseMoved(MouseEvent e)
La clase mouseevent
Proporciona información acerca del evento
de ratón que se ha producido.
Algunos de sus métodos más usados son:
- int getX()
- int getY()
- Point getPoint()
- Object getSource(): método heredado de EventObject
- int getButton(): devuelve alguna se las siguientes constantes: NOBUTTON,
BUTTON1, BUTTON2 ó BUTTON3
Ejemplo 1:
63
UNIVERSIDAD PRIVADA TELESUP
public Lienzo() {
super();
addMouseListener( new MyMouseListener() );
}
class MyMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
// ...
}
}
Ejemplo2:
…
g.setColor(newColor(0x00,0x00,0x00) );
g.setFont(newFont("Arial",Font.ITALIC,18) );
g.drawString("Haz clic aquí",50,50);
}
class MyMouseListener extendsMouseAdapter{
public void mouseClicked(MouseEvent event){
System.out.println("coordenada x: " + event.getX() +
", " + "coordenada y: " + event.getY() );
}
}
64
UNIVERSIDAD PRIVADA TELESUP
Video TEMA 2
y Sonido
con Java
Competencia:
66
UNIVERSIDAD PRIVADA TELESUP
JAVE requiere un entorno J2SE 1.4 o posterior y una cuenta de Windows o Linux en
una arquitectura de hardware i386 / 32 bits. JAVE también puede ser fácilmente
portado a otros sistemas operativos y configuraciones de hardware, consulte el manual
JAVE para más detalles.
Licencia
JAVE es software libre y esta licenciado bajo GPL (se
encuentra una copia de la licencia en el paquete de
distribución de software descargable).
Java Media Framework
Con la aparición de Java Media Framework ha
cambiado el panorama multimedia de Java. Gracias a
que ya es posible desarrollar aplicaciones multimedia
que utilicen audio y vídeo de una forma sencilla y práctica, sin perder por ello la
compatibilidad que siempre ofrece Java.
Hasta hace poco las posibilidades multimedia de Java eran bastante reducidas.
Debido a estas carencias, se crearon grupos de desarrollo que generaban
librerías para reproducir otros formatos de sonido, como por ejemplo MIDI. En
cuanto al vídeo no existía nada.
¿QUÉ ES JMF?
JMF (“Java Media Framework”) proporciona herramientas para la captura,
procesamiento y almacenamiento de datos multimedia.
Permite su transmisión y recepción a través de Internet.
Más concretamente permite:
Reproducir archivos multimedia en applets y aplicaciones, flujos
multimedia recibidos en tiempo real a través de la red y
capturar audio y vídeo de un micrófono y una cámara de
vídeo.
67
UNIVERSIDAD PRIVADA TELESUP
ARQUITECTURA DE JMF
JMF funciona como una cadena de música
como un reproductor de CD´s.
Entrada: Captura, lee un archivo o recibe de
la red.
Proceso: Aplica efectos (filtros), comprime o
descomprime, convierte entre formatos.
Salida: Dispositivo de salida, guardar en un archivo o enviarla por la red.
Data Source
Clase de javax.media.protocol, representa el origen
68
UNIVERSIDAD PRIVADA TELESUP
Player
Processor
Es un tipo de reproductor, subinterfaz de javax.media.
Player aporta dos características suplementarias;
Puede volcar los datos procesados en un código
fuente, en lugar de en un dispositivo de salida. Y
cambiar de formato lo datos.
DataSink
Es una interfaz de javax.media que envía los datos a un destino distinto de los
dispositivos de salida, como un archivo o un flujo de salida RTP.
Format
Es una clase de javax.media que modela el formato de los datos multimedia, tiene dos
subclases:
✓ AudioFormat: Encapsula información sobre el formato de datos de audio:
✓ Frecuencia de muestreo.
✓ Número de bits por muestra.
69
UNIVERSIDAD PRIVADA TELESUP
✓ Número de canales.
✓ VideoFormat: Encapsula información sobre el formato de datos de vídeo.
Manager
Es una clase Final de javax.media que contiene
métodos estáticos para crear instancias de todas las
interfaces y clases anteriores.
Estructura de las aplicaciones desktop
La realidad de cada empresa es única y por eso
muchas veces es necesario la implementación de un
software desarrollado a medida para conseguir
respuestas adecuadas a sus necesidades.
Una aplicación Desktop (también llamada de escritorio) es aquella que está instalada
en el computador del usuario, que es ejecutada directamente por el sistema operativo,
ya sea Microsoft Windows, Mac OS X, Linux o Solaris, y cuyo rendimiento depende de
diversas configuraciones de hardware como memoria RAM, disco duro, memoria de
video, etc.
70
UNIVERSIDAD PRIVADA TELESUP
Ventajas:
❖ Habitualmente su ejecución no requieren comunicación con el exterior, sino que
se realiza de forma local. Esto repercute en mayor velocidad de procesamiento, y
por tanto en mayores capacidades a la hora de programar herramientas más
complicadas o funcionales.
❖ Suelen ser más robustas y estables que las aplicaciones web.
❖ Rendimiento: el tiempo de respuesta es muy rápido.
❖ Seguridad: pueden ser muy seguras (dependiendo del desarrollador).
Desventajas:
❖ Su acceso se limita al computador donde están
instaladas.
❖ Son dependientes del sistema operativo que
utilice el computador y sus capacidades (video,
memoria, etc).
❖ Requieren instalación personalizada.
❖ Requieren actualización personalizada.
71
UNIVERSIDAD PRIVADA TELESUP
TEMA 3
Java 3D
Competencia:
EL API JAVA 3D
Todo programa Java 3D está, al menos, parcialmente
ensamblado por objetos del árbol de clases Java 3D.
Esta colección de objetos describe un universo virtual,
que va a ser renderizado. El API define unas 100 clases
presentadas en el paquete javax.media.j3d.
Hay cientos de campos y métodos en las clases del API
Java 3D.
73
UNIVERSIDAD PRIVADA TELESUP
En el resto del texto, el término objeto visual se utilizará para referirnos a un "objeto del
escenario gráfico" (por ejemplo, un cubo o una esfera). El término objeto sólo se usará
para referirse a un ejemplar de una clase. El término contenido se usará para
referirnos a objetos visuales en un escenario gráfico como un todo.Construir un
Escenario Gráfico Un universo virtual Java 3D se crea desde un escenario gráfico. Un
74
UNIVERSIDAD PRIVADA TELESUP
escenario gráfico se crea usando ejemplares de clases Java 3D. El escenario gráfico
está ensamblado desde objetos que definen la geometría, los sonidos, las luces, la
localización, la orientación y la apariencia de los objetos visuales y sonoros.
Sólo existe un camino desde la raíz de un árbol a cada una de las hojas; por lo tanto,
sólo hay un camino desde la raíz hasta el escenario gráfico de cada nodo hoja. El
camino desde la raíz de un escenario gráfico hasta una hoja especificada es el camino
75
UNIVERSIDAD PRIVADA TELESUP
al escenario gráfico del nodo hoja. Como un camino de un escenario gráfico trata
exactamente con un sola hoja, hay un camino de escenario gráfico para cada hoja en
el escenario. Todo camino de escenario gráfico en un escenario gráfico Java 3D
especifica completamente la información de estado de su hoja.
76
UNIVERSIDAD PRIVADA TELESUP
El símbolo de la flecha sólida representa una relación padre-hijo entre dos objetos. La
flecha punteada es una referencia a otro objeto. Los objetos referenciados pueden ser
compartidos entre diferentes ramas de una escenario gráfico. En la Figura 1-2,
podemos ver un sencillo escenario gráfico:
77
UNIVERSIDAD PRIVADA TELESUP
Pero el escenario gráfico define dos objetos visuales que re-usan el objeto visual
(Shape3D) del lado derecho de la figura. Conceptualmente, cada objeto Transform
Group que apadrina al ejemplar compartido de Shape3D podría situar una imagen en
el objeto visual en diferentes localizaciones. Sin embargo, es un escenario gráfico
ilegal porque el arco padre-hijo no forma un árbol. En este ejemplo, el resultado es que
el objeto Shape3D tiene más de un padre.
78
UNIVERSIDAD PRIVADA TELESUP
Las explicaciones del árbol y de las estructuras DAG son correctas. Sin embargo, el
sistema de ejecución Java 3D reporta el error en términos de la relación hijo-padre.
Un resultado de la limitación de la estructura de árbol es que cada objeto Shape3D
está limitado a un sólo padre. Para el ejemplo de la Figura 1-3, se lanzará una
excepción 'multiple parent' en el momento de la ejecución. La Figura 1-4, con un padre
para cada objeto Shape3D, muestra una posible solución para este escenario gráfico.
Un programa Java 3D que define un escenario gráfico ilegal podría compilarse, pero
no se renderiza. Cuando se ejecuta un programa Java 3D que define un escenario
gráfico ilegal, el sistema Java 3D detecta el problema y lanza una excepción. El
programa podría estar ejecutándose y consecuentemente deberíamos pararlo. Sin
embargo, no se renderizará ninguna imagen.
79
UNIVERSIDAD PRIVADA TELESUP
Cada escenario gráfico tiene un sólo VirtualUniverse. Este objeto tiene una lista de
objetos Locale. Un objeto Locale proporciona una referencia a un punto en el universo
virtual. Podemos pensar en los objetos Locale como marcas de tierra que determinan
la localización de los objetos visuales en el universo virtual.
80
UNIVERSIDAD PRIVADA TELESUP
81
UNIVERSIDAD PRIVADA TELESUP
Clases TEMA 4
y Aplicaciones
en Java 3D
Competencia:
82
UNIVERSIDAD PRIVADA TELESUP
Clase node
La clase Node es una superclase abstracta de las clases
Group y Leaf. Esta clase define algunos de los métodos
importantes de sus subclases. Las subclases de Node
componen escenarios gráficos.
Clase Group.La clase Group es la superclase usada
en especificación de localización y orientaciónde objetos
visuales en el universo virtual. Dos de las subclases de
Group son:BranchGroup y TransformGroup. En la representación gráfica de un
escenariográfico, los símbolos de Group (círculos) normalmente se anotan con BG
paraBranchGroups, TG para TransformGroups, etc. La Figura 1-2 muestra
algunosejemplos de esto.
Clase Leaf.La clase Leaf es la superclase usada para especificar la forma, el sonido
ycomportamiento de los objetos visuales en el universo virtual. Algunas de la
subclases de Leaf son: Shape3D, Light, Behavior, y Sound. Estos objetos podríanno
tener hijos pero podrían referenciar a NodeComponents.
Clase NodeComponentLa clase NodeComponent es la superclase usada para
especificar la geometría, laapariencia, la textura y las propiedades de material de un
nodo Shape3D (Leaf).
83
UNIVERSIDAD PRIVADA TELESUP
84
UNIVERSIDAD PRIVADA TELESUP
Esta receta puede usarse para ensamblarmuchos útiles programas Java 3D.
1. Crear un Objeto Canvas3D
2. Crear un objeto VirtualUniverse
3. Crear un objeto Locale, adjuntarlo al objeto
VirtualUniverse Construir la rama de vista
gráfica
❖ Crear un objeto View
❖ Crear un objeto ViewPlatform
❖ Crear un objeto PhysicalBody
❖ Crear un objeto PhysicalEnvironment
❖ Adjuntar los objetos ViewPlatform, PhysicalBody,
❖ PhysicalEnvironment, y Canvas
❖ 3D al objeto View
85
UNIVERSIDAD PRIVADA TELESUP
Una Sencilla Receta para Escribir Programas Java 3DLos programas Java 3D
escritos usando la receta básica tienen ramas de vistagráfica con idéntica estructura.
La regularidad de la estructura de las ramas de vistagráfica también se encuentra en
la clase de utilidad SimpleUniverse. Losejemplares de esta clase realizan los pasos 2,
3 y 4 de la receta básica. Usando laclase SimpleUniverse en programación Java 3D
se reduce significativamente eltiempo y el esfuerzo necesario para crear las ramas de
vista gráfica.Consecuentemente, el programador tiene más tiempo para concentrarse
en elcontenido. Esto de lo que se trada el escribir programas Java 3D.
La clase SimpleUniverse es un buen punto de inicio en la programación Java
3D,porque permite al programador ignorar las ramas de vista gráfica. Sin embargo,
usarSimpleUniverse no permite tener varias vistas de un universo virtual.
La clase SimpleUniverse
El constructor de SimpleUniverse crea un
escenario gráfico que incluye un
objetoVirtualUniverse y Locale, y una rama
de vista gráfica completa. Esta rama
gráficacreada usa un ejemplar de las clases
de conveniencia ViewingPlatform y
Vieweren lugar de las clases corazón
usadas para crear una rama de vista
gráfica. Observaque SimpleUniverse sólo usa indirectamente los objetos View y
ViewPlatform delcorazón Java 3D. Los objetos SimpleUniverse suministran la
funcionalidad de todoslos objetos que hay dentro del recuadro azul de la Figura 1-7.
86
UNIVERSIDAD PRIVADA TELESUP
87
UNIVERSIDAD PRIVADA TELESUP
La Figura 1-9 muestra la relación entre el plato de imagen, la posición del ojo, y
eluniverso virtual. La posición del ojo está detrás del plato de imagen. Los
objetosvisuales delante del plato de imagen son renderizados en el plato de imagen.
Elrenderizado puede ser como una proyección de los objetos visuales sobre el plato
deimagen. Esta idea se ilustra con los cuatro proyectores de la imagen
(líneaspunteadas).
88
UNIVERSIDAD PRIVADA TELESUP
89
UNIVERSIDAD PRIVADA TELESUP
90
UNIVERSIDAD PRIVADA TELESUP
Lecturas Recomendadas
❖ CÓMO TRATAR CON JAVA FIGURAS, IMÁGENES Y TEXTO EN DOS DIMENSIONES
http://www.lcc.uma.es/~galvez/ftp/libros/Java2D.pdf
❖ MULTIMEDIA EN JAVA
http://www.uv.es/~jgutierr/MySQL_Java/GUI.pdf
❖ INTRODUCCIÓN A JAVA 3D
http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r89548.PDF
Actividades y Ejercicios
2. Realice un programa en Java 2D, que incluya audio (A.) y video (V.)
que explique el efecto fotoeléctrico.
Envíalo a través de "Java 2D A&V".
3. Realice un programa en java 3D, que explique cómo obtener las
diferentes cónicas (parábola, elipse, etc.) haciendo cortes a un cono.
Envíalo a través de "Java 3D".
91
UNIVERSIDAD PRIVADA TELESUP
Autoevaluación
1) ¿Qué color crea la sentencia: public color (int r,int g, int b)?
a. Color basado en componentes rojo, verde y azul.
b. Color basado en componentes rojo, gris y verde.
c. Color basado en componentes rojo, verde y amarillo.
d. Color basado en componentes verde, amarillo y azul.
e. Color basado en componentes rojo, amarillo y azul.
3) El JAVE es:
a. Wrapper Java en el font proyecto.
b. Wrapper Java en el mp3 proyecto.
c. Wrapper Java en el ffmpeg proyecto.
d. Wrapper Java en el mp4 proyecto.
e. Wrapper Java en el avi proyecto.
92
UNIVERSIDAD PRIVADA TELESUP
93
UNIVERSIDAD PRIVADA TELESUP
Resumen
UNIDAD DE APRENDIZAJE ii:
Todo programa Java 3D está, al menos, parcialmente ensamblado por objetos del árbol
de clases Java 3D. Esta colección de objetos describe un universo virtual, que va a ser
renderizado. El API define unas 100 clases presentadas en el paquete javax.media.j3d.
Todo programa 3D usa clases de los paquetes java.awt y javax.vecmath. El paquete
java.awt define el "Abstract Windowing Toolkit" (AWT). Las clases AWT crean una
ventana para mostrar el renderizado. El paquete javax.vecmath define clases de
vectores matemáticos para puntos, vectores, matrices y otros objetos matemáticos.
94
UNIVERSIDAD PRIVADA TELESUP
95
UNIVERSIDAD PRIVADA TELESUP
Introducción
a) Presentación y contextualización:
Los temas que se tratan en la presente unidad temática, tienen por finalidad que el
estudiante tome conozca el lenguaje VRML El Virtual Reality Modeling Language
es un lenguaje de modelado de mundos virtuales en tres dimensiones al igual que
el HTML.
b) Competencia:
c) Capacidades:
d) Actitudes:
96
UNIVERSIDAD PRIVADA TELESUP
Introducción TEMA 1
a VRML
Competencia:
Reconocer correctamente la sintaxis y
comandos de VRML.
97
UNIVERSIDAD PRIVADA TELESUP
Desarrollo de los Temas
VISUALIZADORES VRML:
Es posible visualizar archivos VRML mediante dos tipos de aplicaciones diferentes:
Documentos VRML:
Como se ha mencionado anteriormente, VRML es un
lenguaje de descripción de escenas en el que cada escena
se compone de un número de objetos. Los objetos pueden
ser formas sólidas situados y orientados de determinada forma u elementos
intangibles que afectan a la escena como luces, sonido y distintos puntos de vista.
Para crear estos mundos de realidad virtual se utilizan archivos de texto, cuya
extensión será siempre .wrl, los cuales pueden ser desarrollados mediante cualquier
editor o procesador de textos. Además existe la posibilidad de utilizar programas de
diseño gráfico, los cuales generan automáticamente archivos en formato VRML.
98
UNIVERSIDAD PRIVADA TELESUP
99
UNIVERSIDAD PRIVADA TELESUP
Los campos pueden ser simples o campos que indiquen a vectores u otros nodos.
Estilo de escritura de los programas:
VRML es un lenguaje sensible a mayúsculas y minúsculas, lo cual ha de ser
tenido en cuenta a la hora de asignar nombres.
Todos los nodos han de comenzar siempre con letra mayúscula.
Los campos de los nodos deben comenzar siempre con letra minúscula.
Los campos de los nodos deben comenzar siempre con letra minúscula.
Los números se escriben en punto flotante.
Utilizar una línea distinta para cada nodo, para cada campo y
para cada valor de cada campo.
Indentar cada línea, según su jerarquía.
Colocar cada símbolo de cierre en el nivel de
indentación que le corresponda.
Poner las líneas de comentario necesarias al mismo
nivel que lo que se comenta.
Poniendo nombres propios a los nodos.
100
UNIVERSIDAD PRIVADA TELESUP
El campo appearance especifica las propiedades en cuanto a textura, material, etc del
objeto que se describe en el campo geometry. Hablamos de formas primitivas cuando
Shape utiliza nodos geométricos primitivos para construir una figura. Los nodos
geométricos primitivos son los siguientes:
• Box (Caja) • Cylinder (Cilindro)
• Cone (Cono) • Sphere (Esfera)
101
UNIVERSIDAD PRIVADA TELESUP
102
UNIVERSIDAD PRIVADA TELESUP
Mediante los campos bottom, side y top se indica si se desea dibujar la base
inferior,la superfice lateral y la base superior del cilindro. Por defecto estos campos
toman el valor TRUE, lo cual indica que se dibuja el cilindro completo.
Ejemplo:
Cylinder{
height 2.0
radius 1.5
}
103
UNIVERSIDAD PRIVADA TELESUP
Construcción TEMA 2
de Formas
de Texto
Competencia:
Conocer el proceso de construcción de formas
de texto usando los comandos adecuados.
104
UNIVERSIDAD PRIVADA TELESUP
En los mundos virtuales será a menudo necesario utilizar textos para guiar al visitante
Para ello existe un nodo específico, el nodo Text. Una de las principales
características de los textos es que son planos, es decir, no tienen profundidad.
NODO TEXT: Como en cualquier procesador de textos, se nos permitirá indicar el
tipo de fuente, su estilo, su tamaño, el espaciado entre caracteres, justificación de los
párrafos, etc.
Sintaxis:
Text {
string ["linea_texto 1",
"linea_texto 2",
.
.
.
"linea_texto N",]
fontStyle FontStyle {
family "Nombre_Fuente",
style "Estilo_Fuente",
size Tamaño_Fuente
spacing espaciado_entre_caracteres
justify "justificación_del_texto"
}
}
105
UNIVERSIDAD PRIVADA TELESUP
Siempre que aparezca este campo tomará como valor el nodo llamado FontStyle.
NODO FONTSTYLE:
Sintaxis:
FontStyle {
family "Nombre_Fuente",
style "Estilo_Fuente",
size Tamaño_Fuente
spacing espaciado_entre_caracteres
justify "justificación_del_texto"
}
Los posibles valores de los campos del nodo FontStyle son los que se muestran a
continuación:
family: Determina la fuente que se va a utilizar para el texto. Se puede escoger entre
"SERIF", "SANS" o "TYPEWRITER". Obsérvese que los nombres están en
mayúsculas.
style: Se puede escoger entre "BOLD" (negrita), "ITALIC" (cursiva), "BOTH" (negrita y
cursiva) o "NONE" (tipo de letra normal).
106
UNIVERSIDAD PRIVADA TELESUP
De igual forma que con los nodos geométricos primitivos, mediante el nodo Text lo
único que se consigue es definir la estructura del texto, sin embargo no se puede
visualizar, ya que no hemos indicado como se ha de presentar en el mundo virtual.
Para conseguir esto, se integra en el nodo Shape, de la misma manera que se hacía
con los nodos primitivos:
Shape {
appearance ...
geometry Text { ... }
}
107
UNIVERSIDAD PRIVADA TELESUP
Una vez que el texto se encuentra en el mundo virtual se puede manipular como
cualquier otro objeto (girándolo, etc.), ya que lo único que lo diferencia de los nodos
primitivos es que posee dos dimensiones en lugar de tres.
Ejemplo:
#VRML V2.0 utf8
Shape{
appearance Appearance{
material Material {}
}
geometry Text {
string ["Esta es la primera fila de texto",
"esta es la segunda fila",
"etc."]
fontStyle FontStyle {
family "SERIF",
style "BOLD",
size 1.0
spacing 1.0
justify "BEGIN"
}
}
}
108
UNIVERSIDAD PRIVADA TELESUP
Nodos TEMA 3
de
Agrupación
Competencia:
Aplicar los diversos nodos que nos permitan
agrupar objetos y construirlos de manera
más compleja.
109
UNIVERSIDAD PRIVADA TELESUP
Hasta ahora hemos visto los objetos aisladamente. Veamos ahora cómo podemos
agruparlos para conseguir formas más complejas. Existen diversos nodos que nos
permiten agrupar objetos:
Nodo Group
Nodo Transform
Nodo Switch
Nodo Billboard
NODO GROUP:
El nodo Group permite unir un conjunto de nodos de forma que actúen como una
entidad única, pero sin efectuar ninguna transformación en ellos. La principal
característica de este tipo de grupo es que los objetos son creados todos en el mismo
punto (en el centro del escenario de realidad virtual).
Sintaxis:
Group {
children [ ... ]
}
110
UNIVERSIDAD PRIVADA TELESUP
Ejemplo:
#VRML V2.0 utf8
#Ejemplo de agrupación de una caja y un cono
Group {
children [
#Aquí empieza la caja:
Shape {
appearance Appearance {
material Material { } }
geometry Box {
size 2.0 0.5 3.0
}
},
#Aquí empieza el cono:
Shape {
appearance Appearance {
material Material { }
}
geometry Cone {
height 3.0
bottomRadius 0.75
}
}
]
}
111
UNIVERSIDAD PRIVADA TELESUP
112
UNIVERSIDAD PRIVADA TELESUP
Ejemplo:
Transform{
# Ejes: X Y Z Ángulo
rotation 0.0 0.0 1.0 0.52
children [...]
}
113
UNIVERSIDAD PRIVADA TELESUP
Con este ejemplo se pretende hacer girar el sistema de coordenadas del grupo sobre
el eje Z 0.52 radianes. Nótese que solamente uno de los ejes puede tomar un valor
(que ha de ser forzosamente la unidad) mientras el resto ha de permanecer a cero. De
esta forma sólo hay tres combinaciones posibles con las que rellenar los ejes del
campo rotation:
Rotación sobre el eje X 1.0 0.0 0.0
Rotación sobre el eje Y 0.0 1.0 0.0
Rotación sobre el eje Z 0.0 0.0 1.0
114
UNIVERSIDAD PRIVADA TELESUP
Ejemplo:
Transform{
# Ejes: X Y Z
scale 0.5 0.5 0.5
children [...]
}
El ejemplo anterior hace que los ejes del sistema de coordenadas del grupo sean
un50% (0.5) más pequeño que los ejes del sistema principal y por lo tanto el objeto
diseñado en estos ejes reducirá su tamaño a la mitad. Si se hubiese querido que
fuesen el doble de grandes, el ejemplo hubiese sido el siguiente:
Ejemplo:
Transform{
# Ejes: X Y Z
scale 2 2 2
children [...]
}
115
UNIVERSIDAD PRIVADA TELESUP
116
UNIVERSIDAD PRIVADA TELESUP
Más TEMA 4
Nodos
Competencia:
Emplear los diferentes nodos de agrupación
en aplicaciones de realidad virtual.
117
UNIVERSIDAD PRIVADA TELESUP
NODO SWITCH:
La principal característica de un nodo Switch es la de mostrar únicamente uno de los
nodos hijos del nodo, el cual ha debido ser seleccionado previamente. Se pueden
utilizar para conectar o desconectar los efectos de una determinada propiedad o para
alternar entre propiedades diferentes. El campo whichChild específica el hijo choice
que se va activar, siendo el 0 el del primer hijo. Su valor por defecto es -1, lo cual
indica que ninguno de los hijos está seleccionado. El campo whichChild es una
entrada y por lo tanto puede ser modificado por otro nodo.
Sintaxis:
Switch{
whichChoice 0
choice[...]
...
choice[...]
}
NODO BILLBOARD:
El nodo Billboard permite crear un grupo con un sistema de coordenadas especiales,
ya que a través del campo axisOfRotation (eje de rotación) indicamos el eje sobre el
que va de girar el objeto, de forma que, siempre esté de cara al espectador:
118
UNIVERSIDAD PRIVADA TELESUP
Shape {
appearance Appearance {
material Material { }
}
geometry Cylinder {
height 2.0
radius 0.5
}
}
119
UNIVERSIDAD PRIVADA TELESUP
Entonces, cada vez que se quiera usar este nodo en otra parte del documento, basta
con poner lo siguiente: En el ejemplo anterior de la caja y el cono, aparece el nodo
Appearance repetido. Vamos a definirlo, en la primera ocasión que se utiliza con el
nombre, "PorDefecto" y la segunda vez que se usa lo invocaremos mediante el
comando USE:
#VRML V2.0 utf8 size 2.0 0.5 3.0
#Ejemplo de agrupación de una caja y }
un cono, },
#haciendo uso de los comandos DEF y Shape {
USE. appearance USE PorDefecto
Group { geometry Cone {
children [ height 3.0
Shape { bottomRadius 0.75
appearance DEF PorDefecto }
Appearance { }
material Material { } ]
} }
geometry Box {
En este caso concreto, la simplificación no ha sido muy grande (sólo un par de líneas
menos de código), pero ha servido para ilustrar el concepto.
120
UNIVERSIDAD PRIVADA TELESUP
Lecturas Recomendadas
❖ GUÍA DE USUARIO DEL VISUALIZADOR VRML “CORTONA 3D”
http://www.ehu.es/docarq/LDA/publicaciones/vrml.pdf
❖ TUTORIAL VRML
http://www.cse.iitm.ac.in/~vplab/tutorial_vrml.pdf
Actividades y Ejercicios
121
UNIVERSIDAD PRIVADA TELESUP
Autoevaluación
1) Es posible visualizar archivos VRML mediante:
a. Plug-ins en visualizadores HTML 1
b. Ventanas en VRML
c. Pantallas VRML
d. Lenguajes VRML y JAVA
e. X3D y Applets
122
UNIVERSIDAD PRIVADA TELESUP
10) ¿Cuál es el nodo que permite crear un grupo con un sistema de coordenadas
especiales, sobre el que va de girar un objeto?
a. El nodo billaboard.
b. El nodo transform.
c. El nodo group.
d. El nodo Board.
e. El noto Text.
123
UNIVERSIDAD PRIVADA TELESUP
Resumen
UNIDAD DE APRENDIZAJE III:
El nodo text, como en cualquier procesador de textos, se nos permitirá indicar el tipo de
fuente, su estilo, su tamaño, el espaciado entre caracteres, justificación de los párrafos,
etc. El nodo Text posee dos campos: string y fontStyle. De igual forma que con los
nodos geométricos primitivos, mediante el nodo Text lo único que se consigue es definir
la estructura del texto, sin embargo no se puede visualizar, ya que no hemos indicado
como se ha de presentar en el mundo virtual.
Los nodos que permiten agrupar objetos: Nodo Group, Nodo Transform, Nodo Switch
y Nodo Billboard. El nodo Group permite unir un conjunto de nodos de forma que actúen
como una entidad única. Por defecto todos los objetos (Shapes) se construyen en el
centro del escenario virtual.
124
UNIVERSIDAD PRIVADA TELESUP
125
UNIVERSIDAD PRIVADA TELESUP
Introducción
a) Presentación y contextualización:
Los temas que se tratan en la presente unidad temática, tienen por finalidad que el
estudiante se perfeccione en el uso del código VRM llevando a desarrollar su
imaginación y destreza en un mundo virtual.
b) Competencia:
Desarrolla aplicaciones usando lenguaje VRML con otros lenguajes
llevándolos al mundo virtual.
c) Capacidades:
d) Actitudes:
126
UNIVERSIDAD PRIVADA TELESUP
El Color TEMA 1
de los
Objetos
Competencia:
Conocer las herramientas de color de objetos
a partir de códigos RGB para la
programación en VRML.
127
UNIVERSIDAD PRIVADA TELESUP
Desarrollo de los Temas
El nodo Material es el que controla las propiedades del color (selección del color, del
brillo, del grado de transparencia, etc.) que se van a dar al objeto. Los colores que se
le dan a los objetos son colores RGB, es decir, vienen dados por tres valores en
coma flotante, cada uno de los cuales representa uno de los colores primarios (Red,
Green, Blue) [Rojo, Verde y Azul]. El valor 0.0 representa la ausencia de color y el 1.0
la máxima intensidad.
128
UNIVERSIDAD PRIVADA TELESUP
NODO MATERIAL:
Con este nodo vamos a determinar el color y grado de transparecia de los objetos.
Sintaxis:
Shape{
appearance Appearance{
material Material{
diffuseColor color_RGB
emissiveColor color_RGB
specularColor color_RGB
ambientIntensity valor
transparency valor
shininess valor
}
}
geometry ...
}
Cada uno de los seis campos del nodo Material tiene su propio efecto específico sobre
un objeto. Todos son opcionales.
diffuseColor: El campo diffuseColor representa lo que la mayoría de los usuarios
llamarían como el color del objeto.
emissiveColor: El campo emissiveColor se utiliza para fijar el color del brillo del
objeto, cuando dicho objeto necesite ser visible en la oscuridad. De esta forma se
consigue un efecto en donde la figura representada parece iluminada desde el interior
mediante una luz de un determinado color.
129
UNIVERSIDAD PRIVADA TELESUP
130
UNIVERSIDAD PRIVADA TELESUP
Nodo Inline: El nodo Inline va a permitir crear un grupo en donde los hijos,
almacenados en distintos archivos VRML, son recuperados indicando su dirección
URL.
Sintaxis:
Inline{
url"dirección_url"
}
Ejemplo:
...
Inline{
url"mesa.wrl"
},
...
Transform{
translation ...
children [
Inline{url"silla.wrl"}
]
}
...
131
UNIVERSIDAD PRIVADA TELESUP
Sintaxis: Ejemplo:
Anchor{ Anchor{
url"dirección_URL" url"escalera.wrl"
description "descripción_del_enlace" description "Escaleras Flotantes"
children[...] children[...]
} }
132
UNIVERSIDAD PRIVADA TELESUP
NODO COORDINATE:
Sintaxis:
Coordinate {
point [
Eje_x Eje_Y Eje_Z,
Eje_x Eje_Y Eje_Z,
...
Eje_x Eje_Y Eje_Z
]
}
El campo point puede poseer varios puntos, cuyas coordenadas están separadas por
comas.
Ejemplo:
Coordinate {
point [
12.0 11.0 17.1,
20.5 13.8 5.3,
14.0 6.1 22.9
]
}
133
UNIVERSIDAD PRIVADA TELESUP
Sintaxis:
PointSet {
coord Coordinate {
point [ . . . ]
}
color Color {
color [ . . . ]
}
} "puntos.wrl"
El campo coord toma como valor un nodo de tipo Coordinate, el cual define los
puntos que se desean representar.
El campo color sirve para definir el color de cada uno de los puntos. Este campo toma
como valor un nodo Color, que a su vez contiene un campo de tipo color de nuevo.
Este último campo describe una lista de colores RGB, de forma que el primer color
corresponde al primer punto descrito por el nodo Coordinate del campo coord; el
segundo color corresponde al segundo punto y así sucesivamente.
Ejemplo:
PointSet { color Color {
coord Coordinate { color [
point [ 1.0 0.0 0.0, # 1º punto rojo
12.0 11.0 17.1, #1º punto 0.0 1.0 1.0, # 2º punto verde
20.5 13.8 5.3, #2º punto 1.0 1.0 0.0 # 3º punto amarillo
14.0 6.1 22.9 #3º punto ]
] }
} }
Si se incluyese este código, tal como está, en un documento VRML, no podríamos ver
ninguno de estos puntos, ya que como se ha visto anteriormente, para crear un objeto
visible se debe utilizar el nodo Shape. Obsérvese que se ha prescindido del campo
appearance del nodo Shape ya que no es necesario, pues los puntos no van a tener la
apariencia por defecto, sino la que se determina en el campo color.
134
UNIVERSIDAD PRIVADA TELESUP
Ejemplo:
#VRML V2.0 utf8 }
#Ejemplo de un grupo de tres puntos color Color {
con colores color [
Shape { 1.0 0.0 0.0, # 1º punto rojo
geometry PointSet { 0.0 1.0 1.0, # 2º punto verde
coord Coordinate { 1.0 1.0 0.0 # 3º punto amarillo
point [ ]
12.0 11.0 17.1, #1º punto }
20.5 13.8 5.3, #2º punto }
14.0 6.1 22.9 #3º punto }
]
NODO IndexedLineSet:
Permite unir los diferentes puntos especificados en su campo coord mediante líneas
poligonales.
Sintaxis:
IndexedLineSet{
coord Coordinate {
point [ . . . ]
}
coordIndex [...]
colorPerVertex valor_lógico
color Color {
color [ . . . ]
}
colorIndex [...]
} "lineas.wlr"
El campo coord toma como valor un nodo de tipo Coordinate, el cual define los
puntos que sirven como esqueleto de la figura.
El campo coordIndex se utiliza para especificar entre qué puntos se han de trazar las
líneas. Una línea puede ser trazada utilizando más de dos puntos, de forma que se
dibuja una línea entre el primer y el segundo punto, otra entre el segundo y el tercer
punto, y así sucesivamente. Un índice con valor -1 indica que ha finalizado la línea
actual y que comienza la siguiente.
135
UNIVERSIDAD PRIVADA TELESUP
El campo colorPerVertex indica cómo se han de aplicar los colores sobre las líneas:
colorPerVertex colorIndex Acción
FALSE VACIO Se aplican en orden los colores descritos en el nodo Color a cada una
(Los colores de las líneas descritas en coordIndex. Deben existir al menos tantos
se aplican colores en el nodo Color como líneas haya en coorIndex.
sobre las NO VACIO Este campo contiene una lista ordenada de números, los cuales
líneas) representan a los colores definidos en el nodo Color. De esta forma,
el 0 representará al primer color definido en el nodo Color, el 1 al
segundo,etc.
Se hace corresponder cada elemento de la lista con una de las líneas
descritas en coordIndex.
Si el mayor valor que admite el campo colorIndex es N, entonces
deben existir en el nodo Color N+1 colores definidos.
Ejemplo:
colorIndex[4,0,3,2]
De esta manera se asigna a la primera línea de coordIndex el tercer
color del nodo Color, a la segunda línea el primer color,etc.
TRUE VACIO Se utiliza el campo coordIndex para elegir los colores definidos en el
(Los colores nodo Color. Si el mayor valor que admite el campo coordIndex es N,
se entonces deben existir en el nodo Color N+1colores definidos.
aplicansobre NO VACIO Se aplican los colores a cada vértice. Este campo va a tener ahora la
los vertices) misma estructura que el campo coordIndex, por lo que ha de contener
al menos tantos índices como este último. También ha de poseer los
indicadores de fin de línea (-1) en los mismos sitios que el campo
coordIndex. Si el mayor valor que admite el campo colorIndex es N,
entonces deben existir en el nodo Color N+1colores definidos.
NODO IndexedFaceSet:
Permite unir los diferentes puntos especificados en su campo coord mediante caras
poligonales.
Sintaxis:
IndexedFaceSet{
coord Coordinate {
point [ . . . ]
}
coordIndex [...]
colorPerVertex valor_lógico
color Color {
color [ . . . ]
}
colorIndex [...]
}
136
UNIVERSIDAD PRIVADA TELESUP
El campo coord toma como valor un nodo de tipo Coordinate, el cual define los
puntos que sirven como esqueleto de la figura.
Utiliza los índices de su campo coorIndex para especificar las caras poligonales. Un
índice con valor -1 indica que ha finalizado la cara actual y comienza la siguiente.
137
UNIVERSIDAD PRIVADA TELESUP
Utilización TEMA 2
de Rejillas
de Elevación
Competencia:
Aplicar nodos para crear rejillas o
cuadriculas para modelar superficies.
138
UNIVERSIDAD PRIVADA TELESUP
NODO ElevationGrid:
Este nodo crea una cuadrícula rectangular con alturas variables, lo que la hace
especialmente útil para modelar el terreno y para la creación de otras superficies en el
espacio.
Sintaxis:
ElevationGrid{
xDimension número_de_columnas(Eje_X)
xSpacing valor_real
zDimension número_de_filas(Eje_Z)
zSpacing valor_real
height [altura1, altura2,...,altura(numcolum x numfilas)]
color Color[...]
colorPerVertext
}
139
UNIVERSIDAD PRIVADA TELESUP
UTILIZACIÓN DE TEXTURAS
La textura es la posibilidad que tenemos de envolver un objeto con una imagen
determinada que se encuentra almacenada en un archivo, al cual accedemos
mediante su URL. Los tipos de imagen que soporta VRML son:
JPEG
GIF
PNG
Hasta ahora, para definir un objeto visible se ha utilizado el nodo Shape de la siguiente
forma:
Shape {
appearance Appearance {
material ...
}
geometry ...
}
140
UNIVERSIDAD PRIVADA TELESUP
En donde el nodo Appearance tiene un solo campo, material, con el que se definen el
color y la transparencia, según se ha visto en temas anteriores.
Pero en realidad puede tener también otros dos campos: texture (cuyo valor suele ser
un nodo de tipo ImageTexture o de tipo MovieTexture) ytextureTransform, con los que
se define la textura de los objetos:
Shape {
appearance Appearance {
material ...
texture ImageTexture{...}
textureTransform {...}
}
geometry ...
}
NODO ImageTexture:
Sintaxis:
ImageTexture{
url "direccion_URL"
repeatS valor_lógico
repeatT valor_lógico
}
El campo url contiene la dirección URL del archivo gráfico que se va a usar como
textura. Los formatos gráficos que admite VRML son jpeg,gif y png.
Las texturas definen un conjunto de coordenadas 2D (Ejes S y T) que se emplean para
trazar texturas sobre la superficie de los objetos. Las coordenadas de textura van de 0
a 1.
La coordenada horizontal se denominada S y la coordenada vertical T. El lado inferior
de la imágen se corresponde con el eje S y el lado izquierdo con el eje T. La esquina
inferior izquierda de la imagen, según este sistema de coordenadas, vendría dada por
el punto (S=0,T=0) y la esquina superior derecha por (S=1,T=1).
141
UNIVERSIDAD PRIVADA TELESUP
Los campos repeatS y repeatT determinan como envuelve la textura en las direcciones
S y T. Si repeatS es TRUE, la textura se repite (cada vez que S=1) en la dirección S
hasta cubrir la superficie del objeto. Si repeatS es FALSE, la textura se adapta a toda
la superficie del objeto a lo largo de la dirección S, sin tener en cuenta el valor de las
coordenadas S y T. El campo repeatT haría lo mismo sobre el eje T.
NODO TextureTransform:
Este nodo define una transformación 2D aplicada a las coordenadas de textura. Esto
afecta a la forma en que se aplica la textura a las superficies de los objetos. La
transformación consiste (por orden) en un ajuste de la escala no uniforme sobre un
punto central arbitrario, una rotación sobre ese mismo punto y una translación. Esto
permite al usuario modificar el tamaño, orientación y posición de las texturas de los
objetos.
Sintaxis:
TextureTransform{
center Eje_S Eje_T
rotation ángulo
scale Eje_S Eje_T
translation Eje_S Eje_T
}
142
UNIVERSIDAD PRIVADA TELESUP
Sintaxis: Ejemplo:
MovieTexture { Shape {
url "dirección_URL" appearance Appearance {
speed valor_real texture MovieTexture {
loop valor_lógico url "ejemplo.mpg"
repeatS valor_lógico speed 1
repeatT valor_lógico loop FALSE
} }
}
geometry ...
}
El campo url contiene la dirección URL del archivo que contiene el video.
El campo speed controla la velocidad (1, velocidad normal; 2 doble velocidad, etc.).
Con valores negativos el video se ejecutaría hacia atrás.
El campo loop controla si el video funciona ininterrumpidamente (TRUE) o una sola
vez (FALSE).
Los campos repeatS y repeatT ya se han descrito en el nodo TextureTransform.
143
UNIVERSIDAD PRIVADA TELESUP
Existen tres clases de fuentes de iluminación, a cada una de las cuales se les asocia
un nodo:
✓ Nodo PointLight
✓ Nodo DirectionalLight
✓ Nodo SpotLight
NODO PointLight:
Define la posición de una luz que ilumina por igual en todas direcciones.
Sintaxis:
PointLight{
color color_RGB
location Eje_X Eje_Y Eje_Z
radius valor_real
attenuation coeficiente1 coeficiente2 coeficiente3
on valor_lógico
intensity valor_real
ambientIntensity valor_real
}
Campo Acción
color Indica el color de luz.
location Determina la posición que va a ocupar el foco de luz dentro del
escenario tridimensional.
radius Limita la zona (en metros) que va a ser iluminada.
attenuation Almacena tres valores que se utilizan para calcular la atenuación
de la luz conforme nos alejamos del foco. El factor de atenuación
viene dado por la siguiente ecuación:
1/(coef1+(coef2*radio)+ (coef3*radio*radio))
on Indica si los campos intensity y ambientIntensity están activos
(TRUE) o no (FALSE).
intensity Establece la intensidad con la que la luz brilla, siendo el valor 1 la
máxima intensidad y 0 la mínima.
ambientIntensity Determina la luminosidad del entorno del foco.
144
UNIVERSIDAD PRIVADA TELESUP
NODO DirectonialLight:
Define una fuente de luz orientable que ilumina con rayos paralelos a un determinado
vector tridimensional.
Sintaxis:
DirectionalLight{
color color_RGB
on valor_lógico
intensity valor_real
ambientIntensity valor_real
direction Eje_X Eje_Y Eje_Z
}
Sintaxis:
PointLight{ intensity valor_real
color color_RGB ambientIntensity valor_real
location Eje_X Eje_Y Eje_Z direction Eje_X Eje_Y Eje_Z
radius valor_real beamWidth ángulo
attenuation coeficiente1 cutOffAngle ángulo
coeficiente2 coeficiente3 }
on valor_lógico
El campo beamWidth almacena el radio (en radianes) de la base de un cono donde la
luz emitida es uniforme y posee su máxima intensidad. Este cono tendría como base
este campo, como altura el campo radius (orientado según el campo direction) y como
vértice el punto indicado en el campo location.
145
UNIVERSIDAD PRIVADA TELESUP
UTILIZACIÓN DE FONDOS
La utilización de fondos en el mundo virtual, nos permite dotarlos de un cielo y de un
suelo, añadiendo realismo de esta forma a la escena que se pretende crear. Estos
fondos se van a caracterizar porque siempre le van a dar al visitante la sensación de
que se encuentran a una gran distancia. Por otra parte, su coste es menor que el uso
de geometrías.
146
UNIVERSIDAD PRIVADA TELESUP
Todos estos campos no se utilizan simultaneamente, sino que su uso dependerá del
tipo de fondo que se desee crear.
Backdrop
Sintaxis: Ejemplo:
Backgroud{ Backgroud{
groundAngle [ ] groundAngle [.785]
groundColor [ ] # color_RGB1,color_RGB2
skyAngle [ ] groundColor [ .14 .28 0,.09 .11 0 ]
skyColor [ ] skyAngle [.785 ]
} # color_RGB1,color_RGB2
skyColor [.02 0 .26, .02 0 .65 ]
}
El fondo de tipo Backdrop se construye mediante una esfera incompleta (el suelo)
inmersa dentro de otra esfera completa (elcielo), en donde el visitante se situa en el
centro de ambas. Estas esferas tienen un radio infinito.
El campo skyColor determina el color del cielo en los distintos ángulos de la esfera
que lo contiene.El primer valor de este campo determina el color del cielo en los 0.0
radianes de la esfera, es decir, el color que tiene el cielo en el lugar donde se une con
el suelo.
147
UNIVERSIDAD PRIVADA TELESUP
El campo skyAngle es utilizado para indicar los ángulos (en radianes) en los que un
nuevo color debe aparecer. El campo skyColor debe poseer N+1 colores si en
skyAngle se han definido N ángulos, ya que el ángulo 0.0 (que es el que se
corresponde con el cielo del horizonte) no se incluye en este último.
Los campos groundColor y groundAngle, son equivalentes askyColor y skyAngle
respectivamente, pero referidos a la esfera que representa el suelo.
Si se especifica más de un color, se interpolará el color del suelo entre los colores de 0
a 90 grados en el horizonte (plano X-Z). De forma similar se interpretan los colores del
cielo, de 90 a 180 grados en la vertical (plano X-Y).
PANORAMA
Sintaxis: Ejemplo:
Backgroud{ Backgroud{
backUrl "dirección_URL" backUrl "ba_image.jpg"
bottomURL "dirección_URL" bottomURL "bo_image.jpg"
frontUrl "dirección_URL" frontUrl "f_image.jpg"
leftUrl "dirección_URL" leftUrl "l_image.jpg"
rightUrl "dirección_URL" rightUrl "r_image.jpg"
topUrl "dirección_URL" topUrl "t_image.jpg"
} }
El fondo de tipo Panorama consiste en seis imágenes, cada una de las cuales ocupa
una de las caras de una inmensa caja centrada en el eje de coordenadas. Las
imágenes que ocupan cada una de las caras vendrán determinadas por los valores de
los campos backUrl, bottomUrl, frontUrl, leftUrl, rightUrl, topUrl. Todos estos campos
toman como valor una dirección URL de un archivo que contiene una imágen en
formato jpeg, gif o png.
148
UNIVERSIDAD PRIVADA TELESUP
Utilización TEMA 3
de
Niebla
Competencia:
Reconocer el uso de los nodos de niebla o
fenómenos atmosféricos a un entorno
gráfico.
149
UNIVERSIDAD PRIVADA TELESUP
150
UNIVERSIDAD PRIVADA TELESUP
151
UNIVERSIDAD PRIVADA TELESUP
Niveles de Detalle
Definir objetos con diferentes niveles de detalle va a permitir una mayor optimización
del escenario virtual, ya que los objetos más lejanos al visitante se representan
mediante formas más simples de las que tendrían si se estuviese junto a ellos. Otra de
sus ventajas es que se reduce el tiempo de carga del mundo VRML.
NODO LOD (Level Of Detail):
Este nodo se utiliza para permitir a los navegadores conmutar automáticamente entre
varias presentaciones de objetos. Los hijos de este nodo representan generalmente el
mismo objeto u objetos, a distintos niveles de detalle, que van variando desde el
superior al inferior.
Sintaxis:
LOD{
center Eje_X Eje_Y Eje_Z
range [valor1,valor2,...,valorN]
level [Nodo1,Nodo2,...,NodoN,NodoN+1]
}
El campo center determina la posición que va a ocupar el objeto LOD dentro del
sistema de coordenadas.
El campo level contiene una lista de nodos que representan a un mismo objeto con
diferentes niveles de detalle, definiendose las representaciones de mayor nivel al
principio de la lista y los de menor nivel de detalle al final.
El campo range contiene una lista de valores en orden creciente que indican a qué
distancia se ha de conmutar entre una representación u otra. Para calcular esta
conmutación se calcula la distancia que hay entre el visitante y el punto central
especificado del LOD; si es menor que el primer valor de la lista rangeentonces se
dibuja el primer hijo de LOD indicado en la lista level; si está entre el primer y el
segundo valor de la lista range, se dibuja el segundo hijo, y así sucesivamente. Si en
la lista range figuran N valores, la lista level ha de tener N+1 hijos.
152
UNIVERSIDAD PRIVADA TELESUP
Cada valor del campo range debe ser menor que su predecesor, ya que de no ser así,
los resultados serían indefinidos. No se deben usar estos nodos para emular
comportamientos, ya que los resultados pueden no coincidir con el efecto deseado.
Por ejemplo, la utilización de un LOD para hacer que una puerta se abra cuando se
aproxima un usuario es posible que no dé resultado en todos los navegadores.
Ejemplo LOD de un objeto mediante reducción del número de detalles:
CONTROL DE COLISIONES
Nodo Collision:
Indica al navegador que objetos de la escena no se van a poder atravesar. Esto
permite evitar, por ejemplo, que los visitantes traspasen las paredes de un edificio. La
respuesta a la colisión la define el navegador (haciendo que se rebote en el objeto,
deteniéndose simplemente, etc.).
153
UNIVERSIDAD PRIVADA TELESUP
Dado que es muy costoso el cálculo de una colisión con una geometría compleja, para
aumentar la eficacia se puede utilizar un método que consiste en definir una geometría
alternativa que sirva como sustituto para colisiones. Esta geometría podría ser tan
imperfecta como un simple cuadrado o una esfera. Este volumen alternativo se usa
solamente para calcular la colisión con el visualizador. VRML ofrece volúmenes
alternativos de colisión para objetos mediante el nodo Collision.
Sintaxis:
Collision{
collide valor_lógico
proxy nodo
children [ ...]
}
Utilización de Sonidos
La adición de sonidos al escenario le añade mayor realismo. Las principales
aplicaciones del sonido son: ruidos o músicas de fondo, sonidos localizados en un
determinado punto del escenario (como por ejemplo el sonido de una catarata) o
sonidos que se activan cuando se realiza una determinada acción (al pulsar un
interruptor, saltar una pared,etc.).
VRML utiliza dos nodos diferentes para controlar las fuentes de sonido:
Nodo AudioClip
Nodo Sound
154
UNIVERSIDAD PRIVADA TELESUP
NODO AudioClip:
Es utilizado básicamente para cargar el archivo (en formato .wav o .mid) donde se
encuentra almacenado el sonido. Se invoca el archivo a través de su dirección URL.
Sintaxis:
AudioClip{
url "dirección_URL"
description "descripción_del_sonido"
loop valor_lógico
pitch valor_real
}
El campo url contiene la dirección URL del archivo que contiene el sonido, ya sea en
formato .wav o .mid.
El campo description es una descripción textual del sonido.
El campo loop específica si el sonido se ha de repetir constantemente. Por defecto, el
sonido se reproduce una sola vez. Si el sonido no está en modo loop, el tiempo de
reproducción viene dado por la duración del archivo.
El campo pitch controla el tono y la velocidad con la que se reproduce el sonido. Solo
admite valores positivos. Si, por ejemplo, este campo tomase el valor 2.0, el sonido se
emitiría con el doble de su velocidad normal y con un tono una octava superior al del
sonido original.
NODO Sound:
Define una fuente de sonido situado en un lugar especifico 3D.
Sintaxis:
Sound{
source AudioClip{...} minBack valor_real
intensity valor_real maxFront valor_real
location Eje_X Eje_Y Eje_Z maxBack valor_real
direction Eje_X Eje_Y Eje_Z spatialize valor_real
minFront valor_real }
155
UNIVERSIDAD PRIVADA TELESUP
El campo source toma como valor un nodo de tipo AudioClip, en donde se define el
archivo de sonido a reproducir.
El campo intensity ajusta el volumen de cada fuente de sonido.Admite únicamente
valores entre 0 y 1. Una intensidad 0 es silencio y una intensidad 1, la correspondiente
a la contenida en el archivo de sonido.
156
UNIVERSIDAD PRIVADA TELESUP
INTRODUCCIÓN A 3D STUDIO
Autodesk 3Ds Max (anteriormente 3D Studio Max) es un programa de creación de
gráficos y animación 3D desarrollado por Autodesk.Fue desarrollado originalmente por
Kinetix como sucesor para sistemas operativos Win32 del 3D Studio creado para DOS.
Más tarde esta compañía fue fusionada con la última adquisición de Autodesk,
Discreet Logic. 3Ds Max es uno de los programas de animación 3D más utilizados.
Dispone de una sólida capacidad de edición, una omnipresente arquitectura de plugins
y una larga tradición en plataformas Microsoft Windows. 3Ds Max es utilizado en
mayor medida por los desarrolladores de videojuegos, aunque también en el desarrollo
de proyectos de animación como películas o anuncios de televisión, efectos especiales
y en arquitectura.
Desde la primera versión 1.0 hasta la 4.0 el programa pertenecía a Autodesk con el
nombre de 3d Studio. Más tarde, Kinetix compró los derechos del programa y lanzó 3
versiones desde la 1.0 hasta la 2.5 bajo el nombre de 3d Studio Max. Más tarde, la
empresa Discreet compró los derechos, retomando la familia empezada por Autodesk
desde la 4.0 hasta 6.0 también bajo el nombre de 3d Studio Max. Finalmente,
Autodesk retomó el programa desarrollándolo desde la versión 7.0 y a partir de la
versión 9 se denomina Autodesk 3D Studio Max.
157
UNIVERSIDAD PRIVADA TELESUP
Mundos TEMA 4
Virtuales
en 3D
Competencia:
Emplear diferentes técnicas de modelados en
3D para mundos virtuales.
158
UNIVERSIDAD PRIVADA TELESUP
159
UNIVERSIDAD PRIVADA TELESUP
160
UNIVERSIDAD PRIVADA TELESUP
Spline editable
Convertir una forma a spline' editable significa que ésta se dividirá en subobjetos
desde los cuales podrá ser manipulada. Los tres tipos de sub objetos desde los que
se puede trabajar son:
• Vértices: unen los & diferentes segmentos y definen tangentes de punto y
curva.
• Segmentos: conectan los distintos vértices.
• Splines: son la unión de los segmentos con los vértices.
Modelado de geometrías
El modelado a partir de geometrías se lleva a cabo, principalmente, a partir de
primitivas y de objetos de composición.
Modelado a partir de primitivas
Los programas de modelado suelen incluir por defecto algunos objetos de formas
básicas, que se pueden modificar, combinar y personalizar mediante una serie de
modificadores y opciones que el software también ofrece.
Pueden ser empleadas para crear objetos básicos que no requieran excesivo detalle
o que aparezcan en planos generales donde se vean de lejos, o pueden ser
modificadas o combinadas con otras formas. Entre éstas, se encuentran las
primitivas estándar y las extendidas.
Ambas son objetos paramétricos, es decir, mediante diferentes cantidades
numéricas, se define el diámetro, la altura, la anchura, así como el número de lados y
segmentos de altura que necesiten tener.
161
UNIVERSIDAD PRIVADA TELESUP
Primitivas estándar
Determinados objetos de formas simples del mundo real, como un balón o una caja,
pueden modelarse utilizando una sola primitiva. Las primitivas también pueden
combinarse para formar objetos más complejos. La Figura 5 muestra una
recopilación de las primitivas más empleadas.
162
UNIVERSIDAD PRIVADA TELESUP
Por ejemplo, la mayor parte de los objetos que se ven en SecondLife son primitivas
(o prims, nombre que reciben en el mundo virtual) que pueden ser creadas por el
usuario (Figura 6), bien a partir de la aplicación que ofrece Second Life, bien a partir
de programas como 3d Studio Max y Maya, para lo cual es necesario exportarlas
Posteriormente al mundo virtual.
Primitivas extendidas
Son una recopilación de primitivas de mayor complejidad. La Figura 7 muestra una
selección de las mismas.
163
UNIVERSIDAD PRIVADA TELESUP
Objetos de composición
Mediante la combinación de diferentes formas (2D)o geometrías (3D),es posible crear
objetos de mayor complejidad. Uno de los objetos de composición más empleadas a
partir de formas 2D es el solevado, mientras que en loreferente a las geometrías, está
la booleana.
Solevado
Los objetos solevados son formas bidimensionales extruidas a lo largo de un eje.
Estos objetos se crean a partir de dos o más objetos del tipos pline. Una de estas
splines es el recorrido (el eje sobre el cual se extruyen las formas) y el resto de splines
actúan como formas del objetos elevado. A medida que se disponen las formas en el
recorrido, el programa genera una superficie entre ellas. En la Figura 8 se ve cómo
mediante la creación de una línea(spline) y su edición, se genera el recorrido (o eje)
que seguirá el objeto. La forma será la de ambos círculos (que se intercalarán
repetidamente para dar lugar a la parte flexible de la pajita)
Booleanas
Mediante la intersección de diferentes primitivas estándar o extendidas, Se pueden
crear objetos de mayor complejidad. Ejemplo de ello son los objetos' booleanos, que
resultan de la combinación de dos objetos a los que se les ha aplicado una operación
booleana.
164
UNIVERSIDAD PRIVADA TELESUP
La Figura 9 muestra un ejemplo de objeto booleano (el dado) Creado mediante una
operación de sustracción. A la caja se le sustrae el volumen de la intersección con la
esfera.
Modificadores
Además de la combinación de modelos, el software ofrece una serie de modificadores
(Figura 10) que se pueden aplicar a los modelos para que estos respondan a las
expectativas del modelador con mayor exactitud, y de esta forma dar lugar a objetos
de mayor detalle.
165
UNIVERSIDAD PRIVADA TELESUP
Malla PoligonalEditable
Cada objeto que el programa proporciona por defecto (lasprimitivas) puede ser
convertido en malla poligonal, lo que significa que el objeto se dividirá en subobjetos y
sus diferentes elementos podrán ser modificados mediante herramientas como mover,
rotar o escalar. Con ello se pueden conseguir formas más personalizadas u orgánicas,
adecuadas para la creación de personajes, animale o vegetales. Con sub objetos se
hace referencia a las distintas partes de las que se compone la malla y a los distintos
niveles con los que es posible modelar. Entre los principales sub objetos están:
Vértices: son los puntos formados por la intersección de dos o más Aristas que
concurren en un punto. La Figura 13 muestra un ejemplo de conversión de una caja
(primitiva) a malla poligonal. Mediante la selección de sus vértices, es posible mover,
rotar o escalar diferentes partes del objeto para darle la forma deseada.
✓ Aristas: son los lados de una cara o las líneas que conectan dos vértices.
✓ Polígonos: son las caras de las que se compone la malla. La Figura 14
muestra cómo es posible dar forma a un objeto Mediante la selección y el
movimiento de polígonos.
166
UNIVERSIDAD PRIVADA TELESUP
Al igual que ocurre con los segmentos de las primitivas, cuantos Menos polígonos
tengan los modelos, mejor. Uno de los requisitos a la hora de modelar puede ser el de
no elevar los requerimientos de procesado de los modelos para que estos se animen y
se rendericen de forma más rápida. Se habla de baja poligonización cuando un
modelo emplea los mínimos polígonos posibles para crear una imagen.
MODELADO DE UN PEZ
Tipos de mapas
Entre los mapas de texturizado básico, se
pueden encontrar los siguientes:
Bitmap: se trata de una imagen guardada
como matriz de píxeles en un formato
archivo de imagen fija, como jpeg, psd
obmp. Es el más empleado dado el alto
grado de personalización que permite. Un bitmap puede ser una fotografía de ladrillos
que se asigne a un rectángulo para simular una pared, o una imagen creada de la
nada desde Adobe Photoshop. La Figura 20 muestra un ejemplo de mapa de bits que
permite simular una superficie de madera.
167
UNIVERSIDAD PRIVADA TELESUP
Rampa de degradado: Crea una gran variedad de rampas que pueden incluirlos
colores mapas y las mezclas que se prefieran (Figura 22).
Mapeado
Una vez se ha preparado la textura, ésta se puede colocar sobre la malla del modelo,
proceso que se conoce como mapeado. Si bien se ha dicho antes que el mapa podría
asimilarse a un envoltorio, el modificador un wrap (que podría ser traducido como
desenvolver) construye un envoltorio a partir de la geometría del objeto. Para ello este
modificador capta todos los polígonos de los que se compone el modelo y crea una
superficie plana a partir de ellos. Esa superficie plana puede ser usada a modo de
lienzo sobre el que crear una textura a partir de programas de tratamiento de
imágenes como Adobe Photoshop. Mientras se trabaja en ella, la textura suele
contener mucha información y capas, y se guarda como un archivo psd). Cuando se
termina de trabajar con ella se comprime en una sola capa y se guarda, por lo general,
como archivo jpeg o bmp.
168
UNIVERSIDAD PRIVADA TELESUP
Lecturas Recomendadas
❖ EJEMPLOS CON VRML
http://mveu.blogspot.com/2008/10/vrml-virtual-reality-modeling-languaje.html
Actividades y Ejercicios
169
UNIVERSIDAD PRIVADA TELESUP
Autoevaluación
1) ¿Qué nodo controla las propiedades del color que se van a dar al objeto?
a. El nodo material.
b. El nodo apparence.
c. El nodo geometry.
d. El noto texto.
e. El nodo color.
4) ¿Qué nodo crea una cuadrícula rectangular con alturas variables, lo que la
hace especialmente útil para modelar el terreno o superficies?
a. El nodo surface.
b. El nodo inline.
c. El nodo elevationgrid.
d. El nodo grilla.
e. El nodo geometry.
5) ¿Qué hace posible envolver un objeto con una imagen determinada que se
encuentra almacenada en un archivo?
a. Envoltura.
b. Textura.
c. Mascara.
d. Transformación.
e. Rugosidad.
170
UNIVERSIDAD PRIVADA TELESUP
171
UNIVERSIDAD PRIVADA TELESUP
Resumen
UNIDAD DE APRENDIZAJE IV:
El nodo Material es el que controla las propiedades del color (selección del color, del
brillo, del grado de transparencia, etc.) que se van a dar al objeto. El nodo Inline va a
permitir crear un grupo en donde los hijos, almacenados en distintos ficheros VRML,
son recuperados indicando su dirección URL. El nodo Anchor crea un grupo especial ya
que seleccionando cualquier objeto perteneciente a dicho grupo se salta hacia otro lugar
del escenario virtual o hacia otro mundo virtual almacenado en un fichero VRML.
El Nodo ElevationGrid, crea una cuadrícula rectangular con alturas variables, lo que la
hace especialmente útil para modelar el terreno y para la creación de otras superficies
en el espacio. La textura es la posibilidad que tenemos de envolver un objeto con una
imágen determinada que se encuentra almacenada en un fichero, al cual accedemos
mediante su URL. El Nodo TextureTransform define una transformación 2D aplicada a
las coordenadas de textura.
Modelar es uno de los primeros pasos en la generación de gráficos por computador. Las
técnicas básicas más extendidas son el modelado a partir de formas, el modelado de
geometrías y la malla poligonal editable. Las formas son líneas y grupos de líneas 2D,
cuya principal función es servir de base para la creación de objetos 3D. El modelado a
partir de geometrías se lleva a cabo, principalmente, a partir de primitivas y de objetos
de composición.
172
UNIVERSIDAD PRIVADA TELESUP
Glosario
❖ APLICACIÓN: Es cualquier aplicación que es accedida vía web por una red como
internet o una intranet.
❖ ARQUITECTURA: Consiste en la estructura organizacional de un sistema.
❖ ATRIBUTO: Es una parte específica de una clase. Una propiedad de un tipo
identificada mediante un nombre.
173
UNIVERSIDAD PRIVADA TELESUP
Fuentes de Información
BIBLIOGRÁFICAS:
ELECTRÓNICAS:
❖ JAVA: J2ME
http://www.lcc.uma.es/~galvez/ftp/libros/J2ME.pdf
❖ Multimedia en Java
http://www.uv.es/~jgutierr/MySQL_Java/GUI.pdf
❖ Java 3D
http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r89548.PDF
❖ VRML
http://tecfa.unige.ch/guides/vrml/vrmlman/vrmlman.pdf
❖ Cortona 3D
http://webdelprofesor.ula.ve/ingenieria/pfaraujo/personal/Geometr%EDa%20Desc
riptiva%20en%20%20VRML/Inicio/Ayuda.pdf
174
UNIVERSIDAD PRIVADA TELESUP
Solucionario
UNIDAD DE UNIDAD DE
APRENDIZAJE 1 APRENDIZAJE 2:
1. A 1. A
2. B 2. E
3. C 3. C
4. A 4. B
5. B 5. A
6. C 6. C
7. D 7. D
8. E 8. D
9. D 9. A
10. E 10. E
UNIDAD DE UNIDAD DE
APRENDIZAJE 3: APRENDIZAJE 4:
1. A 1. A
2. C 2. E
3. C 3. A
4. E 4. C
5. E 5. B
6. A 6. B
7. D 7. A
8. C 8. D
9. C 9. E
10. A 10. E
175