VRML 97 Abril2020

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 26

VRML 97

 Lenguaje de Modelado de Realidad Virtual (VRML) orientado a


Internet, en donde las páginas web adquieren una tercera dimensión
permitiendo que internauta se desplace dentro de los mundos virtuales
explorando su contenido mientras se siente inmerso dentro de los
mismos.

En principio abordaremos el estudio de las primitivas básicas que


permitan representar cubos, esferas, conos y cilindros.

Luego introduciremos sentencias para desplazamiento, rotación,


escalado, modificación del material y el color de un sólido, iluminación,
utilización de elementos multimedia y por último los elementos
dinámicos e interactivos.

Como VRML es un lenguaje interpretado no es necesario ningún


compilador.

VRML 97
FORMAS SHAPE  

 Las formas son los bloques de construcción de un mundo VRML

 Un nodo Shape construye una forma

          Shape {
              geometry   . . . el valor es uno de varios tipos de nodos de geometría
              appearance. . .el valor es el nodo de apariencia Appearance
          }

 Un nodo de geometría describe la forma o estructura:

o formas primitivas

  
 Box {...}  Cone {...}    Cylinder {...}    Sphere {...}   Text {...} 
 

o formas definidas en base a puntos

  
ElevationGrid {...}       Extrusion {...}       IndexedFaceSet {...}  
IndexedLineSet {...}      PointSet {...} 
 

 Un nodo de apariencia describe el color o textura:

Appearance { 
      material.... ... el valor es un nodo Material 
      texture.... ... el valor es un nodo de varios tipos de nodos de textura 
     ... 
 } 
 
Formas primitivas
Box 

  Un nodo de geometría Box construye una caja


o El campo size especifica el ancho(x), alto(y) y profundidad(z)

Shape {  
     geometry Box {  
                          size 2.0 2.0
2.0 } 
     appearance Appearance {  
                          material
Material { }  
                      }  
  }  

Formas primitivas
Sphere  

  Un nodo de geometría Sphere construye una esfera


o El campo radius especifica el radio
Shape {  
o     geometry Sphere {  
                         radius 1.0  
                   }  
    appearance Appearance {  
                                   material Material { }  
                      }  
  }  
 

Formas primitivas
Cylinder  
  Un nodo de geometría Cylinder construye un cilindro
o Los campos height y radius especifican el
tamaño
o Los campos bottom, top y side especifican la
presencia de las partes

Shape {  
     geometry Cylinder {  
                          height 2.0  
                          radius 1.0  
                          bottom TRUE  
                          top TRUE  
                          side TRUE  
                    }  
    appearance Appearance {  
                                   material
Material { }  
                      }  
  }  
 

Formas primitivas
Cone  

  Un nodo de geometría Cone  construye un cono


o Los campos height y bottomRadius especifican el tamaño
o Los campos bottom y side especifican la presencia de las partes

Shape {  
     geometry Cone {  
                         height 2.0  
                         bottomRadius 1.0  
                         bottom TRUE  
                         side TRUE  
                    } 

    appearance Appearance {  


                                   material Material { }  
                      }  
  }  

12
Formas primitivas
Text
  Un nodo de geometría Text construye texto
o El campo string especifica el texto
o El campo fontStyle tiene como valor un nodo FontStyle

Shape {  
     geometry Text {  
                        string [ "Shape:",  
                                    "Texto"]  
                        fontStyle FontStyle {  
                                         style
"BOLD"  
                                         family
"SERIF"  
                                         justify
"FIRST"  
                                         size
2.0  
                                         spacing
3.0  
                                      }  
                    }  
    appearance Appearance {  
                                   material
Material { }  
                      }  
  }  
 
 
  Un nodo FontStyle describe una fuente

o El campo family puede ser SERIF, SANS o TYPEWRITER


o El campo style puede ser BOLD, ITALIC, BOLDITALIC o PLAIN
o Los campos size y spacing especifican tamaño e interlineado
o El campo justify puede ser FIRST, BEGIN, MIDDLE o END
o Los campos horizontal, leftToRight y topToBottom indican
dirección y sentido
 
 Apariencia  

 Por defecto, todas las formas tienen una apariencia de color blanco

 Un nodo Apperance permite controlar el color y la textura de una forma


o El campo material tiene como valor un nodo Material

 Un nodo Material controla

o las propiedades de color del material de la forma

 diffuseColor R G B define el color de sombra Red Green


Blue
 emissiveColor R G B define el color de glowing R G B
 transparency g define el grado de transparencia g (0.0 a
1.0) del color de sombra
 
o el brillo de la forma

 specularColor R G B define el color de brillo especular R


GB
 shininess g define el grado de brillo g (0.0 a 1.0)
 ambientIntensity g define la cantidad de luz del ambiente
g (0.0 a 1.0) que refleja la superficie

Apariencia  
   Especificación de color R G B
o Mezcla de luz roja (Red), verde (Green) y azul (Blue)
o Valores entre 0.0 (nada) y 1.0 (máximo)

...  
Shape {   
  geometry Box { }   
  appearance Appearance {  
                      material Material {  
                             diffuseColor  0.0 0.0
1.0  
                             emissiveColor 0.0
0.0 0.0  
                             transparency 0.0  
                     }  
  }  
}   
...material Material {  
                   diffuseColor  0.0 0.0 0.0  
                   emissiveColor 0.0 0.0 1.0  
                   transparency 0.0  
                }...  
...material Material {  
                   diffuseColor  0.0 0.0 0.0  
                   emissiveColor 0.0 0.0 1.0  
                   transparency 0.5  
                }...  
...material Material {  
                   diffuseColor  1.0 0.0 0.0  
                   emissiveColor 0.0 0.0 1.0  
                   transparency 0.0  
                }... 

 
 
Color Red Green Blue
Blanco 1.0 1.0 1.0
Rojo 1.0 0.0 0.0
Amarillo 1.0 1.0 0.0
Celeste 0.0 1.0 1.0
Marrón 0.5 0.2 0.0

 
Apariencia  
   Experimentando con el brillo

...  
Shape {   
  geometry Sphere { }   
  appearance Appearance {  
                      material Material {  
                                      diffuseColor  0.22
0.15 0.0  
                                      specularColor 0.71
0.7 0.56  
                                      shininess  0.16  
                                      ambientIntensity
0.4  
                     }  
  }  
}   
... 
  
 
ambient   diffuse   specular  
Descripción
Intensity Color Color

Aluminio 0.30 0.30 0.30 0.50 0.70 0.70 0.80


Cobre 0.26 0.30 0.11 0.00 0.75 0.33 0.00
Oro 0.40 0.22 0.15 0.00 0.71 0.70 0.56
Púrpura Metálico 0.17 0.10 0.03 0.22 0.64 0.00 0.98
Rojo Metálico 0.15 0.27 0.00 0.00 0.61 0.13 0.18
Azul Plástico 0.10 0.20 0.20 0.71 0.83 0.83 0.83
 
DEF - USE

  Si varias formas tienen igual geometría o apariencia se puede:


o Definir un nombre para la primera ocurrencia de un nodo
DEF <nombrenodo> <nodo>
o Usar el nombre para compartir el mismo nodo en otro contexto
USE <nombrenodo> en lugar de especificar de nuevo
<nodo> 
  Nombrar e instanciar nodos:

o Ahorra escribir y reduce el tamaño del archivo


o Permite cambios rápidos
o Aumenta la velocidad de procesamiento del browser

 Los nombres también son necesarios para el manejo de eventos ...

Shape {
appearance DEF oro Appearance {
material Material {
ambientIntensity 0.4
diffuseColor 0.22 0.15 0.0
specularColor 0.71 0.70 0.56
shininess 0.16
}
}
geometry Box {size 1.0 1.0 1.0 }
}

Shape {
appearance USE oro
geometry Sphere { radius 0.7}
}
Shape {
appearance USE oro
geometry Cylinder { radius 1.5
height 0.2 }
}

AGRUPAMIENTO  

 Las formas pueden agruparse para componer formas complejas dentro


de nodos de agrupamiento
 Un nodo de agrupamiento:
o contiene una lista de nodos hijos
o puede ser hijo de un nodo de agrupamiento "padre"
o define un espacio de coordenadas para sus hijos relativo al
espacio de coordenadas del nodo "padre"

 VRML tiene los siguientes nodos de agrupamiento:

         Transform { . . . }       Group { . . . }            Switch { . . . } 


         Billboard { . . . }        Anchor { . . . }           Inline  { . . . } 
         Collision { . . . }         LOD { . . . }

 Los nodos de geometría (formas primitivas o avanzadas) no pueden ser


hijos de un nodo de agrupamiento, en su lugar debe usarse el nodo
Shape

Agrupamiento
Transform  

 Un nodo de agrupamiento Transform crea un grupo dentro de un


sistema de coordenadas escalado (scale), rotado (rotation) y por último
trasladado (translation),  en relación al sistema de coordenadas padre
o El campo children incluye una lista de nodos del grupo

...  
Transform {  
          translation 0.0 2.5 0.0  
          rotation 0.0 1.0 0.0 0.0  
          scale 0.375 0.375 0.375  
          children [  
               Shape {  
                    appearance Appearance {  
                        material Material {...}  
                    }  
                    geometry Box { }  
                }  
            ]  
        }  
...  
 

Agrupamiento. Transform
translation

   translation X Y Z posiciona el sistema de coordenadas en X, Y, and Z

Transform {  
          translation 1.0 1.5
2.0  
          children [  
               Shape {  
                    geometry Box
{ }  
                }  
            ]  
        }  
  
.... 

Agrupamiento  Transform
scale

  scale X Y Z crece o decrece el sistema de coordenadas en un factor de


X, Y, and Z

Transform {  
          translation 1.0 1.5 2.0  
          scale 2.0 0.5 1.0  
          children [  
               Shape {  
                    geometry Box { }  
                }  
            ]  
        }  
  
...  
 

Agrupamiento  Transform
rotation

 El campo rotation X Y Z a  especifica la rotación del sistema de


coordenadas alrededor del eje de rotación X Y Z y el ángulo a
 El ángulo de rotación está dado en radianes (= grados / 180.0 * 3.141)
 Las rotaciones positivas son en sentido contrario a las agujas del reloj

Transform {  
          translation 1.0 1.5 2.0  
          rotation 0.0 1.0 0.0 0.7  
          children [  
               Shape {  
                    geometry Box { }  
                }  
            ]  
        }  
  
...  

Agrupamiento
Group  

 El nodo de agrupamiento Group crea un grupo básico, donde cada nodo


dentro del grupo es visualizado

Group {  
   children [  
        # hijo 1: puerta  
        Shape {  
           geometry Box {  
                              size 3.0 6.0 0.2   
                         }  
             ....  
        },  
        # hijo 2: picaporte  
        Transform {  
           translation 1.18 -0.0 0.2  
          children [  
               Shape {  
                  geometry Sphere {  
                                    radius 0.15  
                                }  
                  ....  
               }  
          ]  
       }  
   ]  
}  
 
 
Agrupamiento
Switch    
  El nodo de agrupamiento Switch crea un grupo donde sólo uno de sus
hijos es visualizado
o Los nodos hijos están dentro del campo choice y son numerados
implícitamente desde 0
o El campo whichChoice indica el hijo seleccionado (-1 ninguno)

Switch {  
   whichChoice 0  
   choice [  
    #  0, rojo  
       .....  
       Shape {  
            geometry Sphere {}  
              appearance Appearance {  
                   material Material {  
                       diffuseColor 1.0 0.0 0.0  
                   }  
             }       
      }  
    #  1, amarillo  
     ...  
       Shape {  
            geometry Sphere {}  
               appearance ...(amarillo)  
        }  
    #  2  
     ....  
       Shape {  
            geometry Sphere {}  
               appearance ...(verde)  
       }  
   ]  
}     
   
...  
 

Agrupamiento
Billboard    
 El nodo de agrupamiento Billboard crea un grupo con un
sistema especial de coordenadas
o El sistema de coordenadas se rota alrededor del
ejeaxisOfRotation para enfrentar al usuario
o Si el eje es 0.0 0.0 0.0 la rotación se realiza alrededor de
cualquier eje

Billboard {  
   # Rota alrededor del eje Y  
   axisOfRotation 0.0 1.0 0.0  
   children [ . . .cabeza del robot ]  
}  
. . . 

Billboard {  
   # Rota alrededor de cualquier eje  
   axisOfRotation 0.0 0.0 0.0  
   children [. . .]  
}

Agrupamiento
Anchor   

 El nodo de agrupamiento Anchor crea un grupo activable(clickable)


 Devuelve el contenido de una url cuando el usuario activa (clicks) alguno
de los nodos hijos contenidos en children
 La URL puede apuntar a datos VRML (wrl, viewpoint) o no VRML.

Anchor {  
     url
"../sonidos/bach.wav"  
     description "sonido"  
     children [   
          Shape {...}  
     ]   
}  
Anchor {  
     url "..indice.htm"  
     description "html"  
     parameter "target=new"  
     children [...]   
}  
Anchor {  
     url "temple.wrl"  
     description "vrml"  
     children [...]   
}  
Anchor {  
     url "#VP"  
     description "viewpoint"  
     children [...]   
}  

Agrupamiento
Inline   

 El nodo de agrupamiento Inline crea un grupo especial a partir de otros


archivos VRML seleccionados por una url

Inline { url "table.wrl" } 

Transform {  
   translation 0.95 0.0 0.0  
   children [  
     DEF silla Inline{  
                  url"chair.wrl"  
                }   
   ]  
}  
Transform {  
   translation 0.95 0.0 0.0  
   rotation 0.0 1.0 0.0   
   children USE silla  
}  
 . . . 
Agrupamiento
Collision    

 El nodo de agrupamiento Collision detecta las colisiones del usuario con


las formas pertenecientes al grupo

 
DEF Collide Collision {  
         collide TRUE  
         proxy Shape { geometry Box { . . . }
}  
         children [ . . . ]  
     }  
    
 

 Tiene en cuenta el tamaño del avatar definido en el


nodoNavigationInfo...

 Es más eficiente detectar colisiones con una forma proxy, que es una


versión simplificada de las formas reales y no se dibuja

 collide  habilita/deshabilita el sensor

Agrupamiento
LOD    

 El nodo de agrupamiento LOD (Level Of Detail) crea un grupo de formas


que describen diferentes niveles de detalle o versiones de la misma
forma
 
LOD {  
    center 0.0 0.0 0.0  
    range [ 7.0, 10.0 ]  
    level [  
    #  detalle alto  
        Inline {url "torch1.wrl"}, 
    #  detalle medio  
        Inline {url "torch2.wrl"}, 
    #  detalle bajo  
        Inline {url "torch3.wrl" } 
    ]  
}
 

o center  especifica el centro de la forma


o level  lista los niveles de detalle ordenados de mayor a menor
o range  lista una serie de distancias en las cuales se cambia el
nivel.

 Dado que los objetos distantes no pueden verse en detalle, LOD


mantiene la calidad mientras reduce el tiempo de carga y de dibujo
  
Formas avanzadas 

 Las formas complejas (terrenos, animales, plantas, máquinas, etc.) son


difíciles de construir con formas primitivas.

 VRML define nodos de geometría basados en puntos:


 PointSet {...} : conjunto de puntos
 IndexedLineSet {...}: conjunto de líneas
 IndexedFaceSet {...} : conjunto de caras
 ElevationGrid {...}: terrenos
 Extrusión {...}: formas de extrusión

 Los nodos PointSet, IndexedLineSet y IndexedFaceSet usan un


nodo Coordinate como valor de su campo coord

 El nodo Coordinate contiene una lista de coordenadas

          Coordinate { 
              point [ #       X   Y   Z 
                  2.0 1.0 3.0, 
                  4.0 2.5 5.3, 
                  . . . 
              ] 
          }

PointSet  
  
  El nodo de geometría PointSet crea un conjunto de puntos
 
Shape {  
      appearance Appearance
{   
             material
Material{...}   
      }  
      geometry PointSet {  
            coord Coordinate {  
                 point [  
                    1.0 1.0 0.0,     
                    2.0 4.0 0.0,    
                    . . .   
                ]  
            }  
           . . .  
      }  
}   

IndexedLineSet    

  El nodo de geometría IndexedLineSet crea un conjunto de líneas

 
Shape {  
     appearance Appearance {   
             material
Material{...}   
      }  
     geometry  IndexedLineSet
{  
            coord Coordinate {  
                  point [  
                    1.0 1.0 0.0,     
                    2.0 4.0 0.0,    
                    . . .]  
            }  
            coordIndex [0, 1, 2,-
1,  
                3, ..., -1,]  
      }  
}  
 
 
o coord tiene como valor un nodo Coordinate que especifica
coordenadas numeradas implícitamente desde 0
o Los índices de las coordenadas se listan en coordIndex en el
orden deseado (índice -1 indica un corte de línea)
 

IndexedFaceSet    

  El nodo de geometría IndexedFaceSet crea un conjunto de polígonos


 
Shape {  
      appearance Appearance {   
             material Material{...}   
      }  
     geometry  IndexedFaceSet
{  
            coord Coordinate {  
                  point [  
                    0.0  0.0  0.0,  
                    5.5  5.0  0.88,   
                    . . .]  
            }  
            coordIndex [0,  1,...,
-1,  
                        0, 12,..., 7,
-1,  
            .... ]  
           solid TRUE  
           ccw TRUE  
           convex FALSE  
     }  
}  
 
 

o coord tiene como valor un


nodo Coordinate (idem IndexedLineSet)
o Se listan los índices de las coordenadas de las caras
en coordIndex. El índice -1 indica fin de polígono, el cual se cierra
conectando automáticamente el último índice con el primero
o solid indica si la forma es sólida, es decir, si las caras internas no
se dibujan
o ccw indica si las caras son en sentido antihorario (counter-
clockwise), es decir, si las caras son externas
o convex indica si las caras son convexas. Las caras cóncavas se
parten en múltiples caras convexas

ElevationGrid  

 En lugar de construir terrenos con IndexedFaceSet, puede resultar más


eficiente usar el nodo de geometría ElevationGrid

 
Shape {  
     appearance Appearance {   
             material Material{...}   
      }  
     geometry ElevationGrid {  
             xDimension 128  
             zDimension 128  
             xSpacing   0.02  
             zSpacing   0.02  
             solid TRUE  
             height [  
                        0.019608,  
                        0.015686,  
                       . . . ]  
       }  
}  
 
 

o El tamaño se especifica en xDimension y zDimension


o La separación de la grilla se especifica en xSpacing y zSpacing
o El campo height especifica las elevaciones en cada punto de la
grilla

solid y ccw se usan como en el nodo IndexedFaceSet

Extrusion

 En lugar de construir formas de extrusión (tubos, donuts, etc.)


con IndexedFaceSet, se pueden hacer con el nodo de
geometría Extrusion de manera más facil y eficiente
 Las formas de extrusión se describen por
o cross-section[..] especifica la sección de corte 2-D
o spine[..] especifica la curva 3-D a lo largo de la cual se desliza la
sección de corte

a. Sección de corte 2-D circular b. Curva 3-D helicoidal


 

 beginCap and endCap indican si la forma se cierra


 solid, ccw y convex se usan como en el nodo IndexedFaceSet
 scale[...] y orientation[...] indican la escala y rotación de la sección de
corte realizados por cada punto de spine

 
Shape {  
     appearance Appearance {   
             material Material{...}   
      }  
     geometry Extrusion {  
        crossSection [ 0.75  0.00,   
                             0.69
-0.285,...]  
        spine [ 2.00 0.00 -0.00,  
                   1.85 0.12
-0.77,...]  
        scale [ 0.1 0.1,  
                  0.15 0.11,...]  
       endCap   TRUE  
       beginCap FALSE  
       solid FALSE  
  }  
}  

Color en geometrías basadas en puntos


 El color puede especificarse en el nodo Material que forma parte de la
apariencia del nodo Shape

       Shape { 
           appearance Appearance { 
                 material Material { . . . } 
           } 
           geometry .... 
       } 
 

 Un nodo Color contiene una lista de valores RGB en el campo color

         Color { 
              color [ 1.0 0.0 0.0, . . . ] 
          }
o puede usarse en el campo color de los nodos IndexedFaceSet,
IndexedLineSet, PointSet y ElevationGrid para proveer colores a
las distintas partes de las geometrías
o anula los efectos del nodo Material

  

Color en geometrías basadas en puntos


PointSet    

  El nodo de geometría PointSet crea un conjunto de puntos

o color toma como valor un nodo Color que provee una lista de


colores para vincular a cada punto

 
Shape {  
    geometry PointSet {  
           coord Coordinate
{  
                 point [. . .]  
             }  
          color Color {  
                color [  
                     0.0 1.0
0.0,     
                     1.0 1.0
0.0,  
                ...]  
          }  
      }  
}  

Color en geometrías basadas en puntos


IndexedLineSet    

  El nodo de geometría IndexedLineSet crea un conjunto de líneas


o color toma como valor un nodo Color
o colorIndex lista los índices de los colores seleccionados
 
Shape {  
     geometry  IndexedLineSet {  
          coord Coordinate { . .}  
          coordIndex [ N índices ]  
          color Color { color [...]  }  
           colorindex[ N índices ]  
           colorPerVertex TRUE  
      }  

Shape {  
     geometry  IndexedLineSet {  
           . . .  
          color Color { color [ ...] }  
           colorIndex[ N
índices=nro.líneas ]  
           colorPerVertex FALSE  
      }  
}  
 
 
 colorPerVertex

o TRUE: cada índice de colorIndex se asocia con cada índice


de coordIndex (incluyendo los índices -1). Si colorIndex esta vacío
se usacoordIndex.
o FALSE: cada índice de colorIndex se asocia con cada línea.
Si colorIndex esta vacío se aplican los colores en orden.

Color en geometrías basadas en puntos


IndexedFaceSet      

  El nodo de geometría IndexedFaceSet crea un conjunto de polígonos


o color y colorIndex se usan como en el nodo IndexedLineSet
o colorPerVertex se usa de igual manera que en el
nodo IndexedLineSet pero en relación a los polígonos.

 Shape {  
     geometry  IndexedFaceSet {  
         coord Coordinate {... }  
         coordIndex [ N índices ]  
         color Color {  color [...]  }  
           colorIndex[ N índices ]  
           colorPerVertex TRUE  
      }  
}  

Shape {  
     geometry IndexedFaceSet {  
          ...  
         color Color {  color [ ...]   }  
           colorindex[ N
índices=nro.caras ]  
           colorPerVertex FALSE  
      }  
}  

Color en geometrías basadas en puntos


ElevationGrid  

 El nodo de geometría ElevationGrid  crea terrenos


o color toma como valor un nodo Color
o colorPerVertex
 TRUE: cada color se asocia con cada punto de height
 FALSE: cada color se asocia con cada cuadrado de la
grilla
 
Shape {  
     appearance Appearance
{   
             material
Material{...}   
      }  
     geometry ElevationGrid {  
             ...  
            height [ . . . ]  
       }  
}  

Sombra en geometrías basadas en puntos

  Para crear una forma suave

o se pueden usar un gran número de polígonos pequeños, y por lo


tanto se requiere espacio en disco, memoria y tiempo de dibujo
o o en su lugar, usar pocos polígonos con sombreado suave para
crear la ilusión de una forma suave
 
 Por defecto, los polígonos se dibujan con sombreado por caras.

 El sombreado puede modificarse mediante:

o El campo creaseAngle de los nodos IndexedFaceSet,


ElevationGrid y Extrusion, habilita el sombreado suave
o El uso del nodo Normal en el campo normal de los
nodos IndexedFaceSet y ElevationGrid

Sombra en geometrías basadas en puntos


creaseAngle 

 El campo creaseAngle de los nodos IndexedFaceSet,


ElevationGrid y Extrusion, se usa como threshold
o creaseAngle <= ángulo entre dos caras, se realiza sombreado por
caras
o creaseAngle > ángulo entre dos caras, se realiza sombreado
suave

 Shape {  
     appearance Appearance {...}   
     geometry IndexedFaceSet {  
         coord Coordinate {...}  
         coordIndex [...]  
           creaseAngle 0.0  
     }  
}  
Shape {  
     appearance Appearance {...}   
     geometry IndexedFaceSet {  
         coord Coordinate {...}  
         coordIndex [...]  
           creaseAngle 1.5  
     }  
}  

Sombra en geometrías basadas en puntos


Normal 

 Un vector normal indica la dirección en la que una cara se enfrenta

 Por defecto, el browser VRML genera las normales automáticamente.

 El nodo Normal se usa para especificar el campo normal de los


nodos IndexedFaceSet y ElevationGrid

 El campo vector del nodo Normal contiene una lista de vectores


normales que anulan el efecto de creaseAngle

Sombra en geometrías basadas en puntos


Normal

 El nodo de geometría IndexedFaceSet crea un conjunto de polígonos


o normal tiene como valor un nodo Normal
o normalIndex lista los índices de las normalesseleccionada
o normalPerVertex se aplica de manera equivalente a la descripta
para los colores
 El nodo de geometría ElevationGrid crea terrenos
o normal tiene como valor un nodo Normal
o normalPerVertex se aplica de manera equivalente a la descripta
para los colores

 
Shape {   Shape {  
     appearance Appearance       appearance Appearance
{ . . . }   { . . . }  
     geometry       geometry ElevationGrid
IndexedFaceSet {   {  
         coord Coordinate             height [ . . . ]  
{... }               normal Normal
         coordIndex [N { . . . }  
índices]                  normalPerVertex
         normal Normal { . . . TRUE  
}         }  
           normalIndex [ N  }
índices ]  
           normalPerVertex
TRUE  
      }  
}  
 

Texturas
 
  Para modelar una textura

o se pueden usar un gran número de polígonos coloreados, por lo


tanto se requiere tiempo de modelado así como de dibujo

o o en su lugar, usar Texture Mapping, es decir, pegar una imagen


en una forma
 
 El campo texture de un nodo Appearance de una forma, puede tomar
como valor diferentes nodos de textura
o ImageTexture
o PixelTexture
o MovieTexture

Texturas
ImageTexture   

 El nodo de textura ImageTexture usa una imagen de un archivo indicado


en el campo url

 Las imagenes pueden incluir color y transparencia (alpha) para cada


pixel

 Los formatos aceptados:


o GIF: imagen de 8-bits comprimida sin pérdida. 1 color de
transparencia. Usualmente es una elección pobre para texture
mapping.

o JPEG: imagen de 8-24 bits comprimida con pérdida. No soporta


transparencia. Elección adecuada para texture mapping.
o PNG: imagen de 8-24 bits comprimida sin pérdida. 8-bit de
transparencia por pixel. La mejor elección de color.

Texturas
ImageTexture   
 
# Pared  
Shape {  
    appearance DEF Brick Appearance {  
              texture ImageTexture { url "brick.jpg" }  
     }  
    geometry IndexedFaceSet {. . . }  

# Arbol derecha  
Transform {  
    translation  3.5 0.0 0.0  
    children [  
       Billboard { children [  
                 Shape {  
                   appearance Appearance {  
                       texture ImageTexture { url "tree1.png" }  
                   }  
                   geometry DEF TreeFace IndexedFaceSet
{... }  
                }  
     ]  }  
  ]  }  
# Arbol medio  
Transform {  
    children [  
       Billboard { children [  
             Shape {  
                 appearance Appearance {  
                      texture ImageTexture { url "tree1.jpg" }  
                 }  
                geometry USE TreeFace  
             }  
     ]  }  
  ]  }  
# Arbol izquierda  
Transform {  
    translation -3.5 0.0 0.0  
    children [  
        Billboard { children [  
               Shape { geometry USE TreeFace }  
     ] }  
 ] }  
.

Texturas
ImageTexture   

  Las texturas con color anulan el color de un nodo Material


 Las texturas con escala de grises se multiplican con el color del
nodo Material
 
Shape {  
    appearance Appearance {  
        texture ImageTexture { url "cantop.jpg" }  
    }  
    geometry Cylinder {  
        height  2.7  
        side    FALSE  
        bottom  FALSE  
    }  
}  
Shape {  
    appearance Appearance {  
        material Material { diffuseColor 1.0 0.0
0.0 }  
        texture ImageTexture { url
"canlabel.jpg" }  
    }  
    geometry Cylinder {  
        height  2.8  
        top     FALSE  
        bottom  FALSE  
    }  
}  
...

Texturas
PixelTexture 

 El nodo de textura PixelTexture  crea una imagen en el archivo VRML


o La imagen se codifica en hexadecimal, hasta 10 bytes por pixel
o Es muy ineficiente y sólo se usa para pequeñas texturas
 image especifica los datos y pixels de la imagen

 
Shape {  
    appearance Appearance
{  
        texture PixelTexture
{  
                 image 3 1 3  
                     0xFF0000   
                     0x00FF00  
                     0x0000FF  
           }  
    }  
   geometry Cylinder {  
        height  2.7  
    }  
}  

Texturas
MovieTexture 
 
 El nodo de textura MovieTexture usa un video de un archivo MPEG-1
para proyectarlo como textura en una forma
 
Shape {  
    appearance Appearance
{  
       texture MovieTexture
{  
                 url "t-
rex.mpg"  
                 loop TRUE  
                 speed 1.0  
                 startTime 0.0  
                 stopTime 0.0  
             }  
    }  
    geometry Cylinder {  
        height  2.7  
    }  
}  
 
 
o url  indica el archivo utilizado
o loop, speed, startTime, stopTime especifican cuando y cómo
proyectarlo
 
  Es problemático en algunos browsers
 

Mapping y Transformación de Texturas

 Por defecto, una imagen de textura se aplica alrededor de la forma

 En su lugar, se puede
o extraer una parte de la imagen mediante el uso del
nodo TextureCoordinate
o modificar la posición, orientación y escala de una imagen de
textura mediante el nodo TextureTransform
 
 Las imagenes de textura tienen un sistema de coordenadas
bidimensional:

S direccción horizontal y T dirección vertical, con (0,0) abajo-izquierda

 El nodo TextureCoordinate se usa como valor del campo texCoord de


los nodos IndexedFaceSet o ElevationGrid.

o El campo point contiene una lista de coordenadas de textura que


especifican la parte de la imagen a extraer
o El campo texCoordIndex del nodo IndexedFaceSet lista los
índices de las coordenadas de textura seleccionadas, y cada cual
se asocia con cada índice de coordIndex

También podría gustarte