domingo, 22 de abril de 2012

Nodo ElevationGrid

El nodo ElevationGrid (en inglés: rejilla de elevaciones) determina una rejlla de puntos, es decir, una cuadrícula de puntos de separación uniforme en el plano horizontal XZ, a los que se atribuyen distintas cotas de altura. Se genererá una superficie irregular uniendo dichas cotas. 
Sintaxis: 
          ElevationGrid{ 
          xDimension     número_de_columnas(Eje_X) 
          xSpacing         valor_real 
          zDimension     número_de_filas(Eje_Z) 
          zSpacing         valor_real 
          height   [altura1, altura2,...,altura(numcolum x numfilas) 
          color  Color[...] 
          colorPerVertext 
          } 
           
  Los campos xDimension y zDimension especifican el número de puntos de la cuadrícula en las direcciones X y Z, definiendo una superficie que contiene un número de rectángulos igual a (xDimension-1)*(zDimension-1). 
 
     Los campos xSpacing y zSpacing determinan la distancia entre los puntos de la cuadrícula en el eje X y en el eje Z respectivamente. 
 
     El campo height consiste en una ordenación de valores escalares que representan la altura de cada vértice sobre la cuadrícula. Los valores se almacenan de modo que la fila 0 es la primera, la fila 1 la segunda, etc. Dentro de cada fila, los valores de altura se almacenan de modo que la columna 0 es la primera, la 1 la segunda, etc. 
 
     El campo colorPerVertex indica como se han de aplicar los colores
 
colorPerVertex Acción
FALSE       Los colores se aplican sobre las cuadrículas de la rejilla. Se han de definir en el nodo Colors al menos ((xDimension-1)*(zDimension-1)) colores.
TRUE       Los colores se aplican sobre los vértices  de la rejilla.Se han de definir en el nodo Colors al menos (xDimension*zDimension) colores.


Determinando una cara visible

Por defecto, la cara visible es la perpendicular a la parte positiva de los ejes coordenados. En el ejemplo anterior, la cara es perpendicular a la parte positiva del eje Z.
Pero puede haber ocasiones que nos interese que sea visible la otra cara. Para determinar una cosa o la otra, el nodo ElevationGrid puede tener el campo ccw (abreviatura de counterclockwise: contrario a la agujas del reloj). Hay dos posibilidades:
  • TRUE Es la opción por defecto, por tanto no es obligatoria ponerlo. La cara visible es la perpendicular a la parte positiva de los ejes coordenados.
  •  FALSE En este caso, la cara visible es la opuesta a la parte positiva de los ejes coordenados
Si en el ejemplo anterior se añade el campo ccw FALSE. Para poder ver la superficie hay que girar 180º el escenario.

Determinando ambas caras visibles

Se puede hacer que ambas caras sean visibles simultáneamente. Para ello el nodo ElevationGrid puede tener el campo solid, que tiene dos posibilidades:
  • solid TRUE Es la opción por defecto: sólo una cara es visible (la determinada por el campo ccw), y por tanto no es obligatorio ponerlo.
  • solid FALSE En este caso, ambas caras son visibles simultáneamente. 
Ejemplo:
Transform{
translation -50 -1 1
children[
Shape{
    appearance Appearance{ material Material{ diffuseColor 0.36 0.2 0.09 } }
    geometry ElevationGrid {
        xDimension 18
        zDimension 10
        xSpacing 1.0
        zSpacing 1.0   
        solid FALSE
        height [  0.0, 0.0, 0.5, 1.0, 0.5, 0.0, 0.0, 0.0, 0.0,0.5,
              0.0, 0.0, 0.0, 0.0, 2.5, 0.5, 0.0, 0.0, 0.0,0.5,
              0.0, 0.0, 0.5, 0.5, 3.0, 1.0, 0.5, 0.0, 1.0,0.5,
              0.0, 0.0, 0.7, 2.0, 10.5, 5.5, 2.0, 1.5, 0.5,0.5,
              1.0, 2.5, 3.0, 6.5, 5.5, 3.5, 3.0, 1.0, 0.0,0.5,
              0.5, 8.0, 5.0, 7.5, 6.5, 9.0, 2.0, 0.5, 0.0,0.5,
              0.0, 4.0, 0.5, 1.5, 5.0, 2.0, 3.0, 1.5, 0.0,0.5,
              0.0, 5.0, 1.0, 0.0, 0.0, 0.0, 2.0, 1.5, 0.5,0.5,
              0.0, 5.0, 1.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0,0.5,
              0.0, 5.0, 2.5, 1.0, 0.5, 0.0, 0.0, 0.0, 0.0,0.5,
              0.0, 05.0, 4.0, 0.0, 2.5, 0.5, 0.0, 0.0, 0.0,0.5,
              0.0, 7.0, 0.5, 0.5, 3.0, 1.0, 0.5, 0.0, 1.0,0.5,
              0.0, 0.0, 6.7, 2.0, 10.5, 5.5, 2.0, 1.5, 0.5,0.5,
              1.0, 2.5, 3.0, 6.5, 5.5, 3.5, 3.0, 1.0, 0.0,0.5,
              0.5, 8.0, 5.0, 7.5, 6.5, 9.0, 2.0, 0.5, 0.0,0.5,
              0.0, 7.0, 5.5, 1.5, 5.0, 2.0, 3.0, 1.5, 0.0,0.5,
              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.5, 0.5,0.5,
              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0,0.5,
             
            ]
        }
    }
    ]

 

No hay comentarios:

Publicar un comentario