capÍtulo 10

65
1 VRML 2.0 con Java CAPÍTULO 10 Creación de Mapa de Texturas

Upload: hinago

Post on 12-Jun-2015

550 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: CAPÍTULO  10

1

VRML 2.0 con Java CAPÍTULO 10

Creación de Mapa de Texturas

Page 2: CAPÍTULO  10

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 

Page 3: CAPÍTULO  10

3

VRML 2.0 con Java CAPÍTULO 10

Tuercas y tornillos

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 

Page 4: CAPÍTULO  10

4

VRML 2.0 con Java CAPÍTULO 10

capacidad para apuntar a cualquier lugar en una textura, todo lo que necesitamos son la u, v los valores de ese lugar. 

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

Page 5: CAPÍTULO  10

5

VRML 2.0 con Java CAPÍTULO 10

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

Page 6: CAPÍTULO  10

6

VRML 2.0 con Java CAPÍTULO 10

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

Page 7: CAPÍTULO  10

7

VRML 2.0 con Java CAPÍTULO 10

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

Page 8: CAPÍTULO  10

8

VRML 2.0 con Java CAPÍTULO 10

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. 

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

Page 9: CAPÍTULO  10

9

VRML 2.0 con Java CAPÍTULO 10

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.

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 MaterialsNavigationInfo { 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

Page 10: CAPÍTULO  10

10

VRML 2.0 con Java CAPÍTULO 10

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. 

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 

Page 11: CAPÍTULO  10

11

VRML 2.0 con Java CAPÍTULO 10

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

Page 12: CAPÍTULO  10

12

VRML 2.0 con Java CAPÍTULO 10

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

Page 13: CAPÍTULO  10

13

VRML 2.0 con Java CAPÍTULO 10

     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. ¿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 TestNavigationInfo { type EXAMINE}Viewpoint { position 0 0 10 orientation 0 0 1 0 fieldOfView 0.785398}Group { children [ Shape { appearance Appearance {

Page 14: CAPÍTULO  10

14

VRML 2.0 con Java CAPÍTULO 10

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

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

Page 15: CAPÍTULO  10

15

VRML 2.0 con Java CAPÍTULO 10

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

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

Page 16: CAPÍTULO  10

16

VRML 2.0 con Java CAPÍTULO 10

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 TransparencyNavigationInfo { 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 } ]}

Como puede ver, utilizando GIF89a transparencia, se obtiene un esquema muy fuerte para tu vallas.

Page 17: CAPÍTULO  10

17

VRML 2.0 con Java CAPÍTULO 10

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. 

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. 

Page 18: CAPÍTULO  10

18

VRML 2.0 con Java CAPÍTULO 10

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 NodeNavigationInfo { 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 ]}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 ]      }

Page 19: CAPÍTULO  10

19

VRML 2.0 con Java CAPÍTULO 10

      coordIndex    [ 0, 1, 2, 3, -1 ]      texCoord      TextureCoordinate {       point [ 1 0,           1 1,           0 1,           0 0 ]      }      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   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   }

Page 20: CAPÍTULO  10

20

VRML 2.0 con Java CAPÍTULO 10

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

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

Page 21: CAPÍTULO  10

21

VRML 2.0 con Java CAPÍTULO 10

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 ExampleNavigationInfo { 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 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

Page 22: CAPÍTULO  10

22

VRML 2.0 con Java CAPÍTULO 10

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

Page 23: CAPÍTULO  10

23

VRML 2.0 con Java CAPÍTULO 10

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

Page 24: CAPÍTULO  10

24

VRML 2.0 con Java CAPÍTULO 10

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: 

     • 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 

Page 25: CAPÍTULO  10

25

VRML 2.0 con Java CAPÍTULO 10

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 TouchSensorNavigationInfo { 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 } 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

Page 26: CAPÍTULO  10

26

VRML 2.0 con Java CAPÍTULO 10

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 } 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 nodeNavigationInfo { 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 {

Page 27: CAPÍTULO  10

27

VRML 2.0 con Java CAPÍTULO 10

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 { } } 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_startTimeROUTE Start_Movie.touchTime TO Test_Movie.set_startTimeROUTE 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.

Page 28: CAPÍTULO  10

28

VRML 2.0 con Java CAPÍTULO 10

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 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 TestNavigationInfo { type "EXAMINE"

Page 29: CAPÍTULO  10

29

VRML 2.0 con Java CAPÍTULO 10

}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 { 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,

Page 30: CAPÍTULO  10

30

VRML 2.0 con Java CAPÍTULO 10

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

Page 31: CAPÍTULO  10

31

VRML 2.0 con Java CAPÍTULO 10

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.

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

Page 32: CAPÍTULO  10

32

VRML 2.0 con Java CAPÍTULO 10

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

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 ExampleNavigationInfo { 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,

Page 33: CAPÍTULO  10

33

VRML 2.0 con Java CAPÍTULO 10

0.580472 -0.673746 0.585422, 1 1 1, 0 1.79664 0.844294, 1 1 -1, 0.580472 -0.673746 -0.575522, -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. 

Page 34: CAPÍTULO  10

34

VRML 2.0 con Java CAPÍTULO 10

Uso de la TextureTransform Nodo

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 ExampleNavigationInfo { 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 { }

Page 35: CAPÍTULO  10

35

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 ExampleNavigationInfo { 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 { } }}

Page 36: CAPÍTULO  10

36

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 ExampleNavigationInfo { 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 { } }}

Figura 10.18 Rotación 

Page 37: CAPÍTULO  10

37

VRML 2.0 con Java CAPÍTULO 10

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 TransformsNavigationInfo { 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 { } }}

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

Page 38: CAPÍTULO  10

38

VRML 2.0 con Java CAPÍTULO 10

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 TransformsNavigationInfo { 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 { } }}

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 

Page 39: CAPÍTULO  10

39

VRML 2.0 con Java CAPÍTULO 10

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 ExampleNavigationInfo { 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 } } 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 ]

Page 40: CAPÍTULO  10

40

VRML 2.0 con Java CAPÍTULO 10

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_startTimeROUTE Time.fraction_changed TO XInterp.set_fractionROUTE Time.fraction_changed TO YInterp.set_fractionROUTE XInterp.value_changed TO Move_it.xInROUTE YInterp.value_changed TO Move_it.yInROUTE 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 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. 

Page 41: CAPÍTULO  10

41

VRML 2.0 con Java CAPÍTULO 10

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. 

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. 

Page 42: CAPÍTULO  10

42

VRML 2.0 con Java CAPÍTULO 10

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

Page 43: CAPÍTULO  10

43

VRML 2.0 con Java CAPÍTULO 10

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. 

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. 

Page 44: CAPÍTULO  10

44

VRML 2.0 con Java CAPÍTULO 10

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

Page 45: CAPÍTULO  10

45

VRML 2.0 con Java CAPÍTULO 10

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

Page 46: CAPÍTULO  10

46

VRML 2.0 con Java CAPÍTULO 10

-1 1 1, 1 1 1, 1 0 1, 1 0 -1, 1 1 -1, -1 0 1, 1 0 1, -1 1 1, 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 ]

Page 47: CAPÍTULO  10

47

VRML 2.0 con Java CAPÍTULO 10

} } scale 11 11 11 } ]}

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. 

Page 48: CAPÍTULO  10

48

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

Page 49: CAPÍTULO  10

49

VRML 2.0 con Java CAPÍTULO 10

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 [email protected] Gwinner.