You are on page 1of 52

1

VRML 2.0 con Java CAPÍTULO 10

Creación de Mapa de
Texturas
2

VRML 2.0 con Java CAPÍTULO 10

Contenido CAPÍTULO 10

• Tuercas y Tornillos
• Creación de Texturas
• The Dark Ciencia de MPEG-1
• Cuando la imagen se reúne Geometría
• Fondos
• rellenar las lagunas

Tuercas y tornillos
3

VRML 2.0 con Java CAPÍTULO 10

En esta sección vamos a examinar algunas de las cuestiones técnicas que


rodean el mapeo de texturas. Cada artista debe comprender el medio que sea
eficaz. Eso es lo que esta sección se trata.

Coordenadas de textura

En primer lugar, echemos un vistazo a cómo las texturas se describen en el


espacio. La textura del espacio (el sistema de coordenadas utilizado para
describir las localizaciones en una imagen utilizada por un mapa de textura) se
mide con las coordenadas u, v, y W. U representa un lado a otro, v representa
de arriba abajo, y w representa la profundidad (que nos da en 3-D). Dado que
sólo utiliza VRML 2-D texturas, este debate sólo se centran en u, v coordina-no
es necesario preocuparse por w.

Si se mira un mapa de textura, el origen (u = 0, v = 0) siempre es la esquina


inferior izquierda, como en la Figura 10.1. La esquina superior izquierda es de
0,1, inferior derecha es 1,0, y la superior derecha es de 1,1. Esto es válido para
cada textura, independientemente de su tamaño o forma.

Figura 10.1 Textura espacio: la u, v sistema de coordenadas

La gran diferencia entre u, v las coordenadas y la geometría es lo que coordina


medida. Geometría de coordenadas (x, y y z) son un sistema de referencia de
la comercialización de la geometría en un espacio tridimensional. Existe un
objeto en un conjunto de coordenadas. Si lo mueve, es que existe una nueva
serie, si la escala es, rotarlo, lo que sea, se vuelve todavía otro conjunto. Por
otro lado, u, v las coordenadas de referencia sólo el 2-D el espacio de la textura
de la imagen en sí, no su posición en el espacio 3-D o su posición sobre un
objeto (véase la figura 10.2). Es por eso que la esquina superior derecha es de
1,1. Siempre será 1,1 independientemente de cómo la escala o estirar la
textura, como puede ver en la Figura 10.2. Uso de u, v coordenadas, tenemos
la capacidad para apuntar a cualquier lugar en una textura, todo lo que
necesitamos son la u, v los valores de ese lugar.
4

VRML 2.0 con Java CAPÍTULO 10

Figura 10.2 Localización de puntos en una textura

El proceso de puesta en superficies de textura plantea nuevas cuestiones.


Desde el espacio de texturas (para 2-D texturas, al menos) sólo representa el
2-D imagen, ya que las superficies y texturas que se colocan en son a menudo
muy complejas, en 3-D formas, aún tenemos otro sistema de coordenadas para
cerrar la brecha entre la textura y el mapa de superficie geométrica. Este
puente es el espacio de superficie. Se define la superficie del espacio con las
coordenadas s y t, s es la componente horizontal y no se la vertical.

S, T repeticiones de medida de coordenadas u, v coordenadas (véase la figura


10.3). Sin repetición, s, t coordenadas son exactamente equivalente a u, v las
coordenadas (y si no está utilizando la repetición, no se meten en problemas si
se utilizan indistintamente). Sin embargo, algunos que representan conceptos
totalmente diferentes. En primer lugar, desde la superficie asignada puede ser
muy irregular, s, t coordenadas vamos a encontrar un lugar en el mapa de
textura (la u, v coordenadas), con independencia de cualquier estiramiento o
distorsión que pueda haber tenido lugar para obtener el 2-D a la textura 3-D
superficie. En segundo lugar, ya que s, t medir las coordenadas u, v
repeticiones, es posible azulejo texturas. El espacio entre 0,0 y 1,1 es una
repetición de la textura. Si usamos más de una repetición, suelo de baldosas de
empezar la textura. Cada azulejo añade 1 a la s y / o la t coordenadas (o resta
1, si queremos un azulejo en dirección negativa). Por ejemplo, una plaza
asignada a la s, t coordenadas 0, 0 en la esquina inferior izquierda; 0,2 en la
esquina superior izquierda; 2,2 en la esquina superior derecha, y 2,1 en la
parte inferior derecha se alicatado con cuatro copias de la textura (dos sobre el
eje u, v dos sobre el eje).

Figura 10.3 Embaldosado la imagen en s, t espacio

Dado que las superficies se suele hacer de los polígonos, es útil hacer
referencia a las coordenadas de textura en relación con los vértices de los
5

VRML 2.0 con Java CAPÍTULO 10

polígonos en el objeto que está el mapeo de texturas. Como muestra la Figura


10.4, vértices proporcionar un buen "gancho" en x, y z del espacio de
referencia para la s, t las coordenadas del mapa que ha sido colocado en la
superficie del objeto. Esto es lo que la larga lista de números está en el nodo
TextureCoordinate: la s, t las coordenadas en los vértices de los polígonos.
Estos son también a veces se denomina textura vértices.

Figura 10.4 de la textura a la superficie del espacio de la geometría espacio


espacio

¿Por qué es importante para los creadores de contenido? Es importante porque


los autores de la especificación de VRML salieron de su manera de utilizar la
terminología correcta. Coordenadas de textura comprensión significa que usted
puede entender mejor el espectro. Esto significa que usted puede ver una serie
TextureCoordinate y tener una idea de lo que pasa en ella. Significa ver
repeticiones o repeatT en un nodo ImageTexture y saber si se debe establecer
en TRUE o FALSE. Puede incluso significar entrar en un archivo VRML con un
editor de texto y la piratería TextureCoordinate un nodo a mano para conseguir
un efecto que no puede lograr de otra manera. Este es realmente un ejemplo
de "el conocimiento es poder".

Tallas textura

Uno de los primeros factores que deben considerarse al crear un mapa de


textura es su tamaño. El tamaño de píxel de un mapa de textura puede afectar
a muchos aspectos de su mundo, así como su desempeño y su impacto en el
usuario.

La primera y más evidente efecto de textura de tamaño es el tiempo de


descarga. Estoy seguro de que has bostezó su camino a través de una página
Web de descarga de imágenes, mientras que después apareció lentamente
gigantesca imagen en la pantalla. El problema es el mismo con VRML. Al
combinar el tamaño del mundo, con una sobrecarga de servicio en línea, puede
comenzar a ver por qué mapas de texturas grandes no son adecuadas.

La otra gran cuestión que afecta a la textura de tamaño tiene que ver con la
manera en los navegadores está diseñado. Debajo de todas las cosas
relacionadas con VRML en un navegador es un motor de rende rizado. Esta es
la parte del software que en realidad muestra el 3-D de datos como una
6

VRML 2.0 con Java CAPÍTULO 10

imagen en la pantalla, sin que la iluminación, sombreado y movimiento de la


geometría. En vez de reinventar la rueda, los programadores desarrollar su
navegador en la parte superior de los navegadores existentes renderizadores.
Esto libera a concentrarse en la aplicación de la especificación.

Los problemas radican en la manera en que las diversas texturas


renderizadores manejar. Muchos han renderizadores restricciones o
limitaciones sobre el tamaño de las texturas que pueden ser. Por ejemplo, en
los navegadores que utilizan el RenderWare render
(http://www.canon.co.uk/csl/rw.htm)-que incluye la mayoría de los navegadores
de PC en el momento de escribir este documento, el máximo tamaño de
textura es 128x128 . Nada más que el tamaño es aplastado a 128x128. (V2.0
RenderWare debe apoyar texturas hasta 256x256, pero esa opción no parece
que se está utilizando en este momento.) Esta limitación de tamaño siempre
debe considerarse la creación de texturas, especialmente aquellos que
incluyen texto. Renderizadores utilizar otros navegadores que requieren
texturas a ser una "potencia de 2" de resolución (16, 32, 64, 128, 256, etc.), y
algunos de ellos también requieren que las texturas se cuadrado (256x256 vs
128x256).

Todos los navegadores leer cualquier textura en cualquier tamaño que tirar de
ellos, pero cuando sus mapas para bajar el nivel de render, pueden ser
ampliadas para ajustarse a los requisitos de cualquier renderizador que se
utilizó para el navegador. El hecho es feo no tiene manera de saber qué va a
pasar a las imágenes una vez que salen en la Red, por lo que debe hacer todo
lo que pueda para asegurar que los usuarios ver lo que usted desea.

Puede haber un pequeño "hipo" en el rendimiento cuando los navegadores


ajustar el tamaño de sus texturas. También puede haber un golpe de memoria,
si el navegador escalas de las texturas, hasta un tamaño más grande que
tienen que ser, y hay ciertamente un innecesario aumento en el tiempo de
descarga si está utilizando texturas que son más grandes que el navegador
puede manejar.

Del tamaño de las imágenes impares presente otros problemas. Redondear el


error puede ocurrir cuando el navegador el tamaño de una imagen de tamaño
impar. Por ejemplo, una imagen de 347x298 que se ha ampliado por un factor
de 0.737752161 sobre el eje u 0,858060403 y v eje sobre el que se reajustarán
a 256x256. Por otro lado, una imagen de 512x512 se escala de 0.5, 0.5.
Redondear error puede causar una caída en el rendimiento como el navegador,
ajusta la imagen, y también puede causar mala calidad de imagen en la
textura de objetos.

Como regla general, las texturas deben ser tan pequeño como usted puede
7

VRML 2.0 con Java CAPÍTULO 10

posiblemente salir, cuadrados, y una "potencia de 2" de resolución. Muchas de


las texturas que hago son 64x64, que es un buen tamaño para la repetición de
texturas como la madera o moqueta. De vez en cuando, voy a hacer realmente
pequeñas texturas: 32x32 o incluso 16x16. (Para los más pequeños que
cualquier cosa 16x16, probablemente debería utilizar un nodo PixelTexture.),
Recientemente he trabajado en una galería de arte donde VRML todas las
obras de arte (pinturas de grandes exploraciones) fue 256x256, lo cual se veía
muy bien trabajado y aún si el navegador reajustarán a 128x128-incluso una
reducción del 50%. Normalmente suelo hacer texturas que contienen texto o
una línea de arte (como logotipos) 128x128. De esa manera sé que no se
reducirá.

Artistas que trabajan en los juegos o en gran escala de los proyectos de


realidad virtual se utilizan para la colocación de varias texturas de los objetos
en el mismo archivo de imagen. Si bien esto hace bastante difícil la colocación
de la textura, que realmente puede acelerar el tiempo de descarga y da un
bonito efecto de texturas para romperse varios objetos en el lugar de una sola
vez. Lamentablemente, los navegadores no conocen o no se preocupan por las
imágenes con múltiples texturas (o el trabajo que va a hacer de ellos). Ellos
piedad tramo de squash o cualquier imagen que cae fuera de su rango de
tamaño-así que usa esta técnica con cuidado.

Tipos de archivos

La siguiente gran factor a considerar cuando se crea mapas de texturas de


imagen es que el formato a utilizar. Hay literalmente cientos de diferentes
formatos de imagen, pero usted sólo debe preocuparse con tres: GIF, JPEG y
PNG.

GIF (Graphics Interchange Format)

GIF es probablemente el más comúnmente utilizado el formato de imagen en


Internet. GIF es un 1 a 8-bits (2 a 256 colores), el color asignado, formato de
imagen comprimida con la transparencia. La compresión se basa en el formato,
y la cantidad de compresión varía con la complejidad de la imagen. GIF es la
compresión sin pérdida (calidad de imagen es afectada por el proceso de
compresión), por lo que la imagen no se degrada. Profundidad de color puede
ser inferior a 8 bits, lo que reduce el tamaño del archivo de la imagen aún más.

Mientras que el máximo de 8-bit profundidad de color puede causar bandas en


las transiciones de color suaves y "chunkiness" en tono continuo de imágenes,
8

VRML 2.0 con Java CAPÍTULO 10

la compresión sin pérdidas, es una excelente elección para el texto, la línea de


arte, y otros gráficos. GIF89a la variante del formato GIF puede incluso apoyar
la transparencia por lo que le permite escoger los colores de la paleta y
declararlas a ser transparente.

Lamentablemente, el formato GIF está empezando a caer de favor, porque su


método de compresión no es de dominio público, y el titular de el método de
compresión (de Unisys) ha comenzado a cobrar royalties por el uso GIF en
"comercial" las solicitudes. Esto significa que si usted está haciendo un
producto utilizando el formato GIF y el plan de venta, usted puede ser cargado
una tasa de regalías. GIF, se sugiere pero no se requiere para los navegadores
de VRML 2.0, pero todos los navegadores que sé de apoyo.

JPEG (Joint Photographic Experts Group)

JPEG es un formato de imagen que ofrece una excelente compresión y


profundidad de color hasta 24 bits (16,7 millones de colores). JPEG no admite
transparencia. De compresión es variable y se puede ajustar durante el
proceso de conversión de un formato sin comprimir (TGA, tiff, etc.) a JPEG.

Lamentablemente, JPEG utiliza lo que se conoce como compresión con


pérdidas, lo que significa que parte de la información en la imagen se pierde
durante el proceso de compresión. La pérdida de datos puede variar desde
apenas perceptible realmente horrible, dependiendo de la imagen utilizada y la
cantidad de compresión.

JPEG funciona muy bien para las fotos escaneadas, pero es bastante
aproximada sobre la línea de texto y gráficos. Es de dominio público, por lo que
no tendrá que preocuparse de alguien tratando de golpear a usted por regalías.
JPEG es un formato de imagen para los navegadores de VRML 2.0, y, por lo que
sé, todos ellos apoyan.

PNG (Portable Network Graphics)

PNG (http://quest.jpl.nasa.gov/PNG/) es un formato de imagen relativamente


nueva en la escena. Ofrece compresión sin pérdidas, la profundidad de color de
1 bit de hasta 48 bits (YOW), y el pleno alfa (transparencia) de apoyo, y es
también totalmente de dominio público. PNG de los modos de color incluyen: 1
-, 2 -, 4 - y 8-bits mapeados paleta de modos de transporte; 1 -, 2 -, 4 -, 8 -, y
de 16 bits en escala de grises modos, y 24 - y 48-bit true color . Además, tiene
una verdadera mezcla de canal alfa, en el sentido de gradación más suave de
la transparencia.
9

VRML 2.0 con Java CAPÍTULO 10

Imágenes PNG son generalmente más pequeñas que GIF, pero no tan pequeño
como JPEG. La calidad de la imagen de PNGs es excelente tanto para el texto y
las imágenes de tono continuo, sin perder en absoluto debido a la compresión.
Se espera que el GIF PNG sustituirá en los próximos años. La desventaja de la
que es el formato PNG, mientras que es requerido por la especificación de
todos los navegadores de VRML 2.0, es tan nuevo que se ha aplicado sólo en
un par de ellos en el momento que estoy escribiendo esto. (Sin embargo,
parece que todos los demás será un salto al carro muy pronto.)

Además de los tres formatos antes mencionados, la mayoría de los


navegadores también apoyo adicional de varios tipos de imagen. Por ejemplo,
en el momento que estoy escribiendo esto, CosmoPlayer soporta el formato
RGB de los SIG. GLView apoya RGB, DIB, BMP y TGA (pero no soporta PNG). A
menos que tenga necesidades muy específicas, yo recomiendo que evite que
otros formatos de imagen GIF, JPEG y PNG.

Materiales bajo Texturas


Muchas personas suponen que, desde la textura nodo está proporcionando
información de color para su objeto, no hay necesidad de utilizar un nodo
Material, también. Hay un par de razones, sin embargo, ¿por qué no usar
un nodo Material puede crear grandes problemas para usted.

En primer lugar, si no hay apariencia de nodo se ha especificado de forma


particular, o en caso de ausencia de material sobre el terreno ha sido un
aspecto en el nodo, el objeto se muestra como "unlit." Cuando un objeto
es unlit, será dictada con planos sombreado. Piso sombreado significa que
la forma aparecerá como un esquema lleno de color uniforme y la
intensidad (de este color es un blanco brillante por defecto).

Otro problema con los materiales que no tengan un nodo tiene que ver con
los navegadores. Algunos navegadores (CosmoPlayer para el SIG, por
ejemplo) todas las texturas de caída cuando se mueve el punto de vista.
Si pones tu usuario dentro de una habitación oscura con textura de
ladrillo rojo en las paredes, pero sin material, es posible que el flash
de color blanco cada vez que el espectador se mueve. Esto puede ser muy
desconcertante para el usuario.

La especificación VRML 2.0 requiere que los valores RGB del color de un
mapa de textura, de forma difusa, sustituir los valores de color de un
nodo de material asociado. Esto significa que puede utilizar sin
preocuparse por los materiales que causan los cambios de color en su
textura. Volviendo a nuestra sala de ejemplo, puede aplicar un material
con un color rojo oscuro junto con una textura de ladrillo de color rojo
oscuro y, a continuación, si el navegador se retira la textura por la
razón que sea, el material de color aparecerá en su lugar, y la usuario
no tan desorientada.
10

VRML 2.0 con Java CAPÍTULO 10


Echa un vistazo a los objetos producidos por el código siguiente. Si no
desea escribir en este código, tenga en cuenta que usted puede encontrar
todos los ejemplos de este libro sobre el CD.

#VRML V2.0 utf8


#Example 11.1 - Textures with Materials
NavigationInfo {
type EXAMINE
}
Viewpoint {
position 0 0 8
orientation 0 0 1 0
fieldOfView 0.785398
}
Group {
children [
Transform {
children Shape { # Cube with texture but no material
appearance Appearance {
texture ImageTexture {
url "wood-1.jpg"
}
}
geometry Box {
}
}
translation-2 0 0
}
Transform {
children Shape { # Cube with texture and material
appearance Appearance {
material Material {
ambientIntensity 0.2
diffuseColor 0.8 0.5 0.15
specularColor 0.3 0.1 0
shininess 0.8
}
texture ImageTexture {
url "wood-1.jpg"
}
}
geometry Box {
}
}
translation 2 0 0
}
]
}

Ambos de estos cubos se asignan con la misma textura. El cubo de la derecha


tiene un color marrón con el material aplicado a lo largo de la textura, mientras
que el cubo de la izquierda no tiene material y es unlit. Aviso de la forma en
que el cubo de la izquierda tiene mucho más profundidad y realismo. Si tienes
un navegador que gotas texturas cuando la opinión de los cambios, también
puede observar el color debajo de la textura.
11

VRML 2.0 con Java CAPÍTULO 10

Otro factor a considerar en relación con los materiales tiene que ver con
imágenes en escala de grises (imágenes con un solo componente de color) y
de imágenes en escala de grises con transparencia (las imágenes con dos
componentes de color). Estas imágenes no sustituyen a la difusión del color.
Por el contrario, tomar la difusión de color y se multiplica por sus propios
valores en escala de grises. Lo que esto significa es que usted puede poner una
imagen en escala de grises más de un material color rojo y, en lugar de
mostrarla en tonos de gris (en tres componentes RGB de la imagen), la textura
sobre el objeto se mostrará en tonos de rojo. No sólo eso, sino que la textura
en sí misma será un tercio del tamaño de la misma imagen en RGB. Esta es
una excelente manera de crear efectos texturales (como la hierba o tierra) sin
utilizar una gran cantidad de ancho de banda.

Creación de Texturas

En esta sección, voy a examinar algunas técnicas para crear mapas de


texturas. Para los ejemplos, voy a estar usando Adobe Photoshop 3.0
(http://www.adobe.com/prodindex/photoshop/). Photoshop está disponible en la
mayoría de las plataformas y es probablemente el más popular programa de
dibujo en el mercado. Sin embargo, es muy importante recordar que Photoshop
no está obligado a realizar cualquiera de las técnicas descritas aquí. Todo
completamente equipado de la pintura programa de trabajo muy bien.

Si usted necesita un programa de dibujo, pero Photoshop es un poco fuera de


su alcance (o si estás en busca de otro buen programa de dibujo para añadir a
tu arsenal), propongo echar una mirada a PaintShop Pro (http:// .jasc.com /
psp.html). PaintShop Pro es un excelente programa de dibujo del shareware
para Windows 95 y NT. Funciona muy bien y tiene el beneficio añadido de la
plena PNG apoyo.

Repetición de texturas

Cubriendo grandes áreas con texturas puede ser muy difícil. Un gran textura se
ve bien, pero lleva mucho tiempo para descargar y por lo general las ciénagas
navegador. Una pequeña textura más rápida, pero se vuelve muy pixelada
cuando se utiliza para cubrir un área grande. (Pixelization se refiere a los
píxeles que se hacen visibles cuando se escala una imagen demasiado grande.)

La solución a este problema es de mosaico (o repetir) una pequeña textura


sobre una gran superficie. Un buen ejemplo de este proceso es piso de mosaico
12

VRML 2.0 con Java CAPÍTULO 10

(la cara, de cristal, terra-cotta especie). Usted no tendría una gran plaza
cubierta de azulejos y suelo de su cocina con él-que costaría una fortuna. En
lugar de ello, se utiliza a decenas de baldosas en un patrón repetitivo, como en
la Figura 10.5.

Figura 10.5 Uso repetir baldosas para cubrir grandes superficies.

Pavimentos de madera son un ejemplo evidente de la repetición de una textura


y son muy fáciles de hacer. Se pone mucho más difíciles cuando es necesario
hacer una textura que se repite cuando el tema no se repite en el mundo real
de la madera, por ejemplo.

Repetición de la creación de una textura en Photoshop

Para el primer ejemplo, vamos a crear una repetición de la textura de madera.


En este ejemplo se utiliza principalmente filtros y efectos para crear el grano
de madera, pero usted podría añadir sus propios efectos mediante el uso de
cualquiera de las herramientas de pintura. Por favor, no deje que este tutorial
obstaculizar tu creatividad. También, por favor recuerde que estas técnicas de
trabajo con cualquier textura que tiene que repetir a cubrir un área grande, y
no sólo la madera. Aguacate piel, la piel del ratón, pelusa de alfombra, grava, y
el elefante se oculta todo lo posible con esta técnica.

En primer lugar, haremos una imagen para trabajar con:

1. En Photoshop, seleccione Archivo, Nuevo para crear una nueva imagen.


Tamaño de la imagen de 256x256, para establecer el modo de escala de grises,
y conjunto de contenidos a blanco.
2. Ahora seleccione Filtro, Ruido, Añadir Ruido. En el cuadro de diálogo
resultante, establezca la distribución de Gauss y la cantidad a unos 240, y
pulse Aceptar. Ahora debería tener una imagen aleatoria cubiertos con
moteado de diversos tonos de gris.
3. Ahora gire el moteado en madera de grano. Seleccione Filtro, Blur, Motion
Blur. En el cuadro de diálogo, establezca el ángulo a 90 (hacia arriba y hacia
abajo) y la distancia a unos 24 y, a continuación, pulse Aceptar. Ahora usted
debería tener una buena escala de grises de madera de grano, con la
excepción de la parte superior e inferior de la imagen donde el movimiento
borroso no llegó.
4. Use una brocha clon con la opción de "Clonar (alineado)" y establecer un
medio de Opacidad (alrededor del 60%) para fijar la parte superior e inferior.
13

VRML 2.0 con Java CAPÍTULO 10

5. Ahora vamos a añadir el color. Elija el modo de color RGB. A continuación,


seleccione Imagen, Ajustar, Tono / Saturación, y encender Colorear. Hue
conjunto a alrededor de 32, a unos 48 Saturación y Luminosidad a unos -29 y
pulse Aceptar. Echa un vistazo a la Figura 10-6 para ver cómo hacerlo.

Figura 10.6 Adición de color a la imagen en escala de grises.

Ahora debería tener un bonito bronceado, de grano fino, de textura de madera


que se ve algo como el roble. Guardar esta imagen como la madera 1.tif.
(También puede encontrar madera 1.tif en el CD-ROM.)

Extracción de la Costuras

Si tuviéramos que usar la imagen que acaba de crear como una repetición de
la textura, veríamos una costura evidente entre las repeticiones. El próximo
paso es realmente lo que este tutorial se trata de: hacer de la imagen de
repetir sin problemas.

1. Uso de la herramienta de selección rectangular Marquesina, seleccionar


la parte inferior de la imagen de 0, 255 a 255, 216. Esto debería darle una
selección que es de 256 por 40.
2. Seleccione Edición, Copiar y, a continuación, Seleccionar, Ninguno en la
barra de herramientas. Ahora elija Edición, Pegar que la selección de nuevo
como un objeto flotante. Seleccione Imagen, Voltear vertical para invertir la
selección.
3. Mueva la selección hasta la parte superior de la imagen. Asegúrese de
que los bordes se alinean perfectamente. (Si lo desea, puede utilizar las teclas
de flecha del teclado para mover la selección con mayor precisión.) Una vez
que la selección se ajusta correctamente, haga clic en la imagen para anular la
selección.
4. Ahora la parte superior e inferior de la línea, pero hay una fea costura en
la imagen. He aquí cómo nos deshacemos de ella: Elija el cepillo de Sellos de
Caucho y establecer la opción de guardado de. Ajuste la opacidad a alrededor
del 70%. Cuidadosamente la pintura de la costura, sin tocar el borde superior.
14

VRML 2.0 con Java CAPÍTULO 10

¿Quieres que se vea totalmente natural. Guarda la imagen cuando haya


terminado.
5. Ahora vamos a hacer lo mismo con los lados. Utilice la herramienta
Marquesina para seleccionar el lado izquierdo de la imagen y copia la selección
al Portapapeles. Pegue la selección en la imagen y seleccione Imagen, Voltear,
horizontal a lo invertido. Mueve la selección al lado derecho y anular su
selección.
6. Ahora use la herramienta de Sellos de Caucho para mezclar la nueva área
con la versión guardada, como se muestra en la Figura 10.7. Asegúrese de
restablecer la totalidad de la parte superior y todas las del borde inferior de la
espalda en la imagen. (Traer de vuelta la parte superior e inferior bordes da
más realismo a la textura y reduce el "reflejo" de que la repetición de las
texturas pueden desarrollar si no están correctamente creado.)

Figura 10-7 Coincidencia de los lados de la imagen


7. Para reducir el tamaño de la imagen, seleccione Imagen, Tamaño de la
imagen y ajustar el tamaño de 128x128. Guardar la imagen como un archivo
JPEG con calidad de imagen de conjunto a la baja.

Aquí hay una oportunidad de experimentar con la optimización de su


textura. Pruebe con diferentes ajustes hasta que encuentre el menor
tamaño posible y JPEG de calidad que aún le da una imagen aceptable.

Ahora tiene una repetición de la textura de madera. Es hora de probarlo.


Pruebe con el ejemplo siguiente:

#VRML V2.0 utf8


#Example 11.2 - Repeating Texture Test
NavigationInfo {
type EXAMINE
}
Viewpoint {
position 0 0 10
orientation 0 0 1 0
fieldOfView 0.785398
}
Group {
children [
Shape {
appearance Appearance {
material Material {
15

VRML 2.0 con Java CAPÍTULO 10


ambientIntensity 0.2
diffuseColor 0.8 0.5 0.15
specularColor 0.3 0.1 0
shininess 0.8
}
texture ImageTexture {
url "wood-1.jpg"
}
textureTransform TextureTransform {
scale 3 3
}
}
geometry Box {
size 4 4 4
}
}
NavigationInfo {
type EXAMINE
}
]
}

Como puede ver, su madera de textura suave azulejos, sin costuras entre las
baldosas.

Texturas con Transparencia

Creadores de contenido a menudo deben recrear el complejo desorden del


mundo real sin exceder las limitaciones que les impone la módems y
navegadores. Una forma de lograrlo es utilizar la transparencia para crear
"cartel" de objetos. Las vallas son 2-D de imágenes complejas en 3-D objetos
asignada a objetos muy simple-a menudo un único polígono. Para hacer más
eficaz cartelera objetos, VRML 2.0 tiene un nodo Billboard de estos objetos, que
permite rotar de modo que siempre se enfrentan a la cámara. En torno a la
imagen de la materia con la transparencia, la ilusión de una forma muy
compleja se pueden crear utilizando únicamente geometría muy simple.

GIF89a permite elegir un color (o varios colores) de nuestra paleta de declarar


y que sea transparente. Si un objeto con un esquema muy complejo se coloca
sobre un fondo de este color transparente, aparecerá como si usted tenía
alrededor de los bordes cortados con tijeras. El formato PNG, por otro lado, nos
da plena transparencia mezclados, lo que nos permite crear parcialmente
transparente y de bordes suaves en objetos como las nubes. En esta sección
vamos a echar un vistazo a estos dos métodos de utilización de la
transparencia.
16

VRML 2.0 con Java CAPÍTULO 10

GIF89a Transparencia
El color transparente del formato GIF89a es probablemente la forma más
fácil de agregar transparencia a sus texturas. También es el método más
fiable, ya que prácticamente todos los principales navegadores soportan
GIF.

Para usarlo, usted necesita una imagen con bastante separación limpia
entre el primer plano de objetos y el fondo. Elegir un color para usar
como fondo que es totalmente diferente de cualquier otro color en la
imagen. Por ejemplo, para aislar a un árbol de color verde brillante que
podría utilizar como una rosa color de fondo. Uso de Photoshop pincel
lápiz (que no desea mezclar cualquier color), en torno a la pintura con
cuidado el objeto que desea aislar, como se muestra en la Figura 10.8.

Figura 10.8 aislantes del primer objeto

GIF es un formato indiciado (también llamados mapas o paleta de color de


mapas), de modo que cuando haya terminado de pintar el fondo de su
imagen, seleccione el modo de color indexado.

El primer paso es elegir un color de fondo de la imagen. GIF puede tener


una profundidad de color que van desde 1 bit (2 colores) a 8 bits (256
colores). El valor por defecto es de 8 bits. Baja bits por píxel niveles
le dará el tamaño de los archivos más pequeños, pero también pueden crear
artefactos en la imagen (bandas de color, chunkiness, etc.) Profundidad
de color se configura cuando se cambia el modo de color RGB a color
indexado. Generalmente comienzan en 8 bits. Si que se ve bien, voy a
deshacer el proceso y vuelve a intentarlo a menor profundidad. Una vez
que empiece a ver los problemas con la imagen, voy a deshacer, una vez
más, y subir un poco el nivel. Esta es la mejor manera para encontrar el
óptimo de la profundidad de color de la imagen.

Una vez que haya convertido su imagen en modo indexado y establecer la


profundidad de color, seleccione Archivo, Exportar, Exportar GIF89a. Si
aún no está seleccionada, seleccione la herramienta de selección y hasta
el color del fondo de la imagen en la ventana del menú de exportación.
Usted debe ver a su vez el fondo gris. Esto significa que ahora es
transparente, como puede ver en la Figura 10.9.

Figura 10.9 Hacer el fondo transparente


17

VRML 2.0 con Java CAPÍTULO 10

Uso de la herramienta de lupa, haga un zoom en la imagen y mirar en el


borde de su objeto en el que se reúne el fondo. Usted probablemente vea
algunos píxeles que son similares al color de fondo, pero que no fueron
lo suficientemente cerca para ser transparente cuando se recogieron los
antecedentes. Usar la herramienta de selección de estos píxeles. Usar la
herramienta de mano para desplazarse a través de su imagen, recogiendo
cualquier píxeles que se parecen a ellos deben ser transparentes.

Cuando esté satisfecho de que haya recogido todos los píxeles de fondo,
pulse el botón OK. Salvar su imagen como de corte out.gif y verlo
mediante el siguiente archivo VRML:
#VRML V2.0 utf8
#Example 11.3 - GIF89a Transparency
NavigationInfo {
type EXAMINE
}
Viewpoint {
position 0 0 5
orientation 0 0 1 0
fieldOfView 0.785398
}
Group {
children [
Shape {
appearance Appearance {
material Material {
ambientIntensity 0.2
diffuseColor 0.8 0.8 0.8
}
texture ImageTexture {
url "tree-1.gif"
}
}
geometry IndexedFaceSet {
coord Coordinate {
point [ -1 -1 0,
1 -1 0,
1 1 0,
-1 1 0 ]
}
coordIndex [ 0, 1, 2, 3, -1 ]
}
}
Transform {
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.2
diffuseColor 0.8 0.2 0.1
}
}
geometry Box {
}
}
translation 0 0 -3
}
18

VRML 2.0 con Java CAPÍTULO 10


]
}

Como puede ver, utilizando GIF89a transparencia, se obtiene un esquema muy


fuerte para tu vallas.

PNG canal alfa de transparencia


En contraste con la activación / desactivación de la transparencia del formato GIF89a,
PNGs vamos a utilizar mezclas de transparencia, mediante el uso de algo llamado canal
alfa. El canal alfa es un cuarto canal de información que almacena en la imagen junto
con el rojo, verde y azul, los canales. Se puede utilizar para todo tipo de cosas, pero es
más a menudo se utiliza para almacenar la información de transparencia. Así como el
color de 8 bits de información nos da 256 colores, 8 bits de alfa información nos da 256
tonos de transparencia. Eso es mucho espacio para todo tipo de efectos sutiles.

NOTA: La transparencia, especialmente con PNGs, no está bien apoyada, en el momento de este escrito.
El ejemplo dado en esta sección trabajado con CosmoPlayer 1,0 en el SGI (IRIX 6.2), pero ninguno de los
navegadores de PC he intentado mostrar que las nubes. Siempre lea las notas de la versión que vienen con
cada actualización del navegador para ver lo que está apoyado y lo sigue siendo roto. Puede probar con
estos ejemplos de su navegador utilizando el código fuente desde el CD-ROM.

La mayoría de los programas de la pintura el uso de máscara de canal alfa.


Enmascarando las zonas que queremos que sea transparente y guardar la imagen con
la máscara activa, podemos crear canales alfa. Echemos un vistazo a cómo funciona
esto con Photoshop.

Inicie Photoshop y crear una nueva imagen. Hacen 256x256 RGB con fondo blanco. Si
la ventana de Canales no está abierta, seleccione Ventana, Paletas, Canales Mostrar. En
la parte inferior de la ventana de Caja de Herramientas son dos rectángulos con los
círculos en ellos, un oscuro y una luz. Estos son los controles de modo Máscara Rápida.
Photoshop poner en modo Máscara rápida pulsando sobre el rectángulo oscuro. Usted
debe ver a un nuevo canal Máscara rápida etiqueta aparecerá en la ventana de
Canales. Haga clic en el canal de máscara rápida para que sea activo, y haga clic en el
símbolo del ojo al lado del canal RGB para que todos los canales de color invisible. Sólo
se trabajará en el canal de máscara rápida.

Vamos a hacer una textura de nubes, así que seleccione la herramienta aerógrafo con
un pincel bastante amplio y un área baja y media de opacidad. (Esta es una de esas
veces cuando con una tableta sensible a la presión es muy útil.) Haga que su color de
fondo negro y su color blanco, y seleccione Editar, de relleno. Introducir la imagen con
el color de fondo (negro). Bueno, lo que tenemos ahora es una imagen que es 100%
transparente. Vamos a ser la pintura más de opacidad a la transparencia, al igual que
una verdadera nube cubre la transparencia del cielo.

Uso de la herramienta aerógrafo, pintura una nube como la de la Figura 10.10. Dale
suave, wispy bordes y utilizar la herramienta para crear mancha zarcillos poco. No trate
de dar sombra de la nube. Recuerde, usted es sólo pintura transparencia.
19

VRML 2.0 con Java CAPÍTULO 10

Figura 10.10 Pintura una nube sobre el fondo transparente

A continuación, vamos a añadir sombra a nuestra nube. Haga clic en el canal RGB para
que sea actual y visible. Si el canal de máscara rápida se convierte en invisible, haz clic
en el ojo al lado de él para que pueda ver de nuevo. Dependiendo de las preferencias
de Photoshop cómo se crean, debería ver una nube blanca sobre un fondo coloreado.
Cambiar el modo Máscara rápida haciendo clic en el rectángulo de color claro. Ahora
debería tener una irregular selección en la ventana de la imagen y la Máscara Rápida
canal debe ser pasado de la ventana del canal. Hacer que el color azul oscuro-gris. Uso
de la herramienta aerógrafo, pintura algunos sombreados bordes a lo largo de la parte
inferior (Figura 10,11). Mantenga el sombreado muy simple.

Figura 10.11 Sombreado de la nube

Cuando haya terminado, cambie el modo Máscara rápida pulsando sobre el rectángulo
oscuro una vez más. Guardar la imagen como TIFF. Llamamos nubes 1.tif.

El último paso es convertir la imagen TIFF a un formato PNG. Photoshop 4.0 puede
guardar directamente PNG, por lo que este paso puede ser omitido en caso de que la
versión que está utilizando. Desafortunadamente, Photoshop 3.0 y la mayoría de los
otros programas de pintura no guardar PNGs, por lo que puede tener para encontrar un
convertidor. Un buen lugar para buscar convertidores
http://quest.jpl.masa.gov/PNG/pngapcv.html es, que la mayoría de las listas actuales de
software que puede convertir una imagen a formato PNG. Mi recomendación personal
es PaintShop Pro para Windows95 y NT. ImageMagick
(http://www.wizards.dupont.com/cristy/ImageMagick.html) es una alternativa para el
SIG, pero nada he intentado PNGs maneja, así como PaintShop Pro.

Una vez que haya convertido su imagen, comprobar que funciona utilizando el
siguiente archivo VRML:
#VRML V2.0 utf8
#Example 11.4 - PNG Transparency and the Billboard Node
NavigationInfo {
type "FLY"
}
Viewpoint {
position -0.3 0 10.9
orientation 0 0 1 0
fieldOfView 1.05
}
Background {
skyAngle [ 1.0472, 2.09439 ]
skyColor [ 0.1 0.1 1,
0.2 0.2 0.6,
0.6 0.6 0.7 ]
20

VRML 2.0 con Java CAPÍTULO 10

}
Group {
children [
Transform {
children Billboard {
children DEF Cloud Shape {
appearance Appearance {
texture ImageTexture {
url "cloud-1.png"
}
}
geometry IndexedFaceSet {
coord Coordinate {
point [ 1 -1 0,
1 1 0,
-1 1 0,
-1 -1 0 ]
}
coordIndex [ 0, 1, 2, 3, -1 ]
texCoord TextureCoordinate {
point [ 1 0,
1 1,
0 1,
00]
}
texCoordIndex [ 0, 1, 2, 3, -1 ]
}
}
axisOfRotation 0 0 0
}
}
Transform {
children Billboard {
children USE Cloud
axisOfRotation 0 0 0
}
translation -3.88 2.85 1.71
}
Transform {
children Billboard {
children USE Cloud
axisOfRotation 0 0 0
}
translation 3.89 3.71 2.41
}
Transform {
children Billboard {
children USE Cloud
axisOfRotation 0 0 0
}
translation -5.31 -3.77 3.23
}
Transform {
children Billboard {
children USE Cloud
21

VRML 2.0 con Java CAPÍTULO 10

axisOfRotation 0 0 0
}
translation 5.14 -3.46 5.16
}
Transform {
children Billboard {
children USE Cloud
axisOfRotation 0 0 0
}
translation -9.62 2.75 8.22
}
Transform {
children Billboard {
children USE Cloud
axisOfRotation 0 0 0
}
translation 8.95 1.76 7.69
}
]
}

PNG es un punto brillante en el horizonte de gráficos Web. No es bastante con


nosotros, pero cuando lo es, se abren muchas posibilidades para los creadores
de VRML mundo. Deje que su navegador de empresas que desea conocer el
pleno apoyo PNG.

Logos en el texto y Texturas

Vale la pena tomar unos minutos para hablar sobre el texto y la línea de arte
en las texturas. Pocas cosas más que sufren de texto pixelization. Una textura
de madera que se pixelized sigue siendo de color marrón y todavía parece
apropiado en una mesa de la cocina. Cuando el texto o una línea de arte es
aplastado, se convierte en una incomprensible Mush.

Logotipos no son sólo el nombre de alguien, que a menudo se percibe (en


especial por su propietario) como la identidad de alguien. Cuando logotipos
afectados por un cambio de resolución, puede ser muy embarazoso para el
creador de VRML. Por estas razones, recomendamos que siempre utilice una
resolución de 128x128 para texturas que contienen texto, logotipos, o la línea
de arte. 128x128 es un "mínimo común denominador" la resolución que todos
los navegadores parecen capaces de usar sin problemas.

El otro factor a considerar cuando se trabaja con texto es el formato de archivo


que utiliza. JPEG es un formato maravilloso para las fotografías y las imágenes
de tono continuo, pero es realmente difícil en el texto. GIF y PNG son mucho
mejores en cuanto al manejo de texto. Por supuesto, los problemas usuales de
archivo de imagen tipo de apoyo por los navegadores se aplican aquí.
22

VRML 2.0 con Java CAPÍTULO 10

El Nodo PixelTexture
Cuando estábamos hablando de textura tamaños, he mencionado que a veces
la uso para PixelTextures muy pequeño texturas. Este es probablemente el
nodo textura que más asusta a la gente. Para muchos usuarios, el estudio de
todos los números en hexadecimal SFImage un campo es como tener el rastreo
de las arañas sobre usted. En realidad, PixelTextures que no son difíciles de
comprender. Si usted toma un poco de tiempo para entender los conceptos
básicos, usted comenzará a ver lo muy útil que puede ser.

La diferencia clave entre la PixelTexture y de los demás nodos de la textura es


el campo de imagen. Este campo es una SFImage que le permite definir una
textura píxel por píxel. Imagínese todos los datos contenidos en una imagen,
convertida a texto con un valor hexadecimal como 0x0F3692 para cada pixel!
Bastante aterrador, ¿no? En realidad, lo que nunca hacer un mapa de textura
realmente compleja esta manera, pero usted puede insertar una muy simple,
repetitivo textura en el cuerpo de su mundo VRML y recibir un pequeño ahorro
en el tiempo de descarga. (El PixelTexture nodo en el ejemplo que figura a
continuación es sólo 1.3K.)

Ahorro de ancho de banda y tiempo de descarga es lo que este nodo se trata.


Sin embargo, recuerde que no hay compresión de imagen en absoluto con
PixelTextures. De hecho, debido a que la información se almacena como
caracteres ASCII, que puede ser más grande que la misma imagen sin
comprimir en un formato binario (como TGA)-así que ellos pequeños!

Con el fin de utilizar este campo, se necesitará un hexagonal de la calculadora


o alguna forma de convertir los valores RGB en hexadecimal. Una vez que
usted puede hacer esto, la sintaxis es bastante sencilla. Los dos primeros
valores representan la anchura y la altura de la textura, por ejemplo, 2 4 sería
de dos píxeles de ancho y cuatro de alto. El tercer valor es el número de
componentes a la imagen. Por ejemplo, 1 es una imagen en escala de grises, 2
es una imagen en escala de grises con transparencia, 3 es una imagen RGB, y
4 es una imagen RGB con transparencia. Estas cifras son seguidas por el valor
hexadecimal de los colores en cada píxel. Cada componente de color tiene un
valor hexadecimal en el orden rojo, verde, azul, la transparencia. Por ejemplo,
sería 0xFF0000 rojo, 0x00FF00 sería verde, azul 0x0000FF sería, y sería un
0xFFFF0080 semitransparente de color amarillo. Pixeles se especifican de
izquierda a derecha, de abajo hacia arriba. La primera es el valor hexadecimal
inferior izquierda píxel de la imagen, y el último valor es la parte superior
derecha píxel.

He aquí un ejemplo de un cubo con un pixel basado en la textura de ladrillo:

#VRML V2.0 utf8


#Example 11.5 - PixelTexture - 10x10 brick texture Example
NavigationInfo {
type "EXAMINE"
}
Viewpoint {
position 0 0 5
23

VRML 2.0 con Java CAPÍTULO 10


orientation 0 0 1 0
fieldOfView 0.785398
}
Group {
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.2
diffuseColor 0.8 0.8 0.8
}
texture PixelTexture {
image 10 10 3 0x511504 0x511504 0x511504 0x511504 0x511504
0x511504 0x511504 0x511504 0x511504 0xAAAAAA
0x511504 0x511504 0x511504 0x511504 0x511504
0x511504 0x511504 0x511504 0x511504 0xAAAAAA
0x511504 0x511504 0x511504 0x511504 0x511504
0x511504 0x511504 0x511504 0x511504 0xAAAAAA
0x511504 0x511504 0x511504 0x511504 0x511504
0x511504 0x511504 0x511504 0x511504 0xAAAAAA
0xAAAAAA 0xAAAAAA 0xAAAAAA 0xAAAAAA 0xAAAAAA
0xAAAAAA 0xAAAAAA 0xAAAAAA 0xAAAAAA 0xAAAAAA
0x511504 0x511504 0x511504 0x511504 0xAAAAAA
0x511504 0x511504 0x511504 0x511504 0x511504
0x511504 0x511504 0x511504 0x511504 0xAAAAAA
0x511504 0x511504 0x511504 0x511504 0x511504
0x511504 0x511504 0x511504 0x511504 0xAAAAAA
0x511504 0x511504 0x511504 0x511504 0x511504
0x511504 0x511504 0x511504 0x511504 0xAAAAAA
0x511504 0x511504 0x511504 0x511504 0x511504
0xAAAAAA 0xAAAAAA 0xAAAAAA 0xAAAAAA 0xAAAAAA
0xAAAAAA 0xAAAAAA 0xAAAAAA 0xAAAAAA 0xAAAAAA
}
textureTransform TextureTransform {
scale 5 5
}
}
geometry Box { }
}
}

Echemos un vistazo en esta textura. 0x511504 son los píxeles de color marrón
rojizo, mientras que los píxeles son 0xAAAAAA gris claro. Usted puede ver el
tipo de ladrillo en el patrón de la agrupación de caracteres ASCII. Normalmente
parcela la evolución de la red de papel antes de empezar a escribir
PixelTextures. En términos generales, si su patrón es mucho más compleja que
eso, usted está probablemente en mejor situación simplemente utilizando una
imagen para tu textura. (Dicho esto, algunos de los piratas informáticos que allí
podría querer experimentar con la realidad compleja de píxeles basados en
texturas similares a los patrones fractales-como parte de los mundos creados
al vuelo usando el nodo script.)

Algunas veces usted puede ver PixelTextures a que se refiere como "inline"
24

VRML 2.0 con Java CAPÍTULO 10

texturas. Este es un vestigio de la VRML 1.0 días, cuando a base de píxeles y


texturas de imagen basada en las texturas son parte del mismo nodo.

The Dark Ciencias de MPEG-1

Ningún aspecto de VRML 2.0 textura cartografía causa más confusión y es


menos el apoyo de los navegadores que el nodo MovieTexture. El corazón de la
MovieTexture nodo es el MPEG-1 de audio / video codec (compresor /
descompresor). En esta sección vamos a tratar de desmitificar ambos. Por
favor, tenga en cuenta que muchos (si no la mayoría) de las cosas que estamos
hablando aquí no son compatibles con los navegadores aún. Leer las notas de
la versión de su navegador cuidadosamente, y asegúrese de que el navegador
escritores sabemos que usted necesita apoyo para ello.

Creación de películas MPEG-1

La palabra significa MPEG Motion Picture Experts Group. Este es un grupo de


personas que trabajan bajo la norma ISO para desarrollar normas para vídeo
digital. Existen varias versiones de la especificación MPEG de vídeo digital para
cumplir con diversos requisitos, pero desde VRML sólo admite MPEG-1, que es
lo que vamos a discutir aquí. En primer lugar, tenemos que echar un vistazo a
cómo funciona el MPEG y por qué es tan buen medio para video.

MPEG es un codec de intervalo, lo que significa que la mayoría de las tiendas


de lo que son las diferencias entre los marcos en lugar de almacenar cada
fotograma individual. Mediante la concentración de las diferencias entre los
marcos, MPEG da una tasa significativamente mayor de compresión que otros
códecs de comprimir y almacenar cada uno de los cuadros por separado.

Así es como funciona: Cada par de cuadros (durante un intervalo establecido


de codificación), todo un marco se almacena. Estos marcos completo aún se les
llama I-frames (intraframes). Los marcos entre la I-frames, marcos delta,
contienen sólo los cambios desde el último I-frame se almacenó. Un tipo de
marco delta, el P-frame (marco o previstos), se prevé sólo desde el más
reciente I-o P-marco que vino antes que ella. El otro tipo de marco delta, el B-
25

VRML 2.0 con Java CAPÍTULO 10

marco (o bi-direccional marco), se prevé dos más cercanos de la I-o P-frames


directamente antes y después de ella.

La distancia entre la I-marcos es muy importante, tanto de compresión y


calidad de imagen. Asimismo, el número de cuadros P-entre el I-marcos
también puede afectar dramáticamente los resultados. El formato MPEG-1 FAQ
(http://www.vol.it/MPEG/mpeg1-v.html # ¿Cómo funciona un video MPEG-1 de
trabajo) se afirma: "La secuencia de fotogramas decodificados usualmente
como: IBBPBBPBBPBBIBBPBBPB ... Cuando hay 12 marcos de I I (para EE.UU. y
Japón, de todos modos.) [sic] Esto se basa en un requisito de acceso aleatorio
que se necesita un punto de al menos una vez cada 0,4 segundos o menos. La
proporción de P a B se basa en la experiencia. "

Mi experimentación lleva esto. He encontrado que un espaciamiento de un I-


frame 12 de cada marco y un P-3 de cada marco de cuadro entre ellos parece
dar la mejor calidad de imagen, con un relativamente bajo para el tamaño del
archivo de vídeo a 30fps. Vale la pena el tiempo para probar diferentes
configuraciones, tomando nota de la calidad y el tamaño del archivo, cada vez
que codificar una película MPEG. Me sorprendí al encontrar que la reducción del
número de P-frames (de mi habitual un P 3 de cada fotograma a fotograma de
una cada 6) bajó la calidad del vídeo y el aumento de tamaño de archivo de un
archivo MPEG I de reciente creación.

La mayoría de software de codificación le da control sobre la ubicación de la I-


frames. Algunos programas de software también le permitirá establecer los
intervalos entre las categorías P-y B-frames. Otras características de software
pueden incluir antes y después de la filtración y control de la x y vector de
movimiento y variedad.

La mayoría de codificación MPEG sigue siendo hacerse con hardware especial.


Incluso en su más barato, se trata de una opción muy cara. En el último año,
varias empresas han empezado a ofrecer programas basados en los
codificadores MPEG. Codificadores de software comercial de alta velocidad a
bajo precio. Muchos codificadores de hardware puede codificar en tiempo real,
mientras que los codificadores de software puede tardar horas para codificar
un minuto de vídeo. Sin embargo, con codificadores de hardware a partir de
alrededor de $ 5000 y codificadores de software a partir de menos de $ 100, la
mayoría de nosotros puede darse el lujo de esperar. También hay algunos
shareware y freeware MPEG utilidades disponibles para el presupuesto muy
bajo contenido creador.

He hecho una rápida búsqueda en la Web y han surgido con el MPEG siguientes
recursos:
26

VRML 2.0 con Java CAPÍTULO 10

• Preguntas más frecuentes:

MPEG-1 FAQ http://www.vol.it/MPEG/mpegfaq2.html

• Las empresas que hacen software de codificación MPEG:

Xing http://www.xingtech.com/ Tecnología


Heuris / Pulitzer http://www.heuris.com/
Sistemas Ulead http://www.ulead.com/

• Las empresas que hacen de la codificación MPEG de hardware:

FutureTel http://www.futuretel.com/
Optibase http://www.optibase.com/
Optivision http://www.optivision.com/
Sigma Designs http://www.sigmadesigns.com/

• MPEG Otros recursos:

MPEG.org http://www.mpeg.org
Utilidades MPEG http://www.powerweb.de/mpeg/mpega.html

Usando el nodo MovieTexture


Como el mapeo de texturas nodo, el nodo MovieTexture es muy similar a la
ImageTexture nodo en su uso y sintaxis. Sin embargo, dado que las películas
MPEG jugar con el tiempo, el nodo MovieTexture tiene los mismos campos
adicionales que el tiempo que dependen de otros nodos de VRML (AudioClip y
TimeSensor) tener. StartTime El campo es el momento en que la película
debería empezar. StopTime El campo es el momento en que la película debería
detenerse. El bucle de campo define si la película debe repetir o reproducir y
detener de una vez. (Por favor refiérase a la especulación para obtener
información más detallada sobre estos campos.) La forma en que estos campos
de interactuar el uno con el otro determina el comportamiento del nodo
MovieTexture.

El nodo MovieTexture se startTime inactivo hasta que se alcanza. StartTime


puede ser explícitamente escrito en el nodo por el autor, pero es más a
menudo dirigidas al nodo de un sensor o un script. He aquí un ejemplo simple
en el que se dirige a startTime MovieTexture el nodo de un TouchSensor:

#VRML V2.0 utf8


#Example 11.6 - MovieTexture - startTime from TouchSensor
NavigationInfo {
type "EXAMINE"
}
27

VRML 2.0 con Java CAPÍTULO 10


Viewpoint {
position -1.995 1.668 4.105
orientation -0.639 -0.754 -0.153 0.617
fieldOfView 0.785
}
Group {
children [
DEF Start_Movie TouchSensor { }
Shape {
appearance Appearance {
material Material {
ambientIntensity 0.25
diffuseColor 0.8 0.8 0.8
}
texture DEF Test_Movie MovieTexture {
url "pyro.mps"
}
}
geometry Box { }
}
Sound {
source USE Test_Movie
minFront 5
maxFront 10
minBack 3
maxBack 8
}
]
}
ROUTE Start_Movie.touchTime TO Test_Movie.set_startTime

Si el bucle de campo está establecido en TRUE, la película se reproducirá una y


otra vez hasta que se alcanza stopTime. Si es TRUE bucle y stopTime startTime
es menos que, la película será para siempre. Aquí hay un ejemplo donde se ha
stopTime discapacitados mediante el establecimiento a -1:

# VRML V2.0 utf8


#VRML V2.0 utf8
#Example 11.7 - MovieTexture - continious loop with no stopTime
NavigationInfo {
type "EXAMINE"
}
Viewpoint {
position -1.995 1.668 4.105
orientation -0.639 -0.754 -0.153 0.617
fieldOfView 0.785
}
Group {
children [
Shape {
appearance Appearance {
material Material {
ambientIntensity 0.25
diffuseColor 0.8 0.8 0.8
shininess 0.2
}
28

VRML 2.0 con Java CAPÍTULO 10


texture DEF Test_Movie MovieTexture {
loop TRUE
stopTime -1
url "pyro.mps"
}
}
geometry Box { }
}
Sound {
source USE Test_Movie
minFront 8
maxFront 20
minBack 5
maxBack 15
}
]
}

Un evento puede stopTime permiten controlar con exactitud cuánto tiempo la


película juega. Dado que es casi imposible determinar el "mundo real" al
tiempo que desea que se haga algo, es una buena idea usar un pequeño script
para configurar eventos como stopTime tiempo. En este ejemplo se utiliza una
secuencia de comandos para establecer el valor de stopTime para el mismo
valor que startTime y 6 segundos.

#VRML V2.0 utf8


#Example 11.8 - MovieTexture - stopTime from script node
NavigationInfo {
type "EXAMINE"
}
Viewpoint {
position -1.995 1.668 4.105
orientation -0.639 -0.754 -0.153 0.617
fieldOfView 0.785
}
Group {
children [
DEF Start_Movie TouchSensor {
}
Shape {
appearance Appearance {
material Material {
ambientIntensity 0.25
diffuseColor 0.8 0.8 0.8
shininess 0.2
}
texture DEF Test_Movie MovieTexture {
url "pyro.mps"
loop TRUE
startTime 0
stopTime 1
}
}
geometry Box {
}
}
29

VRML 2.0 con Java CAPÍTULO 10


Sound {
source USE Test_Movie
minFront 8
maxFront 20
minBack 5
maxBack 15
}
DEF Stop_It Script { # Stop Movie after 6 seconds
eventOut SFTime stopTime_changed
eventIn SFTime set_startTime
url "javascript:
function set_startTime(value) {
stopTime_changed = value + 6;
}"
}
]
}
ROUTE Start_Movie.touchTime TO Stop_It.set_startTime
ROUTE Start_Movie.touchTime TO Test_Movie.set_startTime
ROUTE Stop_It.stopTime_changed TO Test_Movie.set_stopTime

En este ejemplo se requiere que su navegador soporte tanto el nodo


MovieTexture y JavaScript. Buena suerte con eso!

Imagen donde se reúne con Geometría

Hasta ahora en este capítulo hemos estado hablando principalmente sobre la


teoría y la textura de cómo crear imágenes. En esta sección vamos a ver cómo
se aplican las texturas a la geometría.

Mapeo por defecto


Texturas cuando se aplican a los VRML primitivas (esfera, cono, cilindro, y el
recuadro), los resultados son muy predecibles, ya que las coordenadas de
textura se construyen in Cartografía nonprimitive objetos geométricos, por otro
lado, puede ser muy confuso. La especificación VRML 2.0 nos da la capacidad
de controlar la forma en nuestro trabajo con texturas de nuestros objetos por
medio de la TextureCoordinate y TextureTransform nodos, pero antes de discutir
los nodos, echemos un vistazo a lo que sucede cuando no se usan.

Cuando no se especifican las coordenadas de textura de un objeto, la


especificación de VRML 2.0 requiere que el navegador de objetos poligonales
mapa utilizando el objeto de la caja (una caja imaginaria que contiene el objeto
30

VRML 2.0 con Java CAPÍTULO 10

por completo dentro de ella). Cuanto más larga sea la dimensión de la caja
debe definir la s coordenadas, mientras que el siguiente corto dimensión debe
definir el t coordenadas. El resto (más corto) debe mostrar la dimensión
manchada "lados" de la textura.

S valores de cero y no debe ser negativo en la esquina de la dimensión de lo


que recibe de sus valores. Los valores máximos son un poco más complicado. S
El valor oscila entre 0 y 1, pero no sólo valores van de 0 a la relación entre el
tamaño de la cara no con el tamaño de la s lado. Por lo tanto, la textura debe
ser tratado como un cuadrado del tamaño de la s lado (el lado más largo).

Cuando la cara no es más corto que el lado s (según la especificación, debe ser
del mismo tamaño o más corto que el lado s), la textura se corta. Por ejemplo,
si la s lado es de 12 unidades de longitud y el lado no es de 8 unidades y, a
continuación, la textura se debe cortar las dos terceras partes de la forma de
su eje v. Aún conmigo? Aguanta, por tanto, todo se reúne cuando se mira en la
siguiente figura.

Si una parte o la totalidad de la caja son las mismas dimensiones (un cubo, por
ejemplo), y t s valores se determinan en el orden de x en primer lugar, y
entonces y, a continuación, z. Por lo tanto, el lugar en donde s = 0, t = 0 en un
cubo que era de 5 unidades de largo en cada lado debe ser de al -2,5, -2,5,
-2,5.

He estado usando el mundo "debería" a lo largo de esta sección, ya que el


navegador de apoyo para el correcto mapeo por defecto es terrible en este
momento. Los resultados que es probable que se de nadie supongo. Figura
10.12 se muestra un ejemplo de lo correcto mapeo debe parecerse.

Figura 10,12 correcto mapeo por defecto

Aquí está el mundo VRML que he usado para hacer la imagen en la Figura
10.12. Utilízalo para ver la forma en que su navegador favorito de medidas.

#VRML V2.0 utf8


#Example 11.9 - Default Mapping Test
NavigationInfo {
type "EXAMINE"
}
Viewpoint {
position -8.263 5.702 14.947
orientation -0.586 -0.798 -0.141 0.585
fieldOfView 0.785
}
Group {
children [
DEF Wide_box Shape {
31

VRML 2.0 con Java CAPÍTULO 10


appearance Appearance {
material DEF base_color Material {
ambientIntensity 0.25
diffuseColor 0.8 0.8 0.8
shininess 0.2
}
texture ImageTexture {
url "mandrill.jpg"
}
}
geometry IndexedFaceSet {
coord Coordinate {
point [ -9 1 1,
-9 -2 1,
-4 -2 1,
-4 1 1,
-9 1 -1,
-9 -2 -1,
-4 -2 -1,
-4 1 -1 ]
}
coordIndex [ 0, 1, 2, -1, 0, 2, 3, -1,
7, 6, 5, -1, 7, 5, 4, -1,
3, 2, 6, -1, 3, 6, 7, -1,
4, 0, 3, -1, 4, 3, 7, -1,
4, 5, 1, -1, 4, 1, 0, -1,
1, 5, 6, -1, 1, 6, 2, -1 ]
}
}
DEF Tall_box Shape {
appearance Appearance {
material USE base_color
texture ImageTexture {
url "mandrill.jpg"
}
}
geometry IndexedFaceSet {
coord Coordinate {
point [ -1.5 4.5 2.5,
-1.5 -4.5 2.5,
1.5 -4.5 2.5,
1.5 4.5 2.5,
-1.5 4.5 -2.5,
-1.5 -4.5 -2.5,
1.5 -4.5 -2.5,
1.5 4.5 -2.5 ]
}
coordIndex [ 0, 1, 2, -1, 0, 2, 3, -1,
7, 6, 5, -1, 7, 5, 4, -1,
3, 2, 6, -1, 3, 6, 7, -1,
4, 0, 3, -1, 4, 3, 7, -1,
4, 5, 1, -1, 4, 1, 0, -1,
1, 5, 6, -1, 1, 6, 2, -1 ]
}
}
DEF Cube Shape {
appearance Appearance {
32

VRML 2.0 con Java CAPÍTULO 10


material USE base_color
texture ImageTexture {
url "mandrill.jpg"
}
}
geometry IndexedFaceSet {
coord Coordinate {
point [ 4 2.5 2.5,
4 -2.5 2.5,
9 -2.5 2.5,
9 2.5 2.5,
4 2.5 -2.5,
4 -2.5 -2.5,
9 -2.5 -2.5,
9 2.5 -2.5 ]
}
coordIndex [ 0, 1, 2, -1, 0, 2, 3, -1,
7, 6, 5, -1, 7, 5, 4, -1,
3, 2, 6, -1, 3, 6, 7, -1,
4, 0, 3, -1, 4, 3, 7, -1,
4, 5, 1, -1, 4, 1, 0, -1,
1, 5, 6, -1, 1, 6, 2, -1 ]
}
}
]

La moraleja de esta historia es: "No dejar que el navegador de determinar las
coordenadas de su cartografía para usted." (Qué me da una gran segue en la
próxima sección.)

Uso de la TextureCoordinate Nodo


Como hemos visto, la cartografía IndexedFaceSet objetos complejos
utilizando sólo el navegador por defecto es una mierda disparar. Estos
objetos necesitan una manera de definir la forma en que el mapa de
textura, se colocará en el ellos. Aquí es donde viene la
TextureCoordinate nodo pulg

TextureCoordinate El nodo es un conjunto de valores s y t que


corresponden a los vértices de la geometría. Vive en el campo de la
texCoord nodo IndexedFaceSet, y es referenciado por el campo de la
texCoordIndex nodo IndexedFaceSet. Si la relación entre los vértices del
objeto y de la s, t los valores de la TextureCoordinate nodo es correcta,
se verá la textura suave y natural. Si no es así, la textura se verá como
se aplica de Pablo Picasso.

El truco para TextureCoordinate el nodo se encuentra en el proceso de


asignación, y la única forma práctica para establecer las coordenadas de
textura de un objeto complejo es hacerlo durante el proceso de modelado
en 3-D un programa de modelado. Casi todos los grandes en 3-D los
paquetes de modelado en apoyo de mapas de textura, y la mayoría le
permitirá mapa objetos de varias formas.
33

VRML 2.0 con Java CAPÍTULO 10


Ortogonal de mapas (ver Figura 10.13) se puede comparar con la proyección
de la textura sobre el objeto de la misma manera una diapositiva se
proyecta sobre una pared. A diferencia de un proyector de diapositivas,
sin embargo, esta proyección ortográfica es-no hay una proyección de
"cono" para distorsionar la imagen.

Figura 10.13 Ortogonal cartografía

Mapas esféricos (ver Figura 10.14) toma la imagen, las formas en una
esfera, y luego se contrae hacia abajo en la esfera del objeto. La
textura proyectos perpendicularmente hacia abajo de la superficie de la
esfera de textura.

Figura 10.14 esférico cartografía

Cartografía cilíndrica (véase la Figura 10,15) es similar a la esférica


de cartografía, con la excepción que constituye la textura en un cilindro
antes de la proyección de que en el objeto.

Figura 10.15 cilíndrico cartografía

Las imágenes en la Figura 10.13-11.15 se generaron utilizando la avanzada


Visualizer Wavefront, pero el proceso es similar en la mayoría de los
otros 3-D los paquetes de modelado (3D Studio, por ejemplo).

El mayor problema con el uso comercial del software 3-D para crear su
mapa y los objetos VRML es el proceso de traducción. A pesar de que hay
traductores que a su vez en 3-D la mayoría de formatos de archivo en
VRML, algunos de ellos, por desgracia, no se traducen los datos de
textura. Además, en 3-D algunos formatos de archivo (como DXF) no
soportan textura información a todos. Sugiero a experimentar con todos
los traductores disponibles para su elección de formato y el que da los
mejores resultados. Un buen lugar para iniciar la búsqueda de traductores
está en el repositorio de VRML (http:/www.sdsc.edu/vrml).
34

VRML 2.0 con Java CAPÍTULO 10

Estamos empezando a ver un pequeño número de grandes programas de 3-D que


guardar los archivos directamente en VRML. También existen varios
programas diseñados específicamente para el modelado de objetos VRML. La
mayoría son muy básicos, pero algunos ofrecen algunas características muy
avanzadas, incluido el pleno apoyo de mapas de textura. Esto sólo se
mejoran con el tiempo.

Veamos un pequeño ejemplo de un modelo que utiliza el nodo


TextureCoordinate:

#VRML V2.0 utf8


#Example 11.10 - TextureCoordinate Node Example
NavigationInfo {
type "EXAMINE"
}
Viewpoint {
position 0 0.6 6.0
orientation 0 0 1 0
fieldOfView 0.7854
}
Group {
children DEF House Shape {
appearance Appearance {
material Material {
ambientIntensity 0.2
diffuseColor 0.8 0.5 0.15
specularColor 0.3 0.1 0
shininess 0.8
}
texture ImageTexture {
url "mandrill.jpg"
}
}
geometry IndexedFaceSet {
coord Coordinate {
point [ -0.580472 -0.673746 0.585422,
-0.580472 -0.673746 -0.575522,
0.580472 -0.673746 -0.575522,
0.580472 -0.673746 0.585422,
1 1 1,
0.580472 -0.673746 0.585422,
0.580472 -0.673746 -0.575522,
1 1 -1,
-1 1 -1,
-0.580472 -0.673746 -0.575522,
-0.580472 -0.673746 0.585422,
-1 1 1,
0 1.79664 0.844294,
0 1.79664 -0.8344,
-1 1 1,
-0.580472 -0.673746 0.585422,
0.580472 -0.673746 0.585422,
1 1 1,
0 1.79664 0.844294,
1 1 -1,
0.580472 -0.673746 -0.575522,
35

VRML 2.0 con Java CAPÍTULO 10


-0.580472 -0.673746 -0.575522,
-1 1 -1,
0 1.79664 -0.8344 ]
}
coordIndex [ 0, 1, 2, 3, -1, 4, 5, 6,
7, -1, 8, 9, 10, 11, -1, 8,
11, 12, 13, -1, 12, 4, 7, 13,
-1, 14, 15, 16, 17, -1, 14, 17,
18, -1, 19, 20, 21, 22, -1, 19,
22, 23, -1 ]
texCoord TextureCoordinate {
point [ 0 1,
0 0,
1 0,
1 1,
0.0151568 0.663504,
0.13094 0.0180912,
0.818404 0.0180912,
0.99208 0.649031,
0.984843 0.656268,
0.774986 0.0108547,
0.174359 0.0108547,
0.00792035 0.649031,
0.0658121 0.987778,
0.948661 0.995014,
0.984843 0.721396,
0.753276 0.00498593,
0.188832 0.00498593,
0.0102885 0.726549,
0.5 1.00362,
0.00571176 1.01031,
0.133861 0.00800008,
0.815795 0.00342336,
0.994288 1.00115,
0.490847 1.99888 ]
}
texCoordIndex [ 0, 1, 2, 3, -1, 4, 5, 6,
7, -1, 8, 9, 10, 11, -1, 8,
11, 12, 13, -1, 12, 4, 7, 13,
-1, 14, 15, 16, 17, -1, 14, 17,
18, -1, 19, 20, 21, 22, -1, 19,
22, 23, -1 ]
}
}
}

Como puede ver, esto va mucho más allá de lo que se puede hacer a mano en
un editor de texto.

Uso de la TextureTransform Nodo


36

VRML 2.0 con Java CAPÍTULO 10

A pesar de la correcta aplicación TextureCoordinate nodos puede incorporar


todo tipo de transformaciones en las coordenadas explícitamente, a menudo es
necesario un ajuste de un mapa de textura, una vez que ha sido aplicada a un
objeto. El nodo TextureTransform nos da la capacidad para llevar a cabo la
rotación, la traducción, y las transformaciones de escala en la textura con un
alto grado de precisión. El TextureTransform nodo realiza sus transformaciones
en las coordenadas de textura más que en la textura misma. Dicho esto, si
usted elige a pensar en las transformaciones que pasa a la textura, puede
encontrar todo esto más fácil de entender.

Translation
Traslación de su textura se mueve hacia arriba y hacia abajo y de lado a lado.
El movimiento es controlado por el campo de la traducción, que consta de dos
números de punto flotante, que representan valores de s y t (con un SFVec2f
vector 2-D). El valor por defecto es 0 0 (sin traducción). El primer número de
control horizontal (eje s) de circulación, y el segundo, los controles verticales (t
eje) movimiento. Movimiento se da en múltiplos de la s, t valores. Por lo tanto,
una traducción de 0,5 0,5 a mover la textura a una distancia de la mitad de su
anchura tanto horizontal como verticalmente.

Figura 10.16 se muestra un ejemplo de la traducción, que también se ilustra en


el siguiente código:

#VRML V2.0 utf8


#Example 11.11 - TextureTransform - Translation Example
NavigationInfo {
type "EXAMINE"
}
Viewpoint {
position -1.995 1.668 4.105
orientation -0.639 -0.754 -0.153 0.617
fieldOfView 0.785
}
Group {
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.25
diffuseColor 0.8 0.8 0.8
}
texture ImageTexture {
url "mandrill.jpg"
}
textureTransform TextureTransform {
translation 0.5 0.5
}
}
geometry Box { }
}
}
37

VRML 2.0 con Java CAPÍTULO 10

Traducción de la Figura 10.16


Escala
Ampliación se reduce o aumenta la textura de todo el centro de
transformación. Es controlada por el campo a gran escala, que consta de dos
números (s, t los valores) que conforman un nuevo SFVec2f vector 2-D. El
primer número controla la escala horizontal (eje de la s) y el segundo, los
controles de escala vertical (eje t).

El factor de escala se refiere a cuántas veces la textura se repite. Una escala


de 1 1 (el valor por defecto) significa que no se lleva a cabo la ampliación, la
textura se muestra a tamaño completo. Una escala de 2 2 disminuiría la
textura para que los dos ejemplares se muestran en cada dirección. Y una
escala de 0,5 0,5 a mostrar la mitad de la textura en cada sentido,
efectivamente duplicar su tamaño. Ampliación debe ser mayor que cero. Es
imposible decir qué va a pasar con su textura, si la escala inferior o igual a
cero, pero sea lo que sea, probablemente no le guste.

Puede ver un ejemplo de la textura de escala en la figura 10,17 y en el


siguiente código:
#VRML V2.0 utf8
#Example 11.12 - TextureTransform - Scale Example
NavigationInfo {
type "EXAMINE"
}
Viewpoint {
position -1.995 1.668 4.105
orientation -0.639 -0.754 -0.153 0.617
fieldOfView 0.785
}
Group {
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.25
diffuseColor 0.8 0.8 0.8
}
texture ImageTexture {
url "mandrill.jpg"
}
textureTransform TextureTransform {
scale 2 2
}
}
geometry Box { }
38

VRML 2.0 con Java CAPÍTULO 10


}
}

Figura 10.17 Escala


Rotación
La rotación de campo especifica un factor de rotación (en radianes) por el que
la textura de mapa ha de ser girado alrededor del centro. Un resultado positivo
sería la rotación de las agujas del reloj, y una negativa sería la rotación de las
agujas del reloj.

Figura 10.18 y el código que sigue muestra un ejemplo de rotación:

#VRML V2.0 utf8


#Example 11.14 - TextureTransform - Center Example
NavigationInfo {
type "EXAMINE"
}
Viewpoint {
position -1.995 1.668 4.105
orientation -0.639 -0.754 -0.153 0.617
fieldOfView 0.785
}
Group {
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.25
diffuseColor 0.8 0.8 0.8
}
texture ImageTexture {
url "mandrill.jpg"
}
textureTransform TextureTransform {
center 0.5 0.5
rotation 0.785398
}
}
geometry Box { }
}
}
39

VRML 2.0 con Java CAPÍTULO 10

Figura 10.18 Rotación

Centro de transformación
El centro del campo TextureTransform nodo en realidad no realizar una
transformación. Cuenta la rotación y escala de los campos de cómo hacer su
trabajo. El centro de transformación es el punto en torno a las
transformaciones que tienen lugar. La rotación de campo gira alrededor del
centro. La escala de campo escalas hacia el exterior (o adentro) desde el
centro. (Desde el campo de la traducción representa movimiento lineal, que no
se utiliza el centro.) El punto central se representa como una s, t el valor, y por
defecto a 0, 0-de la esquina inferior izquierda de la textura. Recuerde que
trabaja en el centro de s, t el espacio del objeto, no en la u, v el espacio de la
imagen!

Este es un ejemplo de una rotación con un centro de 0,5, 0,5 (véase la Figura
10,19). Comparar esto con el ejemplo anterior, la rotación en la Figura 10.18.

#VRML V2.0 utf8


#Example 11.15 - TextureTransform - Multiple Transforms
NavigationInfo {
type "EXAMINE"
}
Viewpoint {
position -1.995 1.668 4.105
orientation -0.639 -0.754 -0.153 0.617
fieldOfView 0.785
}
Group {
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.25
diffuseColor 0.8 0.8 0.8
}
texture ImageTexture {
url "mandrill.jpg"
}
textureTransform TextureTransform {
center 0.5 0.5
translation 0.5 0.5
scale 1 3
}
}
40

VRML 2.0 con Java CAPÍTULO 10


geometry Box { }
}
}

Figura 10.19 Rotación alrededor de un centro de transformación

Transformaciones múltiples
Múltiples transformaciones que tienen lugar a raíz de la precedencia de la
escala, la rotación y, a continuación, la traducción. El siguiente código es un
ejemplo de múltiples transformaciones. Puede ver los resultados en la Figura
10.20.

#VRML V2.0 utf8


#Example 11.15 - TextureTransform - Multiple Transforms
NavigationInfo {
type "EXAMINE"
}
Viewpoint {
position -1.995 1.668 4.105
orientation -0.639 -0.754 -0.153 0.617
fieldOfView 0.785
}
Group {
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.25
diffuseColor 0.8 0.8 0.8
}
texture ImageTexture {
url "mandrill.jpg"
}
textureTransform TextureTransform {
center 0.5 0.5
translation 0.5 0.5
scale 1 3
}
}
geometry Box { }
}
}
41

VRML 2.0 con Java CAPÍTULO 10

Figura 10.20 Un múltiples transformación

La animación del Nodo TextureTransform

Una vez que sepas cómo mover y reposicionar las texturas, el siguiente paso
es animar a ellos. Mientras que la geometría de los nodos puede ser animado
por el enrutamiento de los diferentes nodos interpolador a los campos de los
nodos de transformación, las cosas no son tan simples con el TextureTransform
nodo. La rotación es un SFFloat campo, por lo que es fácil animar a usar el
nodo ScalarInterpolator, pero los otros campos (la traducción, la escala, y el
centro) son todos SFVec2f. Lamentablemente, el espectro no tiene interpolador
para SFVec2f campos.

La solución es utilizar dos ScalarInterpolators (controlada por el mismo


TimeSensor) que se dirijan a un guión que combina los dos valores SFFloat es
un valor SFVec2f. El guión del SFVec2f eventOut es entonces redirigido a la que
el ámbito de la TextureTransform nodo que desee animar. A continuación se
muestra una pequeña WRL EE.UU. que un script de este tipo para animar el s
valores y no en el campo de la traducción de un TextureTransform nodo.

#VRML V2.0 utf8


#Example 11.16 - Animated Texture Example
NavigationInfo {
type "NONE"
}
Viewpoint {
position 0 0 5
fieldOfView 0.785
}
Group {
children [
DEF Square Shape {
appearance Appearance {
material Material {
ambientIntensity 0.25
diffuseColor 0.8 0.8 0.8
}
texture ImageTexture {
url "mandrill.jpg"
}
textureTransform DEF Trans TextureTransform {
translation 0 0
}
42

VRML 2.0 con Java CAPÍTULO 10


}
geometry IndexedFaceSet {
coord Coordinate {
point [ -1 1 0,-1 -1 0, 1 1 0, 1 -1 0 ]
}
coordIndex [ 0, 1, 3, 2, -1 ]
texCoord TextureCoordinate {
point [ 0 1, 0 0, 1 1, 1 0 ]
}
texCoordIndex [ 0, 1, 3, 2, -1 ]
}
}
DEF Touch TouchSensor {
}
DEF Time TimeSensor {
cycleInterval1.5
loop TRUE
startTime 0
}
DEF XInterp ScalarInterpolator {
key [ 0, 1 ]
keyValue [ 0, 1 ]
}
DEF YInterp ScalarInterpolator {
key [ 0, 1 ]
keyValue [ 0, 1 ]
}
DEF Move_it Script {
eventOut SFVec2f vec
eventIn SFFloat xIn
eventIn SFFloat yIn
field SFFloat xBuf 0
field SFFloat yBuf 0
url "javascript:
function xIn(value) {
xBuf = value;
vec[0] = xBuf;
vec[1] = yBuf;
}
function yIn(value) {
yBuf = value;
vec[0] = xBuf;
vec[1] = yBuf;
}"
}
]
}
ROUTE Touch.touchTime TO Time.set_startTime
ROUTE Time.fraction_changed TO XInterp.set_fraction
ROUTE Time.fraction_changed TO YInterp.set_fraction
ROUTE XInterp.value_changed TO Move_it.xIn
ROUTE YInterp.value_changed TO Move_it.yIn
ROUTE Move_it.vec TO Trans.set_translation

El ejemplo anterior utiliza JavaScript, pero también podría haber utilizado


VRMLScript o Java. Compatibilidad es el mayor problema con el nodo de
43

VRML 2.0 con Java CAPÍTULO 10

secuencias de comandos. En el momento que estoy escribiendo esto, usted


tiene que elegir un navegador y escriba sus guiones (y, por tanto, su VRML)
para ese navegador. Consulte el Capítulo 4 para obtener más información
acerca de secuencias de comandos.

Esperemos que prevalezca la mente sana, y algún tipo de apoyo universal de


scripting salir de la actual situación. Creadores de contenido pueden hacer
mucho para que esto sea así por dejar que el navegador escritores sabemos
que este es importante para nosotros. Su voz puede ser el que hace la
diferencia.

Fondos
A primera vista, el nodo de fondo no parece tener nada que ver con la textura
de los nodos. Un vistazo más de cerca, sin embargo, muestra que el nodo
contiene un fondo especial textura función: la capacidad para trazar imágenes
en los lados de un cubo que contiene infinitamente grande y todo el mundo en
ella. En esta sección, vamos a discutir el fondo de nodo, algunos de sus usos, y
la manera de crear imágenes para ello.

Antecedentes El Nodo
Antecedentes El nodo puede ser pensado como el mundo-dentro de un cubo
dentro de un ámbito parcial-dentro de un ámbito. El cubo y la esfera será
siempre más allá del alcance de la geometría de su mundo, no importa cuán
grande es tu mundo. Su punto de vista siempre estará en el centro del nodo de
fondo. No se puede traducir hacia ella, pero puede rotar el punto de vista para
mirar hacia arriba o hacia abajo.

El cubo está formado por seis caras, cada una de las cuales pueden
correlacionarse con una imagen que representa parte de su fondo. El parcial
(interior) campo (entre el cubo y la esfera exterior) representa la tierra, y la
esfera exterior representa el cielo (véase la Figura 10,21). Por supuesto, "tierra"
y "cielo" son sólo sugerencias, usted puede utilizar para cualquier cosa que
usted quiera.
44

VRML 2.0 con Java CAPÍTULO 10

Figura 10.21 visualizar el nodo Antecedentes

La tierra y el cielo son las esferas de colores con dos campos para cada uno.
SkyColor el campo es un conjunto de valores RGB que representan los colores
del cielo en diferentes ángulos desde la parte superior. El navegador debe
interpolar suavemente entre los colores. El primer color en la gama es el color
en la parte superior de la esfera. El último color es el color del último ángulo de
la parte inferior de la esfera. Skyangle el campo es una lista de ángulos (en
radianes), donde los colores del campo se encuentran skyColor. El ángulo de 0
(la parte superior de la esfera) es siempre supone que el primer ángulo y no
deberían incluirse en la lista.

El groundColor y groundAngle campos funcionan de la misma, excepto que los


ángulos de inicio en la parte inferior de la esfera en lugar de la parte superior,
y la esfera se detiene en el último ángulo determinado. Para más información
sobre el cielo y la tierra los campos, consulte la descripción de la
especificación.

He aquí un ejemplo muy simple de un fondo que sólo utiliza el skyColor y


Skyangle campos. El color en la parte superior es de color rojo, el color y de 60
grados en el ámbito en el fondo es negro.

DEF Red_Bg Antecedentes {


Skyangle 1,0472
skyColor [0,7 0 0,
0 0 0]
}

El siguiente ejemplo es un poco más útil. Se muestra un color azul cielo de


verano con una zona de tierra de color verde oscuro. Si el mundo incluye un
terreno plano, que podría hacer el mismo color que el groundColor en este
ejemplo, y parece claro que ir hasta el horizonte.

DEF BlueSky_Bg Antecedentes {


groundAngle 1,5
groundColor [0,05 0,1 0,05,
0,05 0,1 0,05]
Skyangle [1,0472, 2,09439]
skyColor [0,1 0,1 0,5,
0,2 0,2 0,6,
0,6 0,6 0,7]
}

Aquí hay un poco de mundo VRML por Chris Fouts de Silicon Graphics, Inc. Se
muestra cómo puede afectar a los nodos de fondo el estado de ánimo de tu
45

VRML 2.0 con Java CAPÍTULO 10

mundo. También muestra que estos nodos no son estáticas, sino que pueden
ser animados y cambiado al igual que cualquier otro nodo en VRML.

#VRML V2.0 utf8


#Example 11.17 - Day and Night Background Example
#By Chris Fouts, Silicon Graphics, Inc.
DEF HeadGroup Group {
children [
DEF BoxShape Shape {
geometry DEF TheBox Box {}
}
DEF Touch TouchSensor {}
DEF Day Background {
groundColor [ 0.14 0.28 0.00, 0.09 0.11 0.00 ]
groundAngle [ 1.5708 ]
skyColor [ 1 1 0, 1 1 0.5, 0 0 .5, 0.2 1 1 ]
skyAngle [ .05, .1, 2 ]
}
DEF Night Background {
groundColor [ 0.02 0.1 0.00, 0.0 0.05 0.00 ]
groundAngle [ 1.5708 ]
skyColor [ 1 1 1, 1 1 1, 0 0 .1, 0 0.1 0.2 ]
skyAngle [ .03, .03, 1.5708 ]
}
]
ROUTE Touch.isOver TO Night.set_bind
}

Aquí es donde el nodo de fondo se relaciona con la textura tema de este


capítulo. Además de los campos de tierra y cielo, el fondo cuenta con seis
campos de nodo en el que las imágenes se pueden colocar. El backUrl,
bottomUrl, frontUrl, leftUrl, rightUrl, y topUrl campos pueden ser considerados
como ImageTexture URL para cada una de las seis caras de un cubo. Si alguno
o todos estos campos están a la izquierda, las caras de los cubos no serán
generados por el navegador. El éxito o el fracaso de las imágenes de fondo en
el nodo está en cómo se crean las imágenes. Echemos un vistazo más de
cerca.

Imágenes de Fondos
La mejor forma de entender cómo las imágenes de fondo en el nodo están
orientadas a desarrollarse es el imaginario de que el cubo se asigna a las
imágenes, como se muestra en la Figura 10.22.
46

VRML 2.0 con Java CAPÍTULO 10

Figura 10.22 Despliegue el nodo del cubo Antecedentes

Los lados del cubo (frontUrl, rightUrl, backUrl, y leftUrl) están orientados a
todos con la parte superior de la imagen y en una dirección positiva. Si el fondo
de imagen (bottomUrl) se utiliza en su superficie estará en la dirección z
negativa. Por el contrario, si la imagen de arriba (topUrl) se utiliza en su
superficie estará en la dirección z positiva. No hay ningún requisito de que
todas las imágenes se utilizan a la vez. Por ejemplo, podría utilizar una sola
imagen en el campo backUrl como telón de fondo.

Nodo de transparencia en imágenes de fondo se maneja de la misma manera


como lo es en el nodo ImageTexture. Es una buena idea utilizar las imágenes
con la transparencia en la frontUrl, rightUrl, backUrl, y leftUrl campos y usar el
cielo y el suelo detrás de los campos de imágenes para reducir el tiempo de
descarga de imágenes y reducir la sobrecarga del navegador.

Tiempo de descarga del navegador y generales son graves problemas con las
imágenes de fondo en el nodo. Debido a la magnitud que están a escala,
pixelization puede arruinar todo el panorama a menos que las imágenes son
bastante grandes como para empezar. Esto lleva a la cuestión del tiempo de
descarga. Añadir la mayor parte de las seis imágenes de 256x256 a la de su
geometría y las texturas de cualquier otro que se está usando, y usted puede
estar en problemas. Como si eso no fuera suficiente, algunos navegadores no
pueden manejar texturas que cubren una gran área de pantalla y atascar
horriblemente cuando se encuentran con imágenes de fondo.

Ahora que hemos discutido todos los problemas con las imágenes de fondo,
vamos a hablar acerca de cómo hacerlas. En este ejemplo, vamos a hacer un
panorama de las cuatro imágenes que cubren los lados, y vamos a utilizar la
tierra y el cielo los campos para completar el fondo.

Inicie Photoshop y crear una nueva imagen que la 1024 píxeles de ancho por
256 de altura, RGB, con un fondo transparente, y el nombre de panorama.
Ahora lo que necesitas para crear una imagen panorámica. Usted puede hacer
esto por una pintura, o mediante la fusión de imágenes escaneadas, como el
de la Figura 10.23. Utilice el borde de concordancia de las técnicas que
aprendió a hacer antes de los extremos de la línea. ¿Quieres una perfecta
imagen de 360 °. Si el panorama tiene un cielo (a los efectos de este ejemplo
47

VRML 2.0 con Java CAPÍTULO 10

vamos a suponer que sí), debe hacerlo muy molesto que un color totalmente
diferente de cualquier otro color en la imagen. Esto hará más fácil para
seleccionar un color transparente que al guardar todo el disco.

Figura 10.23 Una panorámica de fondo

Una vez que su imagen está acabado, estás listo para romperla en cuatro
secciones. En el menú Archivo, crear una nueva imagen de 256 por 256 y el
nombre delante. En el panorama de imagen, seleccione un área en la extrema-
izquierda que es 256 por 256 píxeles de lado (uso de la ventana de información
para obtener el tamaño de la derecha) y copiarlo al portapapeles. Pegar este
pedazo de la imagen en la parte delantera la imagen que acaba de crear. A
continuación, volver a la imagen panorámica y elegir Seleccionar, inversa y, a
continuación, seleccione Edición, los cultivos para eliminar la imagen de la
sección frontal de la imagen principal. El panorama imagen debe ser 768 por
256 píxeles de tamaño. Repita este procedimiento dos veces más para crear
imágenes llamada izquierda y la espalda. Guardar el 25% restante de la
imagen panorámica como derecho, y usted tiene los cuatro lados de su cubo,
como se muestra en la Figura 10.24. Utilizar las técnicas examinadas
anteriormente a la exportación como GIF89a cuatro partes de imágenes, con el
cielo como un color transparente.

Figura 10.24 Rompiendo panorama en su cubo de caras

Ahora que sabe cómo crear imágenes para su uso con el nodo de fondo,
permite echar un vistazo a un mundo simple que utiliza los mismos:

#VRML V2.0 utf8


#Example 11.18 - Background Node with Images

NavigationInfo {
headlight FALSE
48

VRML 2.0 con Java CAPÍTULO 10


type "WALK"
}
Viewpoint {
position -3.06 1.6 7.45
orientation 0.10 -0.99 0.02 0.368
fieldOfView 1.5
description "entry view"
}
DirectionalLight {
direction 0.58 -0.69 -0.41
}
DEF Panorama_Bg Background {
groundAngle 1.5
groundColor [ 0.05 0.1 0.05,
0.05 0.1 0.05 ]
skyAngle [ 1.047, 2.094 ]
skyColor [ 0.1 0.1 0.5,
0.2 0.2 0.6,
0.6 0.6 0.7 ]
backUrl "bg-back.gif"
leftUrl "bg-left.gif"
frontUrl "bg-front.gif"
rightUrl "bg-right.gif"
}
Group {
children [
Transform {
children DEF house Shape {
appearance Appearance {
material Material {
ambientIntensity 0.25
diffuseColor 0.541 0 0
}
}
geometry IndexedFaceSet {
coord Coordinate {
point [ -1 1 1,
-1 0 1,
1 1 1,
1 0 1,
1 1 -1,
1 0 -1,
-1 1 -1,
-1 0 -1,
0 1.722 1,
0 1.722 -1,
-1 1 -1,
-1 0 -1,
-1 0 1,
-1 1 1,
1 1 1,
1 0 1,
1 0 -1,
1 1 -1,
-1 0 1,
1 0 1,
-1 1 1,
49

VRML 2.0 con Java CAPÍTULO 10


0 1.722 1,
1 1 1 ]
}
coordIndex [ 0, 1, 3, -1, 0, 3, 2, -1,
0, 2, 8, -1, 4, 5, 7, -1,
4, 7, 6, -1, 4, 6, 9, -1,
10, 11, 12, -1, 10, 12, 13, -1,
14, 15, 16, -1, 14, 16, 17, -1,
18, 11, 16, -1, 18, 16, 19, -1,
10, 20, 21, -1, 10, 21, 9, -1,
21, 22, 17, -1, 21, 17, 9, -1 ]
}
}
scale 2.395 2.395 2.395
}
Transform {
children DEF base Shape {
appearance Appearance {
material Material {
ambientIntensity 0.24
diffuseColor 0.05 0.1 0.05
}
}
geometry IndexedFaceSet {
coord Coordinate {
point [ 0 0 -1,
0.383 0 -0.924,
0.707 0 -0.707,
0.924 0 -0.383,
1 0 4.37e-08,
0.924 0 0.383,
0.707 0 0.707,
0.383 0 0.924,
1.51e-07 0 1,
-0.383 0 0.924,
-0.707 0 0.707,
-0.924 0 0.383,
-1 0 -1.19e-08,
-0.924 0 -0.383,
-0.707 0 -0.707,
-0.383 0 -0.924 ]
}
coordIndex [ 15, 1, 0, -1, 1, 15, 14, -1,
1, 14, 2, -1, 2, 14, 13, -1,
2, 13, 3, -1, 3, 13, 12, -1,
3, 12, 4, -1, 4, 12, 11, -1,
4, 11, 5, -1, 5, 11, 10, -1,
5, 10, 6, -1, 6, 10, 9, -1,
6, 9, 7, -1, 7, 9, 8, -1 ]
}
}
scale 11 11 11
}
]
}
50

VRML 2.0 con Java CAPÍTULO 10

Antecedentes El nodo es una herramienta de gran alcance, pero tenga cuidado


con las trampas, no todos los navegadores admiten el nodo de fondo, y las que
no podrá hacer transparentes las imágenes de apoyo. También, recuerde mirar
sus tamaños de archivo. Dicho esto, el hábil uso de la tierra y el cielo de
colores, cuidadosamente diseñado, junto con imágenes panorámicas, puede
realmente mejorar su mundo

Rellenar las lagunas

En esta última sección vamos a tocar muy brevemente en dos cosas que
afectan el mapeo de texturas en VRML, pero que no encaja realmente en
ninguna otra parte. El primero es el derecho de autor, un tema envuelto en
confusión. El otro es una discusión de textura bibliotecas.
Algunas Consideraciones de Derecho de Autor

Cuando esté seleccionando las imágenes para usar como mapas de texturas,
más tarde o más temprano va a tener la tentación de usar una imagen que
puede que no tenga el derecho legal a utilizar, como una imagen creada por
alguien más. Escaneo de una imagen que parece una cosa sencilla. ¿Quién va a
doler? Lamentablemente, utilizando una imagen sin la protección de los
derechos a la tierra que puede en un enorme montón de problemas.

El derecho de autor es un tema complejo que va mucho más allá del alcance
de este capítulo o el libro. Yo no soy un abogado y no puede darle
asesoramiento legal, pero aquí hay algunas directrices para el uso de
imágenes. En pocas palabras, usar una imagen que no ha creado, usted debe
obtener autorización escrita del propietario de los derechos de autor de esa
imagen. Si usted no tiene permiso por escrito, usted probablemente no debería
usar esa imagen. Cada pieza de la imagen y el texto tiene un implícito el
derecho de autor tan pronto como es creado, incluso si no presenta una
declaración de derechos de autor o un símbolo.

Si desea utilizar una imagen de una textura de biblioteca de CD-ROM que ha


adquirido, compruebe que su licencia le otorga el derecho a utilizar las
imágenes en Internet. Usted está definitivamente no es segura si se utiliza una
imagen de una foto del catálogo en CD-ROM. Asimismo, la digitalización de
libros o revistas o swiping las imágenes a partir de la red es totalmente
inaceptable.

Si desea obtener más información sobre el derecho de autor y la forma en que


se aplica a las cuestiones del ciberespacio, he aquí algunas direcciones URL
para que te inicies. Para el asesoramiento específico a su situación, consulte
con un abogado de propiedad intelectual.
51

VRML 2.0 con Java CAPÍTULO 10

• Derechos de autor Mitos FAQ:


http://fonsg5.let.uva.nl:4711/Books/CopyrightFAQ.txt
• Derechos de autor: http://cerebalaw.com/copy.htm
• Derechos de autor y los derechos de propiedad intelectual de los
documentos digitales: http://sunsite.berkeley.edu/Copyright/
• Propiedad Intelectual y Asuntos Legales: http://www.brint.com/IntellP.htm

Textura de las colecciones

Hace unos años, cuando los precios de 3-D de software de modelado y


animación en el PC empezó a disminuir, desarrolló una industria artesanal y la
venta de la creación de la textura mapa bibliotecas. Estas colecciones
consisten en un CD-ROM que contiene desde cincuenta a varios cientos de
imágenes, posiblemente repetir, posiblemente en diferentes tipos de archivos.
Las bibliotecas van y vienen, así que no puedo recomendar ninguna, pero por
lo general hay varios de ellos figuran en las últimas páginas de los gráficos por
ordenador las revistas.

Si bien algunos de ellos son excelentes para la emisión de animación en 3-D


uso, la mayoría de las bibliotecas que he visto no son realmente aplicables
para VRML. Las texturas suelen ser muy grandes y no suelen ser de mucho
mayor profundidad de color que sea práctico para VRML. Estos problemas se
pueden superar mediante la edición de las imágenes, pero en general el
proceso de reducción de estas texturas en gran medida su utilidad disminuye.

Volver a principios de 1996, varias personas comenzó a discutir las


posibilidades de un dominio público para la biblioteca de la textura de VRML.
Hubo dos razones de peso para esa biblioteca de existir. La primera es
simplemente para proporcionar un suministro de mapas de texturas optimizado
para su uso en la creación de mundo. La segunda fue a reducir en gran medida
de los requerimientos de ancho de banda de VRML. Dado que una gran parte
del tiempo de descarga se gasta la recuperación de las texturas del servidor, la
experiencia del usuario puede ser mucho mayor si las texturas que necesita un
mundo que ya existía en el disco duro del usuario.

Juan de VisNet Gwinner se ocupó de la causa y empezó a recoger y compilar


las texturas en un archivo. Comenzó a ejercer presión sobre el VRML
comunidad para un método de búsqueda en el disco local antes de recuperar
las texturas a través de la red que se añade a la (entonces aún en desarrollo) la
especificación de VRML 2.0. Los desarrolladores de este concepto se
resistieron, y John no tuvo éxito en sus esfuerzos para cambiar la
especificación. Su textura como la biblioteca sigue siendo un tributo a sus
52

VRML 2.0 con Java CAPÍTULO 10

esfuerzos, sin embargo, y hemos incluido en el CD de este libro. Estas texturas


se ofrecen con el programa del shareware VisMenu bajo los términos de la
licencia siempre con ese programa.

Sin embargo, ese no es el final de la historia. Si bien no hay manera fácil de


VRML para buscar el disco duro del usuario de texturas, hay una manera de
buscar texturas en más de un lugar a través de la Web. Desde el campo de URL
es un MFString, es posible incluir más de una entrada en el campo de URL de
los nodos de texturas. He aquí un ejemplo de la forma en que podría ser.

apariencia apariencia {
textura ImageTexture {
url [ "textures/brick014.jpg",
"http://foo.bar.com/VRML/textures/brick014.jpg",
"http://www.abc.co.uk/textures/brick014.jpg",
"http://big.college.edu/ ~ student/textures/brick014.jpg"]
}
}

La primera busca la URL de una textura en el servidor que el VRML está


viniendo de. Si la textura no se puede encontrar allí, o si el servidor está
teniendo problemas, se ve el nodo en el servidor foo.bar.com. Si esto no
funciona, busca en www.abc.co.uk y, a continuación, en el servidor en
big.college.edu. Todos estos servidores tienen la misma textura de biblioteca a
disposición del público. Las probabilidades de que los cuatro servidores no
estará disponible son muy escasas, por lo que el usuario casi siempre obtener
la textura que necesitan una cantidad razonable de tiempo.

Por supuesto, el problema con este concepto, al igual que con otros descritos
en este libro, es uno de cumplimiento. Antes de poder usar múltiples
direcciones URL, el navegador debe soportar, y no en el momento de este
escrito. Este apoyo debe venir pronto, sin embargo, y cuando lo hace se puede
ver un renovado interés en una biblioteca universal de la textura para VRML.
Cualquier persona que desee contribuir o participar en la textura de VRML
biblioteca deben ponerse en contacto con Juan en gwinner@northnet.org
Gwinner.

You might also like