6.5.8  Grupos de luces

Los grupos de luces permiten crear una 'unión' de fuentes de luz y objetos, donde los objetos pertenecientes al grupo son iluminados por las luces presentes en el mismo, y si se desea, también por las luces globales. Las fuentes de luz del grupo sólo pueden iluminar los objetos del mismo grupo.

Los grupos de luz son útiles, por ejemplo, para mejorar escenas en las que algunos objetos aparecen demasiado oscuros aunque la iluminación general es buena, ya que puede usarse para iluminarlos sin interferir con el resto de la escena.

Sintaxis:

light_group {
  LUZ_DE_GRUPO_DE_LUCES  |
  OBJETO_DE_GRUPO_DE_LUCES |
  GRUPO_DE_LUCES
  [MODIFICADOR_DE_GRUPO_DE_LUCES]
}

LUZ_DE_GRUPO_DE_LUCES:
     light_source | light_source IDENTIFICADOR_DE_LUZ
OBJETO_DE_GRUPO_DE_LUCES: 
     OBJETO | IDENTIFICADOR_DE_OBJETO
MODIFICADOR_DE_GRUPO_DE_LUCES: 
     global_lights BOOLEANO | TRANSFORMACION

El comando global_lights permite activar el uso de la iluminación global en los objetos del grupo.

Los grupos de luces se pueden anidar, en cuyo caso heredan las fuentes de luz del grupo de luces en el que están contenidos.

Los grupos de luces pueden considerarse como una 'unión de objetos con fuentes de luz', y puede usarse en CSG (geometría constructiva de sólidos).

Ejemplo de grupo de luces simple:

#declare LuzRoja = light_source {
  <-500,500,-500>
  rgb <1,0,0>
}

light_group {
  light_source {LuzRoja}
  sphere {0,1 pigment {rgb 1}}
  global_lights off
}

Anidamiento de grupos de luces:

#declare L1 = light_group {
  light_source {<10,10,0>, rgb <1,0,0>}
  light_source {<0,0,-100>, rgb <0,0,1>}
  sphere {0,1 pigment {rgb 1}}
}

light_group {
  light_source {<0,100,0>, rgb 0.5}
  light_group {L1}
}

Uso con CSG:

difference {
  light_group {
    sphere {0,1 pigment {rgb 1}}
    light_source {<-100,0,-100> rgb <1,0,0>}
    global_lights off
  }
  light_group {
    sphere {<0,1,0>,1 pigment {rgb 1}}
    light_source {<100,100,0> rgb <0,0,1>}
    global_lights off
  }
  rotate <-45,0,0>
}

En el último ejemplo, el resultado sería una esfera iluminada en rojo, con la parte recortada por la diferencia iluminada en azul. Es comparable al resultado de la diferencia de dos esferas con diferentes pigmentos.