Apariencia y Materiales:
Muchos de Ustedes se preguntarán bueno pero y esto es realidad virtual. Unas figuras blancas? Y el Color y la Textura y el Sonido y la Interactividad ? Bueno, Bueno, despacio ya vamos llegando. Hoy comenzaremos a trabajar el tema de los colores.
Cada vez que vemos un objeto en el mundo virtual, está compuesto por dos tipos de información : su geometría (geometry) que habla de la forma del objeto: cúbica, esférica... mientras que material(material) cubre la información de las cualidades de la superficie de esa forma: color, brillo... Juntas definen el objeto visible.
Nodo Appearance:
Vimos en la entrega anterior las cuatro formas preconstruidas que tiene el lenguaje VRML. El nodo Shape tiene otro campo además del geometry que define su apariencia y se llama appearance, que define las cualidades de la superficie(aquí appearance es campo de Shape) pero Appearance como nodo tiene a su vez tres campos. Nosotros ya mencionamos en la tabla con los distintos tipos de datos, que había nodos que a su vez funcionaban como campos de otros, lo que permitía anidar y esto flexibizaba y aumentaba la potencia del VRML.
texture #SFNode
textureTransform #SFNode
diffuseColor #SFColor
emissiveColor #SFColor
shininess # SFFloat (rango de 0 a 1)
specularColor # SFColor
transparency # SFFloat (rango de 0 a 1)
}
Estos campos que determinan el color y el brillo del objeto pueden incluirse u omitirse. El campo utilizado para establecer el color básico de una figura se denomina diffuseColor (difumar Color). Este campo debe especificar tres con números entre 0 y 1, que corresponden a la intensidad de rojo, verde y azul, que forman el color requerido. Tomamos como ejemplo la creación de un Sol, como queremos un Sol color amarillo, según la teoría del color (que vale también para el VRML) el amarillo se forma con rojo y verde. Como queremos un Sol muy brillante, vamos a saturar el color mediante el valor uno (el valor cero será lo opuesto a la saturación ya que proporciona el color negro).
Ejercicio N 4:
#VRML V2.0 utf8
Shape {
appearance Appearance {
material Material {
diffuseColor 1 1 0
}
}
geometry Sphere {
radius 10
}
}
Hay otros campos que podemos agregar a este Sol amarillo brillante. Si usamos el campo emissiveColor ( color de emisión) en lugar de diffuseColor, estamos definiendo la cantidad de color emitida desde la superficie del objeto y el sol irradiará luminosidad de inmediato. En realidad emissiveColor toma los mismos valores de rojo, verde y azul que diffuseColor pero su efecto es distinto como podemos ver en el siguiente ejemplo.
Ejercicio Nº 5:
#VRML V2.0 utf8
Shape {
appearance Appearance {
material Material {
diffuseColor 0 0 0
emissiveColor 1 1 0
}
}
geometry Sphere {
radius 10
}
}
Otros posibles campos son: shininess (brillantez), transparency (transparencia), ambientColor (Color ambiental) y specularColor (color especular o reflejos). Experimenta con los diversos componentes para observar los posibles resultados. El nodo Material te permite generar un amplio rango de efectos pues cualquiera de los campos puede utilizarse en combinación con otros o de manera individual.
Shininess y SpecularColor:
Los campos shininess (brillo de una zona) y specularColor (reflejos) están intimamente relacionados con los efectos que produce el reflejo de la luz sobre una superficie y su rebote hacia nosotros.
El siguiente ejercicio muestra una esfera roja con reflejos azules, lo que le dá un efecto anaranjado:
Ejercicio Nº 7:
#VRML V2.0 utf8
Shape {
appearance Appearance {
material Material {
diffuseColor 0.35 0.35 0.35#gris oscuro
specularColor 1 1 1 # reflejos claros
shininess 1 #brillo
}
}
geometry Box { size 10 0.1 10 }#debemos movernos para verla mejor
}
Si no queremos estos efectos de luces sobre un objeto dejamos el specularColor y el emissiveColor por defecto y su valor será 0 0 0 . O sea no necesitamos definirlos si no los usamos.
Transparencia:
El valor 1.0 es completamente transparente, por lo tanto el valor 0 es opaco. Entre estos dos valores nosotros elegimos que grado de transparencia le otorgamos al objeto. Para verlo nada mejor que un ejemplo:
Ejercicio N 8:
#VRML V2.0 utf8
Shape {
appearance Appearance {
material Material {
diffuseColor 1 0 1
transparency 0.9 #Aquí está el valor de la transparencia.
}
}
geometry Sphere {
radius 10
}
}
Ejercicios Opcionales:
Para aquellos que tengan tiempo y ganas de seguir trabajando les propongo estos ejercicios:
Las Respuestas de los ejercicios opcionales de la Entrega anterior se pueden bajar de: Tarea1 y los ejercicios de esta entrega de Aquí
Hasta la próxima. Cualquier consulta o comentario [email protected]