jardínBit

P3D: Iluminación

1 Fundamentos

Las luces en un ambiente 3D determinan los colores y la intensidad de color en cada cara de las mallas dibujadas (“rendereadas”) en la pantalla.

Processing utiliza el llamado Modelo de reflexión de Phong, en el que se suman los componentes de luz ambiental, difusa, y especular.

Ejemplos sobre la aplicación de iluminación virtual:

Lighting Artist Realizes People Have No Idea What His Job Means And Gives Some Amazing Examples

2 Tipos de luces

En Processing y en otros ambientes 3D, hay cuatro tipos básicos de luces a colocar en el espacio:

2.1 ambientLight

Es una luz que colorea desde y hacia todas direcciones

Los tres parámetros que recibe son los valores de color (RGB, HSB, dependiendo del modo)

ambientLight( r, g, b);

2.2 pointLight

Es una luz que tiene una posición específica x,y,z, y que desde ese punto emite luz en todas direcciones

Los seis parámetros que recibe son:

pointLight( r, g, b, x, y, z);

2.3 directionalLight

Es una luz que tiene una dirección específica que es emitida desde todos los puntos del espacio.

Los seis parámetros que recibe son:

directionalLight( r, g, b, dx, dy, dz);

2.4 spotLight

Esta luz es combinación de pointLight y directionalLight: tiene una posición específica, desde la cual emite luz en una dirección específica, con cierto ángulo de apertura y un parámetro de concentración de luz en ese centro.

Los doce parámetros que recibe son

spotLight( r, g, b, x, y, z, dx, dy, dz, angulo, concentracion);

[Ángulos en radianes]

3 Consideraciones

Algunos detalles sobre las luces que utilizaremos en Processing 3D:

3.1 Suma de luces

El modelo de reflexión de Phong consiste en sumar todas las luces que están incidiendo sobre una superficie y que reflejan hacia la cámara.

Si, por ejemplo, establecemos una luz ambiental al 100% en todos los canales de color, todas las superficies están complemente iluminadas y las otras luces no tendrán efecto alguno:

ambientLight( 255, 255, 255); // luz ambiental al 100% en r,g,b

Si establecemos la luz ambiental blanca al 50%, y una luz direccional blanca también al 50%, entonces veremos lo siguiente:

ambientLight(128, 128, 128); // luz ambiental blanca al 50%
directionalLight(128, 128, 128, 0, 0, -1); // luz direccional blanca al 50%, con dirección hacia abajo en Z

Esas dos luces son las que establece por defecto la función lights().

4 Otras configuraciones

4.1 Falloff

La función lightFalloff configura qué tanto o no decae la luz conforme se aleja de su origen. Útil especialmente para las pointLights y spotLights.

Por defecto, los valores de esta función hacen que la luz no decaiga:

lightFalloff(1, 0, 0);

4.2 Materiales

Es posible cambiar el material de las mallas, que determina qué tanto o de qué forma reacciona con la luz. Las funciones para configurarlo son: