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: