2.6.3  Nuevos tipos de luz y grupos de luces

Fuentes de luz

Nueva es la exigidísima luz paralela; el identificador parallel puede usarse en combinación con cualquier tipo de light_source. La luz paralela también funciona con fotones, excepto en combinación con area_light.

El comando circular se ha añadido a las áreas de luz para crear mejores sombras, suaves y circulares. Con áreas de luz regulares, las seudo-luces se colocan en una cuadrícula rectangular. Al incluir la palabra circular en un área de luz, la luz se estira y aplasta para que parezca como un círculo: así quedan mejor simuladas las luces circulares o esféricas.

El comando orient se ha añadido a las áreas de luz para crear mejores sombras suaves. Sin este modificador, se tiene que tener precaución al escoger los vectores eje de una área de luz, ya que definen tanto su área como su orientación. Al incluir el modificador orient en una área de luz, la luz se rota para que en cada prueba de sombra siempre apunte en la dirección del punto que está siendo probado. La orientación inicial deja de ser importante, así que solamente se necesitan considerar las dimensiones deseadas (área) de la fuente de luz cuando se especifican los vectores eje.

Grupos de luces

Los grupos de luces posibilitan la creación de luces que solamente iluminan un subconjunto de todos los objetos. Son útiles, por ejemplo, al crear escenas en donde algunos objetos resultan demasiado oscuros, pero la luz media está exactamente como debería estar. Con un light_group se pueden crear luces que solamente iluminen los objetos contenidos en el grupo y/o las luces globales.

Una breve demostración:

  #version 3.5;
  global_settings {assumed_gamma 1.0}
  camera {location <-2,1.0,-3> look_at <0,1,0>}
  plane {y, 0 pigment {rgb 1}}

  #declare E=sphere {
     <0,1,0>,1
     pigment {rgb 1}
  }
  light_source {
     < 500, 500,-500>
     rgb <0,0,1>
  }
  #declare Luz_R=light_source {
     <-500, 500,-500>
     rgb <1,0,0>
  }
  #declare Luz_V=light_source {
     <300, 300,-300>
     rgb <0,1,0>
  }

  //difference {
     light_group{
        light_source {Luz_R}
        object {E}
        global_lights off
     }
     light_group {
        light_source {Luz_V}
        object {E scale 0.75 translate <0.3,0.5,-1>}
        global_lights off
     }
  //}