jueves, 19 de febrero de 2015

Primitivas y Materiales



Primitivas

En VRML existe una serie de objetos predefinidos que forman el conjunto de primitivas de geometría. Estas primitivas son:
  • Box (paralelepípedos genéricos: cubos, cajas)
  • Sphere (esfera)
  • Cone (cono)
  • Cylinder (cilindro)
Cada una de estas primitivas es un node.

El node Shape

Para poder visualizar estas primitivas, es necesario utilizar el node Shape. Este node tiene dos fields: geometry y appearance. El segundo lo veremos en el apartado siguiente (Materiales I).
El field geometry es donde se especifica la geometría de algún objeto 3D. Es a través de este field que se especifican las primitivas. A continuación se muestra como definir cada una de las primitivas existentes:
Box:
 
Shape {
        geometry Box { size 4 3 5 }
}
Aquí definimos una caja de 4 unidades de ancho, 3 de alto y 5 de fondo (size 4 3 5). Si quisiéramos definir un cubo perfecto de 10 unidades por lado, pondríamos las tres cifras iguales a 10 (size 10 10 10).
(NOTA: Al visualizar el ejemplo vemos una masa de color gris uniforme debido a que aún no hemos definido un material para el objeto. Esto lo veremos en el apartado siguiente).
El objeto queda definido de forma que su centro coincide con el origen de coordenadas locales, y que en este caso, como no se han aplicado transformaciones, coincide también con el origen de coordenadas globales o de mundo.
Sphere:
 
Shape {
        geometry Sphere { radius 5 }
}
Aquí definimos una esfera de 5 unidades de radio (radius 5). También queda centrada en el origen de coordenadas.
Cone:
 
Shape {
        geometry Cone { 
               bottomRadius 3
               height 2
        }
}
Aquí definimos un cono con una base de 3 unidades de radio (bottomRadius 3) y una altura de 2 unidades (height 2). También queda centrado en el origen de coordenadas.
Cylinder:
 
Shape {
        geometry Cylinder { 
               radius 4
               height 5
        }
}
Aquí definimos un cilindro con una base de 4 unidades de radio (radius 4) y una altura de 5 unidades (height 5). También queda centrado en el origen de coordenadas.

Materiales

Para definir una apariencia de nuestras primitivas (y en general de todos los objetos) debemos definir un color o una textura a aplicar a su superficie. En este apartado tan solo veremos cómo definir un color y dejaremos la definición completa de texturas para un módulo posterior.
Así pues, tal y como hemos visto arriba, el node Shape dispone de un field llamado appearance donde definiremos las características del material del objeto. Y para hacerlo utilizaremos el node Appearance de VRML.
Este node tiene diversos fields pero de momento sólo nos concentraremos en su field material. Para definir este field debemos utilizar el node Material. Aquí también sólo nos concentraremos en un field de este node: el field diffuseColor, que hace referencia al color que refleja el objeto, es decir, el color del objeto.
Tal y como hemos visto en el módulo "Ejes y Unidades", los colores en VRML se definen en RGB (Red-Green-Blue o Rojo-Verde-Azul). Los valores de R, G y B deben estar dentro del rango [0,1]. Veamos un ejemplo:
Ejemplo1: Queremos definir la caja de antes de color rojo (RGB = [1,0,0]).
 
Shape {
        geometry Box { size 4 3 5 }
        appearance Appearance {
               material Material {
                       diffuseColor 1 0 0
               }
        }
}
Como se puede apreciar, la caja que antes no se distinguía por el hecho de no tener una apariencia asignada que le confiriera características de superfície, ahora se ve claramente y del color rojo que hemos definido.
Otro ejemplo:
Ejemplo2: Queremos definir el cilindro de antes, de color cian (azul claro) (RGB = [0,1,1]).
 
Shape {
        geometry Cylinder { 
               radius 4
               height 5
        }
        appearance Appearance {
               material Material {
                       diffuseColor 0 1 1
               }
        }
}

No hay comentarios:

Publicar un comentario

Gracias por participar en esta página.