miércoles, 25 de abril de 2012
domingo, 22 de abril de 2012
OBJETIVOS
· El VRML esta diseñado para ser utilizado sobre Internet, Intranets o como clientes locales.
· Los formatos VRML están diseñados para integrar gráficos tridimensionales y multimedia.
· El VRML está pensado para diversidad de aplicaciones en áreas como ingeniería, simulación, entretenimiento, educación etc.
CARACTERISTICAS DEL VRML
EL VRML fue concebido bajo las siguientes características de diseño:
· Originalidad: los programas VRML son creados, editados y mantenidos de manera muy sencilla mediante la manipulación directa de los formatos fuente. presentando además la posibilidad de importación de objeto s 3D de otros formatos industriales.
· Integrabilidad: los programas VRML permiten usar diferentes objetos 3D formando escenas compuestas lo que a su vez permite la reusabilidad de ambientes.
· Extensibilidad: los programas VRML ofrecen la posibilidad de adicionar nuevos elementos aun no explícitos en VRML.
· Implementabilidad: los programas VRML son fácilmente implementados bajo un amplio rango de sistemas.
· Rendimiento: los elementos VRML son diseñados para brindar optimo rendimiento bajo una amplia variedad de plataformas.
· Escalabilidad: Los elementos VRML son diseñados para brindar flexibilidad en las composiciones futuras.
· Potencial multi-usuario: facilita la implementación de ambientes multiusuario.
· Ortogonalidad: Los elementos de VRML son independientes uno de otro y cualquier dependencia es estructurada y bien definida.
· Estructuración: Los elementos VRML tiene bien definido sus interfaces por cuanto el uso de múltiples elementos no tiene efectos impredecible.
ALCANCES Y LIMITACIONES
Una escena VRML es una integración básica de gráficos 3D y multimedia los objetos integrados en una escena pueden ser modificados en momento de ejecución a través de diferentes mecanismos. VRML compone, encapsula y da extensibilidad a una escena.
VRML no define dispositivos físicos u otros conceptos afines como resolución de pantalla o dispositivos de entrada, VRML interpreta un amplio rango de posibilidades sin particularizar sobre el uso de ciertos elementos por ejemplo VRML no asume la existencia de mouse en 2D.
ARCHIVOS VRML.
Un archivo VRML puede contener:
a. Una escena compuesta de objetos
b. un conjunto de posibilidades multimedia
c. encadenamiento a otros archivos y aplicaciones.
d. mecanismos de modificación del comportamiento de los objetos.
VRML
VRML (sigla del inglés Virtual Reality Modeling Language. "Lenguaje para Modelado de Realidad Virtual") - formato de archivo normalizado que tiene como objetivo la representación de escenas u objetos interactivos tridimensionales; diseñado particularmente para su empleo en la web. Se usa por medio de comandos en inglés, los cuales agregan y determinan las características.
El lenguaje VRML posibilita la descripción de una escena compuesta por objetos 3D a partir de prototipos basados en formas geométricas básicas o de estructuras en las que se especifican los vértices y las aristas de cada polígono tridimensional y el color de su superficie. VRML permite también definir objetos 3D multimedia, a los cuales se puede asociar un enlace de manera que el usuario pueda acceder a una página web, imágenes, vídeos u otro fichero VRML de Internet cada vez que haga click en el componente gráfico en cuestión.
El Consorcio Web3D fue creado para desarrollar este formato. Su primera especificación fue publicada en 1995; la versión actual funcionalmente completa es la VRML 97 (ISO/IEC DIS 14772-1).
VRML, es la base en la que se ha desarrollado X3D - Extensible 3D.
FORMAS PRIMITIVAS
Las formas (Shapes) son los elementos que nos permiten visualizar los objetos en los mundos VRML. La sintaxis del nodo Shape es la siguiente:
Hablamos de formas primitivas cuando Shape utiliza nodos geométricos primitivos para construir una figura. Los nodos geométricos primitivos son los siguientes:
Mediante la combinación de estas formas geométricas básicas se pueden obtener otras formas de mayor complejidad. Nodo primitivo Box:Sintaxis:
Nodo primitivo Cone: Sintaxis:
Ejemplo:
Nodo primitivo Cylinder: Sintaxis:
Mediante los campos bottom, side y top se indica si se desea dibujar la base inferior,la superfice lateral y la base superior del cilindro. Por defecto estos campos toman el valor TRUE, lo cual indica que se dibuja el cilindro completo. Ejemplo:
Nodo primitivo Sphere: Sintaxis:
Ejemplo:
Sin embargo, la definición de un nodo primitivo implica la definición de un objeto, pero no su visualización. Es por ello por lo que se han de englobar dentro de un nodo Shape, el cual determina la apariencia de estos objetos. Ejemplo: #VRML V2.0 utf8 Shape{ appearance Appearance{ material Material {} } geometry Cylinder{ height 2.0 radius 1.5 } } |
NODO TEXTO
En los mundos virtuales será a menudo necesario utilizar textos para guiar al visitante Para ello existe un nodo específico, el nodo Text. Una de las principales características de los textos es que son planos, es decir, no tienen profundidad.
Como en cualquier procesador de textos, se nos permitirá indicar el tipo de fuente, su estilo, su tamaño, el espaciado entre caracteres, justificación de los parrafos, etc. Sintaxis:
Aquí se introduce el texto que se desea visualizar.
fontStyle:
Este segundo campo es opcional, de forma que si se omite, el texto tendrá el estilo de la fuente por defecto.
Siempre que aparezca este campo tomará como valor el nodo llamadoFontStyle.
Sintaxis:
family:
Determina la fuente que se va a utilizar para el texto. Se puede escoger entre "SERIF", "SANS" o "TYPEWRITER". Obsérvese que los nombres están en mayúsculas.
style:
Se puede escoger entre "BOLD" (negrita), "ITALIC" (cursiva), "BOTH" (negrita y cursiva) o "NONE" (tipo de letra normal).
size:
Determina el tamaño de la fuente, pero en unidades VRML.
spacing:
Determina la separación entre líneas, también en unidades VRML.
justify:
Determina la justificación del texto. Puede ser "BEGIN" (Alinear a la izquierda), "MIDDLE" (centrar el texto) o "END" (Alinear a la derecha).
Ejemplo:
Una vez que el texto se encuentra en el mundo virtual se puede manipular como cualquier otro objeto (girándolo, etc.), ya que lo único que lo diferencia de los nodos primitivos es que posee dos dimensiones en lugar de tres.
Ejemplo:
Nodo Text:
Como en cualquier procesador de textos, se nos permitirá indicar el tipo de fuente, su estilo, su tamaño, el espaciado entre caracteres, justificación de los parrafos, etc. Sintaxis:
- Text {
string ["linea_texto"
- "linea_texto 2",
- .
- .
- .
- "linea_texto N",]
- fontStyle FontStyle {
- family "Nombre_Fuente",
style "Estilo_Fuente",
size Tamaño_Fuente
spacing espaciado_entre_caracteres
justify "justificación_del_texto"
}
}
Aquí se introduce el texto que se desea visualizar.
fontStyle:
Este segundo campo es opcional, de forma que si se omite, el texto tendrá el estilo de la fuente por defecto.
Siempre que aparezca este campo tomará como valor el nodo llamadoFontStyle.
Nodo FontStyle:
Sintaxis:
- FontStyle {
- family "Nombre_Fuente",
- style "Estilo_Fuente",
- size Tamaño_Fuente
- spacing espaciado_entre_caracteres
- justify "justificación_del_texto"
- }
family:
Determina la fuente que se va a utilizar para el texto. Se puede escoger entre "SERIF", "SANS" o "TYPEWRITER". Obsérvese que los nombres están en mayúsculas.
style:
Se puede escoger entre "BOLD" (negrita), "ITALIC" (cursiva), "BOTH" (negrita y cursiva) o "NONE" (tipo de letra normal).
size:
Determina el tamaño de la fuente, pero en unidades VRML.
spacing:
Determina la separación entre líneas, también en unidades VRML.
justify:
Determina la justificación del texto. Puede ser "BEGIN" (Alinear a la izquierda), "MIDDLE" (centrar el texto) o "END" (Alinear a la derecha).
Ejemplo:
- Text {
- string ["Esta es la primera fila de texto",
- "esta es la segunda fila",
- "etc."]
- fontStyle FontStyle {
- family "SERIF",
- style "BOLD",
- size 1.0
- spacing 1.0
- justify "BEGIN"
- }
- }
- Shape {
- appearance ...
- geometry Text { ... }
- }
Una vez que el texto se encuentra en el mundo virtual se puede manipular como cualquier otro objeto (girándolo, etc.), ya que lo único que lo diferencia de los nodos primitivos es que posee dos dimensiones en lugar de tres.
Ejemplo:
- #VRML V2.0 utf8
- Shape{
- appearance Appearance{
- material Material {}
- }
- geometry Text {
- string ["Esta es la primera fila de texto"
- "esta es la segunda fila",
- "etc."]
- fontStyle FontStyle {
- family "SERIF",
- style "BOLD",
- size 1.0
- spacing 1.0
- justify "BEGIN"
- }
- }
- }
NODOS DE AGRUPACIÓN Y TRANSFORMACIÓN
Hasta ahora hemos visto los objetos aisladamente. Veamos ahora cómo podemos agruparlos para conseguir formas más complejas. Existen diversos nodos que nos permiten agrupar objetos:
Nodo Group:
El nodo Group permite unir un conjunto de nodos de forma que actúen como una entidad única, pero sin efectuar ninguna transformación en ellos. La principal característica de este tipo de grupo es que los objetos son creados todos en el mismo punto (en el centro del escenario de realidad virtual).
Sintaxis:
El campo children contiene la lista de los objetos que se quieren agrupar, representados por sus nodos Shape respectivos:
Ejemplo:
Ejemplo:
Nodo Group:
El nodo Group permite unir un conjunto de nodos de forma que actúen como una entidad única, pero sin efectuar ninguna transformación en ellos. La principal característica de este tipo de grupo es que los objetos son creados todos en el mismo punto (en el centro del escenario de realidad virtual).
Sintaxis:
- Group {
- children [ ... ]
- }
El campo children contiene la lista de los objetos que se quieren agrupar, representados por sus nodos Shape respectivos:
Ejemplo:
- Group {
- children [
- Shape { ... }.
- Shape { ... }, ...
- ]
- }
Ejemplo:
- #VRML V2.0 utf8
- Group {
- children [
- Shape {
- appearance Appearance {
- material Material { }
- }
- geometry Box {
- size 2.0 0.5 3.0
- }
- }
- Shape {
- appearance Appearance {
- material Material { }
- }
- geometry Cone {
- height 3.0
- bottomRadius 0.75
- } } ] }
Nodo Transform:
Por defecto todos los objetos (Shapes) se construyen en el centro del escenario virtual. El nodo transform nos va a permitir evitar esto, indicando la posición, orientación y tamaño de los diferentes objetos que va a crear.
Sintaxis:
El campo translation permite indicar la posición del origen del nuevo sistema de coordenadas perteneciente al grupo dentro del sistema de coordenadas de nodo que lo engloba (nodo padre). A través del siguiente ejemplo esta idea quedará más clara:
Ejemplo:
Gráficamente los pasos serían los siguientes:
I) Partimos del sistema de coordenadas del nodo padre:

II) Realizamos la translación del sistema de coordenadas del grupo:

Un ejemplo sería el siguiente:

El campo rotation nos permite girar el sistema de coordenadas del grupo alrededor de uno de los ejes del sistema de coordenadas del nodo padre. Para ello, además de indicar sobre que eje se desea realizar el giro, se ha de hacer referencia al grado de inclinación de dicho giro (en radianes).
Ejemplo:
Gráficamente los pasos serían los siguientes:
I) Partimos del sistema de coordenadas del nodo padre:

II) Realizamos la rotación del sistema de coordenadas del grupo:

Un ejemplo sería el siguiente:
A través del campo scale podemos aumentar o reducir el tamaño de los ejes del sistema de coordenadas del grupo utilizando factores de escala que toman como referencia los ejes de coordenadas del sistema del nodo padre. De esta forma aumentamos o disminuimos el tamaño de los objetos que se crean.
Ejemplo:
Ejemplo:
I) Partimos del sistema de coordenadas del nodo padre:

II) Realizamos la translación del sistema de coordenadas del grupo:

Un ejemplo sería el siguiente:

Por último, se muestra un ejemplo en el que se unen las diferentes modificaciones sobre el sistema de coordenadas de un grupo:
Ejemplo:

Poniendo nombres propios a los nodos:
Hay una solución prevista para simplificar las repeticiones de objetos dentro de un escenario virtual. Esta solución consiste en asignar un nombre arbitrario al nodo que se piensa repetir en el código.
Supongamos, por ejemplo, que se van a utilizar repetidamente en un escenario unos cilindros exactamente iguales (que podrían ser las columnas de una casa).Dichos cilindros tendrán el siguiente código:
Se puede definir, para el ámbito de un documento VRML, que este tipo de cilindro tenga un nombre arbitrario, por ejemplo ColumnaRepetida (o como se desee, con tal de que comience por mayúscula), de la siguiente manera:
USE ColumnaRepetida En el ejemplo anterior de la caja y el cono, aparece el nodo Appearancerepetido. Vamos a definirlo, en la primera ocasión que se utiliza con el nombre, "PorDefecto" y la segunda vez que se usa lo invocaremos mediante el comando USE:
Por defecto todos los objetos (Shapes) se construyen en el centro del escenario virtual. El nodo transform nos va a permitir evitar esto, indicando la posición, orientación y tamaño de los diferentes objetos que va a crear.
Sintaxis:
- Transform{
- translation Eje_X Eje_Y Eje_Z
- rotation Eje_X Eje_Y Eje_Z Ángulo
- scale Eje_X Eje_Y Eje_Z
- children[...]
- }
El campo translation permite indicar la posición del origen del nuevo sistema de coordenadas perteneciente al grupo dentro del sistema de coordenadas de nodo que lo engloba (nodo padre). A través del siguiente ejemplo esta idea quedará más clara:
Ejemplo:
- Transform{
- translation 2.0 0.0 0.0
- children [...]
- }
Gráficamente los pasos serían los siguientes:
I) Partimos del sistema de coordenadas del nodo padre:
II) Realizamos la translación del sistema de coordenadas del grupo:
Un ejemplo sería el siguiente:
El campo rotation nos permite girar el sistema de coordenadas del grupo alrededor de uno de los ejes del sistema de coordenadas del nodo padre. Para ello, además de indicar sobre que eje se desea realizar el giro, se ha de hacer referencia al grado de inclinación de dicho giro (en radianes).
Ejemplo:
- Transform{
- rotation 0.0 0.0 1.0 0.52
- children [...]
- }
Rotación sobre el eje X | 1.0 | 0.0 | 0.0 |
Rotación sobre el eje Y | 0.0 | 1.0 | 0.0 |
Rotación sobre el eje Z | 0.0 | 0.0 | 1.0 |
Gráficamente los pasos serían los siguientes:
I) Partimos del sistema de coordenadas del nodo padre:
Un ejemplo sería el siguiente:
A través del campo scale podemos aumentar o reducir el tamaño de los ejes del sistema de coordenadas del grupo utilizando factores de escala que toman como referencia los ejes de coordenadas del sistema del nodo padre. De esta forma aumentamos o disminuimos el tamaño de los objetos que se crean.
Ejemplo:
- Transform
- {
- scale 0.5 0.5 0.5
- children [...]
- }
Ejemplo:
- Transform
- {
- scale 2 2 2
- children [...]
- }
I) Partimos del sistema de coordenadas del nodo padre:
II) Realizamos la translación del sistema de coordenadas del grupo:
Un ejemplo sería el siguiente:
Por último, se muestra un ejemplo en el que se unen las diferentes modificaciones sobre el sistema de coordenadas de un grupo:
Ejemplo:
- Transform{
- translation 2.0 0.0 0.0
- rotation 0.0 0.0 1.0 0.52
- scale 0.5 0.5 0.5
- children [...]
- }
Hay una solución prevista para simplificar las repeticiones de objetos dentro de un escenario virtual. Esta solución consiste en asignar un nombre arbitrario al nodo que se piensa repetir en el código.
Supongamos, por ejemplo, que se van a utilizar repetidamente en un escenario unos cilindros exactamente iguales (que podrían ser las columnas de una casa).Dichos cilindros tendrán el siguiente código:
- Shape {
- appearance Appearance {
- material Material { }
- }
- geometry Cylinder {
- height 2.0
- radius 0.5
- }
- }
Se puede definir, para el ámbito de un documento VRML, que este tipo de cilindro tenga un nombre arbitrario, por ejemplo ColumnaRepetida (o como se desee, con tal de que comience por mayúscula), de la siguiente manera:
- DEF ColumnaRepetida Shape {
- appearance Appearance {
- material Material { }
- }
- geometry Cylinder {
- height 2.0
- radius 0.5
- }
- }
- #VRML V2.0 utf8
- Group {
- children [
- Shape {
- appearance DEF PorDefecto Appearance {
- material Material { }
- }
- geometry Box {size 2.0 0.5 3.0 } },
- Shape {
- appearance USE PorDefecto
- geometry Cone
- { height 3.0 bottomRadius 0.75 }
- }
- ]
- }
viernes, 20 de abril de 2012
NODO DE COLOR
Anteriormente se ha comentado que el nodo Shape contenía dos campos,appearance y geometry, de los cuales el segundo indicaba el tipo de objeto a representar y del que se ha hablado ya ampliamente. Sin embargo la misión del campo appearance apenas se ha comentado, por lo que procederemos a analizarla con más detalle en este punto.
El campo appearance va a permitir seleccionar el color y la textura del objeto que va a ser representado dentro del escenario virtual. Este campo toma como valor un nodo de tipo Appearance, el cual a su vez, posee un campo denominado material que toma como valor un nodo de tipo Material.
El nodo Material es el que controla las propiedades del color (selección del color, del brillo, del grado de transparencia, etc.) que se van a dar al objeto.
Los colores que se le dan a los objetos son colores RGB, es decir, vienen dados por tres valores en coma flotante, cada uno de los cuales representa uno de los colores primarios (Red, Green, Blue ) [ Rojo,Verde y Azul]. El valor 0.0 representa la ausencia de color y el 1.0 la máxima intensidad.
Muchos programas de dibujo darán un valor para cada color RGB en un formato 256x256x256. Para poder utilizar estos colores en VRML es preciso convertirlos, dividiendo cada valor por 256 y colocando el resultado en su campo correspondiente dentro del nodo Material.
Nodo Material:
Con este nodo vamos a determinar el color y grado de transparecia de los objetos.
Sintaxis:
diffuseColor:
El campo diffuseColor representa lo que la mayoría de los usuarios llamarían como el color del objeto.
emissiveColor:
El campo emissiveColor se utiliza para fijar el color del brillo del objeto, cuando dicho objeto necesite ser visible en la oscuridad. De esta forma se consigue un efecto en donde la figura representada parece iluminada desde el interior mediante una luz de un determinado color.
La configuración por defecto de este campo es el negro, ya que la mayoría de los objetos normalmente no brillan.
specularColor:
El campo specularColor es un parámetro avanzado que permite indicar qué color de luz refleja el objeto. Por ejemplo, una cama roja no refleja un color rojo, pero una olla rojiza si puede reflejar su color.
ambientIntensity:
Este campo es otro parámetro avanzado que indica la cantidad de luz ambiental (producida por los diferentes focos de luz del escenario virtual) es reflejada por el objeto.
Toma valores en coma flotante entre 0.0 y 1.0.
shininess:
El campo shininess controlan el brillo de un objeto. Toma valores en coma flotante entre 0.0 y 1.0.
transparency:
El campo transparency indica el nivel de transparencia del objeto. Toma valores en coma flotante entre 0.0 y 1.0, siendo el 1.0 el nivel máximo de transparencia (objeto invisible) y el 0.0 el nivel mínimo (objeto totalmente opaco).
El valor por defecto es el 0.0.
El campo appearance va a permitir seleccionar el color y la textura del objeto que va a ser representado dentro del escenario virtual. Este campo toma como valor un nodo de tipo Appearance, el cual a su vez, posee un campo denominado material que toma como valor un nodo de tipo Material.
El nodo Material es el que controla las propiedades del color (selección del color, del brillo, del grado de transparencia, etc.) que se van a dar al objeto.
Los colores que se le dan a los objetos son colores RGB, es decir, vienen dados por tres valores en coma flotante, cada uno de los cuales representa uno de los colores primarios (Red, Green, Blue ) [ Rojo,Verde y Azul]. El valor 0.0 representa la ausencia de color y el 1.0 la máxima intensidad.
Muchos programas de dibujo darán un valor para cada color RGB en un formato 256x256x256. Para poder utilizar estos colores en VRML es preciso convertirlos, dividiendo cada valor por 256 y colocando el resultado en su campo correspondiente dentro del nodo Material.
Nodo Material:
Con este nodo vamos a determinar el color y grado de transparecia de los objetos.
Sintaxis:
- Shape{
appearance Appearance{
material Material{
diffuseColor color_RGB
emissiveColor color_RGB
specularColor color_RGB
ambientIntensity valor
transparency valor
shininess valor
}
}
geometry ...
}
diffuseColor:
El campo diffuseColor representa lo que la mayoría de los usuarios llamarían como el color del objeto.
emissiveColor:
El campo emissiveColor se utiliza para fijar el color del brillo del objeto, cuando dicho objeto necesite ser visible en la oscuridad. De esta forma se consigue un efecto en donde la figura representada parece iluminada desde el interior mediante una luz de un determinado color.
La configuración por defecto de este campo es el negro, ya que la mayoría de los objetos normalmente no brillan.
specularColor:
El campo specularColor es un parámetro avanzado que permite indicar qué color de luz refleja el objeto. Por ejemplo, una cama roja no refleja un color rojo, pero una olla rojiza si puede reflejar su color.
ambientIntensity:
Este campo es otro parámetro avanzado que indica la cantidad de luz ambiental (producida por los diferentes focos de luz del escenario virtual) es reflejada por el objeto.
Toma valores en coma flotante entre 0.0 y 1.0.
shininess:
El campo shininess controlan el brillo de un objeto. Toma valores en coma flotante entre 0.0 y 1.0.
transparency:
El campo transparency indica el nivel de transparencia del objeto. Toma valores en coma flotante entre 0.0 y 1.0, siendo el 1.0 el nivel máximo de transparencia (objeto invisible) y el 0.0 el nivel mínimo (objeto totalmente opaco).
El valor por defecto es el 0.0.
NODO ANCHOR
Nodo Anchor:
El nodo Anchor crea un grupo especial ya que seleccionando cualquier objeto perteneciente a dicho grupo se salta hacia otro lugar del escenario virtual o hacia otro mundo virtual almacenado en un fichero VRML (al cual accedemos a través de su dirección URL). Cualquier objeto o grupo de objetos se puede convertir en un enlace.
Estos enlaces son los equivalentes en el mundo tridimensional a los enlaces existentes en las páginas Web realizadas mediante HTML.
Además, todo nodo Anchor posee un campo denominado description en el que mediante una cadena de texto se describe brevemente el objeto.
Sintaxis:
El nodo Anchor crea un grupo especial ya que seleccionando cualquier objeto perteneciente a dicho grupo se salta hacia otro lugar del escenario virtual o hacia otro mundo virtual almacenado en un fichero VRML (al cual accedemos a través de su dirección URL). Cualquier objeto o grupo de objetos se puede convertir en un enlace.
Estos enlaces son los equivalentes en el mundo tridimensional a los enlaces existentes en las páginas Web realizadas mediante HTML.
Además, todo nodo Anchor posee un campo denominado description en el que mediante una cadena de texto se describe brevemente el objeto.
Sintaxis:
- Anchor{
url"dirección_URL"
description "descripción_del_enlace"
children[...]
}
- Anchor{
url"escalera.wrl"
description "Escaleras Flotantes"
children[...]
}
Para facilitar el diseño de mundos virtuales habrá ocasiones en las que convendrá almacenar cada objeto en su propio fichero. De este modo, si por ejemplo se deseara modelar una habitación, los diferentes elementos que van a aparecer dentro de ella: paredes, puertas, mesas, sillas, etc, son objetos independientes entre si pero que se engloban dentro de un mismo espacio y, que además, pueden aparecer varias veces en el diseño de todo mundo virtual. Es por ello por lo que sería de interés crear un fichero donde almacenar el objeto mesa , otro fichero para el objeto silla , etc.
En el fichero se realizan llamadas tanto al fichero que contiene la silla como al que contiene la mesa.
Nodo Inline:
El nodo Inline va a permitir crear un grupo en donde los hijos, almacenados en distintos ficheros VRML, son recuperados indicando su dirección URL.
Sintaxis:
En el fichero se realizan llamadas tanto al fichero que contiene la silla como al que contiene la mesa.
Nodo Inline:
El nodo Inline va a permitir crear un grupo en donde los hijos, almacenados en distintos ficheros VRML, son recuperados indicando su dirección URL.
Sintaxis:
- Inline{
url"dirección_url"
}
- ...
Inline{
url"mesa.wrl"
}, ...
Transform{
translation ...
children [
Inline{url"silla.wrl"}
]
}
...
EJEMPLOS DE INDEXED
A continuación se muestra un ejemplo de cómo se colorea una figura utilizando sus caras:

Ahora el ejemplo trata de cómo se colorea una figura utilizando sus vértices:

NODO INDEXEDFACESET
Nodo IndexedFaceSet:
Permite unir los diferentes puntos especificados en su campo coordmediante caras poligonales.
Sintaxis:

El campo coord toma como valor un nodo de tipo Coordinate, el cual define los puntos que sirven como esqueleto de la figura.
Utiliza los índices de su campo coorIndex para especificar las caras poligonales. Un índice con valor -1 indica que ha finalizado la cara actual y comienza la siguiente.
El campo colorPerVertex indica como se han de aplicar los colores:
Permite unir los diferentes puntos especificados en su campo coordmediante caras poligonales.
Sintaxis:
- IndexedFaceSet{
coord Coordinate {
point [ . . . ]
}
coordIndex [...]colorPerVertex valor_lógico
color Color {
color [ . . . ]
}
colorIndex [...]
}
Utiliza los índices de su campo coorIndex para especificar las caras poligonales. Un índice con valor -1 indica que ha finalizado la cara actual y comienza la siguiente.
El campo colorPerVertex indica como se han de aplicar los colores:
colorPerVertex | colorIndex | Acción |
FALSE (Los colores se aplican sobre las caras) | VACIO | Los colores se aplican en el orden en el que se han definido dentro del nodo Color. Deben existir al menos tantos colores como caras. |
NO VACIO | Los colores se aplican en el orden indicado por el campo colorIndex. Deben existir al menos tantos índices en este campo como caras se han definido. Si el mayor valor que admite el campocolorIndex es N, entonces deben existir en el nodo Color N+1 colores definidos. | |
TRUE (Los colores se aplican sobre los vertices) | VACIO | Se utiliza el campo coordIndex para elegir los colores definidos en el nodo Color. Si el mayor valor que admite el campocoordIndex es N, entonces deben existir en el nodo Color N+1 colores definidos. |
NO VACIO | Se aplican los colores a cada vértice. Este campo va a tener ahora la misma estructura que el campo coordIndex, por lo que ha de contener al menos tantos índices como este último. También ha de poseer los indicadores de fin de línea (-1) en los mismos sitios que el campo coordIndex. Si el mayor valor que admite el campocolorIndex es N, entonces deben existir en el nodo Color N+1 colores definidos. |
NODO INDEXEDLINESET
Nodo IndexedLineSet:
Permite unir los diferentes puntos especificados en su campo coordmediante líneas poligonales.
Sintaxis:

El campo coord toma como valor un nodo de tipo Coordinate, el cual define los puntos que sirven como esqueleto de la figura.
El campo coordIndex se utiliza para especificar entre qué puntos se han de trazar las líneas. Una línea puede ser trazada utilizando más de dos puntos, de forma que se dibuja una línea entre el primer y el segundo punto, otra entre el segundo y el tercer punto, y así sucesivamente.Un índice con valor -1 indica que ha finalizado la línea actual y que comienza la siguiente.
Para indicar el primer punto definido en el nodo Coordinate se utiliza el 0, para el segundo el 1 y así sucesivamente.
El campo colorPerVertex indica como se han de aplicar los colores sobre las líneas:
Permite unir los diferentes puntos especificados en su campo coordmediante líneas poligonales.
Sintaxis:
- IndexedLineSet{ coord Coordinate { point [ . . . ] } coordIndex [...] colorPerVertex valor_lógico color Color { color [ . . . ] } colorIndex [...] }
El campo coordIndex se utiliza para especificar entre qué puntos se han de trazar las líneas. Una línea puede ser trazada utilizando más de dos puntos, de forma que se dibuja una línea entre el primer y el segundo punto, otra entre el segundo y el tercer punto, y así sucesivamente.Un índice con valor -1 indica que ha finalizado la línea actual y que comienza la siguiente.
Para indicar el primer punto definido en el nodo Coordinate se utiliza el 0, para el segundo el 1 y así sucesivamente.
El campo colorPerVertex indica como se han de aplicar los colores sobre las líneas:
colorPerVertex | colorIndex | Acción |
FALSE (Los colores se aplican sobre las líneas) | VACIO | Se aplican en orden los colores descritos en el nodo Color a cada una de las líneas descritas en coordIndex. Deben existir al menos tantos colores en el nodo Color como líneas haya en coorIndex. |
NO VACIO | Este campo contiene una lista ordenada de números, los cuales representan a los colores definidos en el nodo Color. De esta forma, el 0 representará al primer color definido en el nodo Color, el 1 al segundo,etc. Se hace corresponder cada elemento de la lista con una de las líneas descritas encoordIndex. Si el mayor valor que admite el campocolorIndex es N, entonces deben existir en el nodo Color N+1 colores definidos. Ejemplo:
| |
TRUE (Los colores se aplican sobre los vertices) | VACIO | Se utiliza el campo coordIndex para elegir los colores definidos en el nodo Color. Si el mayor valor que admite el campocoordIndex es N, entonces deben existir en el nodo Color N+1 colores definidos. |
NO VACIO | Se aplican los colores a cada vértice. Este campo va a tener ahora la misma estructura que el campo coordIndex, por lo que ha de contener al menos tantos índices como este último. También ha de poseer los indicadores de fin de línea (-1) en los mismos sitios que el campo coordIndex. Si el mayor valor que admite el campocolorIndex es N, entonces deben existir en el nodo Color N+1 colores definidos. |
Suscribirse a:
Entradas (Atom)