domingo, 22 de abril de 2012

Nodo IndexedLineSet

Este nodo permite unir los diferentes puntos especificados en su campo coord mediante líneas poligonales.
tiene dos campos:
  • coord, cuyo valor es el nodo Coordinate, y que sirve para determinar las coordenadas de los puntos aislados que se van a unir entre sí para formar las líneas. Se definió en el capítulo anterior.
  • coordIndex, con este campo se define el orden con el que se unen los puntos entre sí, dónde empieza y acaba una línea, etc., como vamos a ver a continuación.  
Sintaxis: 
          IndexedLineSet{  
              coord Coordinate { 
                     point [ . . . ] 
               } 
              coordIndex  [...]  
              colorPerVertex     valor_lógico 
              color Color { 
                     color [ . . . ] 
               } 
              colorIndex   [...] 
           } 
En el campo coordIndex se establece el orden en el que se unen los tres puntos. En este caso la línea empieza en el primero (el 0), sigue con el segundo (el 1) y acaba en el tercero (el 2). Con el valor -1 se indica que ahí acaba la línea.
Para que se pueda ver debe estar incrustado en el nodo Shape.
Ejemplo:
#VRML V2.0 utf8

Transform{
 translation 0 1 2
 children [
Shape{
        geometry Text { 
        string ["hexagono"]     
         fontStyle FontStyle { 
                                            family "Arial", 
                                           
                                            size 2
                                           
                                            justify "center" 
                                          } 
    } 
}
]
}
Shape{ <-------
geometry IndexedLineSet{
coord Coordinate{
point[
2.1 0 0,
2.2 0 0,
2.3 0 0,
2.4 0 0,
2.5 -.1 0,
2.6 -.2 0,
2.7 -.3 0,
2.6 -.4 0,
2.5 -.5 0,
2.4 -.6 0,
2.3 -.6 0,
2.2 -.6 0,
2.1 -.6 0,
2.0 -.5 0,
1.9 -.4 0,
1.8 -.3 0,
1.9 -.2 0,
2.0 -.1 0,
]}
coordIndex [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,-1]
}
}


Para determinar el color de cada uno de los segmentos que compone la línea, hay que hacer uso de tres campos más:
  • color
  • colorIndex
  • colorPerVertex
Con el campo color se especifican cuántos y qué colores se van a usar (en el caso de que haya más de una línea).
Con el campo colorIndex se atribuye a cada una de las líneas existentes alguno de los colores expresados en el campo anterior.
Con el campo colorPerVertex se especifica si los colores serán colores continuos, o un gradiente entre dos colores.

En el campo color se especifica el color (o los colores, si hay más de una línea)
En el campo colorIndex se atribuye el color a la la línea (o líneas, si hay más de una). Este campo hace una función análoga con los colores y las líneas a la del campo coordIndex con los puntos y las líneas.
Ejemplo:

#VRML V2.0 utf8
 #Ejemplo de linea de color verde, uniendo tres puntos

 Shape {
    geometry IndexedLineSet {
       coord Coordinate {
          point [
             5 5 0,   #este es el punto 0
             15 9 0,  #este es el punto 1
             20 18 0  #este es el punto 2
          ]
       }
       coordIndex [
          0, 1, 2, -1
       ]
       color Color {
          color [
             0 1 0   #este es el color 0 (verde), 
             ]       #el unico posible pues solo hay una linea
       }
       colorIndex [
          0   #a la unica linea se le atribuye el unico color 0 
       ]
       colorPerVertex FALSE   
    }
  }
 
 
 

No hay comentarios:

Publicar un comentario