<< Chapter < Page Chapter >> Page >

An environmental light is available, which is not coming from any particular direction, and whosecolor is specified by the parameters of the activation call ambientLight() . A directional light source is set with the directionalLight() , whose parameters specify color and incoming direction. The method lights() activates a default combination of gray ambient light and directional light, the latter also gray,coming from the frontal direction. It is possible to set a point light source in a given point of space by the call pointLight() . Finally, the method spotLight() activates a light beam which can be controlled in its color, position, direction, aperture, andconcentration around the axis. The exponent e tunes the falloff around the axis:

φ e

When hitting a planar surface, a directional light produces reflected light along several directions, depending on thesurface properties. In the case of perfectly-diffusive (or Lambertian ) surface, the light radiates evenly from the surface along all directions, with an intensity that islarger for incident directions closer to the surface normal. Vice versa, if the surface is perfectly reflecting, light isonly reflected along the direction that is specularly symmetric (about the surface normal) to the incident direction. In OpenGL,to have some flexibility in defining the illumination, each source has the three illumination components: ambient, diffuse,and specular. These three components are separately defined and interact with the respective components that define the surfaceproperties of objects. The colors defined in the methods directionalLight() , pointLight() , and spotLight() define the Lambertian component of illumination. The lightSpecular() specifies the color of the component of incoming light that is subject tospecular reflection.

In Processing, the properties of surfaces are controlled by the methods ambient() (acting on the ambient component of incoming lights) and specular() (acting on the specular component). The function shininess() controls the concentration of the specularly-reflected beam, by a coefficient that acts similarlyto the exponent of [link] . The represented objects can also be considered as sources of light, and they canbe assigned an emission light by the emmissive() call. However, the sources defined in this way do not illuminate the other objects on the scene.

In OpenGL the point, spot, and ambient lights are attenuated with increasing distance, according to themodel

attenuation 1 a b d c d 2
The method ligthFalloff() allows to specify the parameters a , b , and c .

Here, a cube and a QUAD_STRIP are positioned in space and illuminated by a rotating source. Moreover, a soft fixed lightis set. Notice the absence of shadows and the apparent planarity of surfaces in the QUAD_STRIP .

float r; float lightX, lightY, lightZ; void setup() {size(400, 400, P3D); r = 0;ambient(180, 90, 0); specular(0, 0, 240);lightSpecular(200, 200, 200); shininess(5);}void draw() { lightX = 100*sin(r/3) + width/2;lightY = 100*cos(r/3) + height/2; lightZ = 100*cos(r);background(0,0,0); noStroke();ambientLight(153, 102, 0);lightSpecular(0, 100, 200); pointLight(100, 180, 180,lightX, lightY, lightZ); pushMatrix();translate(lightX, lightY, lightZ); emissive(100, 180, 180);sphere(4); //Put a little sphere where the light is emissive(0,0,0);popMatrix(); pushMatrix();translate(width/2, height/2, 0); rotateX(PI/4);rotateY(PI/4); box(100);popMatrix(); pushMatrix();translate(width/4, height/2, 0); beginShape(QUAD_STRIP);vertex(10,13,8); vertex(13,90,13);vertex(65,76,44); vertex(95,106,44);vertex(97,20,70); vertex(109,70,80);endShape(); popMatrix();r+=0.05; }
Got questions? Get instant answers now!

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Media processing in processing. OpenStax CNX. Nov 10, 2010 Download for free at http://cnx.org/content/col10268/1.14
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Media processing in processing' conversation and receive update notifications?

Ask