vamos a terminar el tema de los fondos viendo algo sobre 'height_field' (campo de altura), que tantas posibilidades nos brinda. el principio es sencillo, pero lograr buenos resultados implica una cierta experiencia. se parte de una imagen con tonos de gris (puede ser también en color, pero el resultado es muy diferente y más difícil de predecir) creada con un programa de gráficos como puede ser Photoshop o Gimp.
para que os sea más fácil practicar voy a usar un par de ejemplos que ya forman parte de POVRay, sus nombres son: crater_dat.pov y crater.pov y se hayan en la carpeta /scenes/objects de POVRay. es necesario renderizar primero crater_dat.pov ya que genera una imagen que crater.pov necesita para usarla como height_field. veamos un poco por encima que hacen cada uno de estos archivos .pov...
crater_dat.pov:
.- unos comentarios acerca de la conveniencia de usar el formato .png que trabaja con una salida de 16bits de grises, a pesar de que otros formatos de imagen son también válidos. para activar png como formato de salida nos recuerda el uso de +FN
.- en global_settings establece los parámetros de gamma (que veremos posteriormente aunque ya os adelanto que el valor 2.2 es el adecuado para la mayoría de pc's con windows, si usáis mac reducir ese valor a 1.5 o incluso 1) y hf_gray_16 que sirve precisamente para generar 'heightfields'
.- a continuación crea un plano en el eje z usando el pigmento 'wrinkles' y el modificador 'hollow'. podéis cambiar 'wrinkles' por 'waves'para apreciar un cambio importante.
.- luego tenemos una serie de focos con diferente radio, color y caída (desvanecimiento. lo veremos también al tratar las luces. modificar el radio os dará una buena pista de como funciona en la imagen final.
imagen generada con los valores por defecto:
crater.pov:
.- indica la gamma, la cámara y las luces de la escena
.- usa height_field para crear el campo de altura
.- si se usó y se usa en todo momento el comando +FN al renderizar no será necesario indicar el tipo ni la extensión, de lo contrario cambiar la línea para dejarla así:
height_field {
png "crater_dat.png" smooth (o el formato que se haya usado)
y este es el resultado:
la síntaxis de height_field. encontraréis más info en la ayuda de POVRay:
HEIGHT_FIELD:
Jump to SDL height_field { HF_IMAGE [HF_MODIFIERS] }
HF_IMAGE:
FUNCTION_IMAGE | [HF_TYPE] FILE_NAME
HF_TYPE:
gif | tga | pot | png | pgm | ppm | jpeg | tiff | sys
HF_MODIFIERS:
[hierarchy [BOOL]] & [smooth] & [water_level FLOAT] & [OBJECT_MODIFIERS]
cuando usamos Photoshop, Gimp o similar para crear la imagen hemos de tener presente que las zonas negras no se elevan, lo hacen las blancas y su elevación varía conforme a su porcentaje de gris. para que la imagen no sea 'muy dura' o por el contrario 'muy plana' no conviene usar negros ni blancos puros si no basarnos en zonas de gris de más claro a más oscuro. no creo necesario explicar porque es mejor usar 16bits en lugar de 8 porque doy por sentado que ya lo sabéis. para conseguir que las transiciones sean más suaves conviene igualmente dar un cierto desenfoque gaussiano a la imagen. es difícil lograr lo que se busca a la primera, y la práctica es vital.
un saludo