| MATLAB® | ![]() |
| On this page… |
|---|
The MATLAB® graphics environment provides commands that enable you to position light sources and adjust the characteristics of lit objects. These commands include the following.
Command | Purpose |
|---|---|
Create or move a light with respect to the camera position | |
Create or position a light in spherical coordinates | |
Create a light object | |
Select a lighting method | |
Set the reflectance properties of lit objects |
You might find it useful to set light or lit-object properties directly to achieve specific results. In addition to the material in this topic area, you can explore the following lighting examples as an introduction to lighting for visualization.
You create a light object using the light function. Three important light object properties are
Color — Color of the light cast by the light object
Style — Either infinitely far away (the default) or local
Position — Direction (for infinite light sources) or the location (for local light sources)
The Color property determines the color of the directional light from the light source. The color of an object in a scene is determined by the color of the object and the light source.
The Style property determines whether the light source is a point source (Style set to local), which radiates from the specified position in all directions, or a light source placed at infinity (Style set to infinite), which shines from the direction of the specified position with parallel rays.
The Position property specifies the location of the light source in axes data units. In the case of a light source at infinity, Position specifies the direction to the light source.
Lights affect surface and patch objects that are in the same axes as the light. These objects have a number of properties that alter the way they look when illuminated by lights.
You cannot see light objects themselves, but you can see their effects on any patch and surface objects present in the axes containing the light. A number of functions create these objects, including surf, mesh, pcolor, fill, and fill3 as well as the surface and patch functions.
You control lighting effects by setting various axes, light, patch, and surface object properties. All properties have default values that generally produce desirable results. However, you can achieve the specific effect you want by adjusting the values of these properties.
Property | Effect |
|---|---|
An axes property that specifies the color of the background light in the scene, which has no direction and affects all objects uniformly. Ambient light effects occur only when there is a visible light object in the axes. | |
A patch and surface property that determines the intensity of the ambient component of the light reflected from the object. | |
A patch and surface property that determines the intensity of the diffuse component of the light reflected from the object. | |
A patch and surface property that determines the intensity of the specular component of the light reflected from the object. | |
A patch and surface property that determines the size of the specular highlight. | |
A patch and surface property that determines the degree to which the specularly reflected light is colored by the object color or the light source color. | |
A patch and surface property that determines the method used to calculate the effect of the light on the faces of the object. Choices are either no lighting, or flat, Gouraud, or Phong lighting algorithms. | |
A patch and surface property that determines the method used to calculate the effect of the light on the edges of the object. Choices are either no lighting, or flat, Gouraud, or Phong lighting algorithms. | |
A patch and surface property that determines how faces are lit when their vertex normals point away from the camera. This property is useful for discriminating between the internal and external surfaces of an object. | |
A patch and surface property that specifies the color of the object faces. | |
A patch and surface property that specifies the color of the object edges. | |
A patch and surface property that contains normal vectors for each vertex of the object. MATLAB uses vertex normal vectors to perform lighting calculations. While MATLAB automatically generates this data, you can also specify your own vertex normals. | |
A patch and surface property that determines whether MATLAB recalculates vertex normals if you change object data (auto) or uses the current values of the VertexNormals property (manual). If you specify values for VertexNormals, MATLAB sets this property to manual. |
For more information, see descriptions of axes, surface, and patch object properties.
Lighting is a technique for adding realism to a graphical scene. It does this by simulating the highlights and dark areas that occur on objects under natural lighting (e.g., the directional light that comes from the sun). To create lighting effects, MATLAB defines a graphics object called a light. MATLAB applies lighting to surface and patch objects.
These examples illustrate the use of lighting in a visualization context.
Tracing a stream line through a volume — Sets properties of surfaces, patches, and lights (MATLAB Graphics documentation).
Using slice planes and cone plots — Sets lighting characteristics of objects in a scene independently to achieve a desired result (MATLAB coneplot function).
Lighting multiple slice planes independently to visualize fluid flow (MATLAB Graphics documentation).
Combining single-color lit surfaces with interpolated coloring. See "Example — Visualizing MRI Data" (3–D Visualization documentation).
Employing lighting to reveal surface shape. The fluid flow isosurface example and the surface plot of the sinc function examples illustrate this technique (3–D Visualization documentation).
This example displays the membrane surface and illuminates it with a light source emanating from the direction defined by the position vector [0 -2 1]. This vector defines a direction from the axes origin passing through the point with the coordinates 0, -2, 1. The light shines from this direction toward the axes origin.
membrane
light('Position',[0 -2 1])
Creating a light activates a number of lighting-related properties controlling characteristics such as the ambient light and reflectance properties of objects. It also switches to Z-buffer renderer if not already in that mode.

Lighting can enhance surface graphs of mathematical functions.
For example, use the ezsurf command to evaluate the expression
over the region -6π to 6π.
ezsurf('sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)',[-6*pi,6*pi])

Now add lighting using the lightangle command, which accepts the light position in terms of azimuth and elevation.
view(0,75)
shading interp
lightangle(-45,30)
set(gcf,'Renderer','zbuffer')
set(findobj(gca,'type','surface'),...
'FaceLighting','phong',...
'AmbientStrength',.3,'DiffuseStrength',.8,...
'SpecularStrength',.9,'SpecularExponent',25,...
'BackFaceLighting','unlit')

After obtaining the surface object's handle using findobj, you can set properties that affect how the light reflects from the surface. See for more detailed descriptions of these properties.
![]() | Lighting as a Visualization Tool | Selecting a Lighting Method | ![]() |
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |