3.6.2  Campo de Alturas

Un campo de alturas (height_field) es un objeto cuya superficie está determinada por el valor de color o de paleta de cada píxel de una imagen diseñada con este propósito. Con estos objetos podemos simular montañas realistas y hacer fácilmente otros tipos de terreno. En primer lugar, necesitamos una imagen a partir de la cual crearemos el campo de alturas. POV-Ray es ideal para crear tal imagen.

Creamos un nuevo archivo llamado image.pov y escribimos lo siguiente:

  #include "colors.inc"
  global_settings {
    assumed_gamma 2.2
    hf_gray_16
  }

La palabra clave hf_gray_16 hace que la salida sea codificada de un modo especial con 16 bits en escala de grises, que es ideal para generar campos de alturas. Las superficies construidas con 8 bits son mucho menos suaves, ya que se trabaja con menos alturas diferentes (256 frente a 65536 de los 16 bits).

Ahora situamos una cámara que apunta desde la parte negativa del eje z al origen.

  camera {
    location <0, 0, -10>
    look_at 0
  }

Después creamos un plano vertical en z=10, que llenará toda la pantalla. Lo coloreamos con manchas con forma de arrugas grises sobre fondo blanco.

  plane { z, 10
    pigment {
      wrinkles
      color_map {
       [0 0.3*White]
       [1 White]
      }
    }
  }

Finalmente, añadimos una luz.

  light_source { <0, 20, -100> color White }

Trazamos esta escena a 640x480 +A0.1 +FT. Obtendremos una imagen que producirá un excelente campo de alturas. Creamos ahora un archivo llamado hfdemo.pov y escribimos en él lo siguiente:

Nota: Los usuarios de Windows, salvo que especifiquen +FT como en el ejemplo, obtendrán un archivo de imagen .BMP, ya que es el tipo de salida por defecto en esta versión. En ese caso, necesitarás usar sys en lugar de tga en la sentencia height_field más abajo.

  #include "colors.inc"

Añadimos una cámara dos unidades sobre el origen y diez unidades por detrás...

  camera{
    location <0, 2, -10>
    look_at 0
    angle 30
  }

... y una fuente de luz.

  light_source{ <1000,1000,-1000> White }

Ahora añadimos el campo de alturas. En la sintaxis siguiente se especifica que usamos un archivo Targa, que se suaviza el cambio entre alturas, se colorea de blanco, y se traslada para centrarlo en el origen y escalarlo de forma que simule montañas y llene la pantalla.

  height_field {
    tga "image.tga"
    smooth
    pigment { White }
    translate <-.5, -.5, -.5>
    scale <17, 1.75, 17>
  }

Guardamos el archivo y lo trazamos a 320x240 -A. Después, si estamos satisfechos con el resultado, probaremos a crear una imagen de mayor resolución y con anti-alias.

Un campo de alturas creado íntegramente con POV-Ray.
Un campo de alturas creado íntegramente con POV-Ray.

El Himalaya en nuestro ordenador!