sábado, 21 de abril de 2012

Agrupacion de nodos;

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:  
              Group {           children [ ... ]      }
 
 
     El campo children contiene la lista de los objetos que se quieren agrupar, representados por sus nodos Shape respectivos: 
Ejemplo: 
 
#VRML V2.0 utf8
#Ejemplo de agrupación de una caja y un cono
Group {
         children [
 #Aquí empieza la caja:
                         Shape {
                             appearance Appearance {
                                 material Material {   }
                             }
                             geometry Box {
                                 size 4 4 2
                             }
                         },
                         #Aquí empieza el cono:
                         Shape {
                             appearance Appearance {
                                 material Material {   }
                             }
                             geometry Cone {
                                 height 7.0
                                 bottomRadius 2
                             } 
                         }
                        Shape{
                         appearance Appearance {
                         material Material {   }
                         }
                          geometry Cylinder{
                           height 1.0
                          radius 1.5
                                            }
                           }                       
                     ]
                 }

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: 
          Transform{     translation  Eje_X  Eje_Y  Eje_Z     rotation      Eje_X  Eje_Y  Eje_Z  Ángulo     scale          Eje_X  Eje_Y  Eje_Z     children[...]  }   
     Cada grupo creado mediante el nodo Transform va a poseer su propio sistema de coordenadas, cuyos atributos se determinan a través de los campos translation, rotation y scale, los cuales son optativos.  

 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:  

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). 
  
 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:
   #VRML V2.0 utf8 
Transform {
   translation  3 2 2
   rotation      1 1 1 .35
   scale          .5 .5 .5
         children [
 #Aquí empieza la caja:
                         Shape {
                             appearance Appearance {
                                 material Material {   }
                             }
                             geometry Box {
                                 size 4 4 2
                             }
                         },
                         #Aquí empieza el cono:
                         Shape {
                             appearance Appearance {
                                 material Material {   }
                             }
                             geometry Cone {
                                 height 7.0
                                 bottomRadius 2
                             } 
                         }
                        Shape{
                         appearance Appearance {
                         material Material {   }
                         }
                          geometry Cylinder{
                           height 1.0
                          radius 1.5
                                            }
                           }                       
                     ]
                 }

No hay comentarios:

Publicar un comentario