Displaying Complex Three-Dimensional Objects
This example shows how to create and display a complex three dimensional object and control its appearance.
Get Geometry of Object
This example uses a graphics object called the Newell teapot. The vertex, face, and color index data for the teapot are calculated by the
teapotData function. Since the teapot is a complex geometric shape, there are a large number of vertices (4608) and faces (3872) returned by the function.
[verts, faces, cindex] = teapotGeometry;
Create Teapot Patch Object
Using the geometry data, draw the teapot using the
patch command. The
patch command creates a patch object.
figure p = patch('Faces',faces,'Vertices',verts,'FaceVertexCData',cindex,'FaceColor','interp')
p = Patch with properties: FaceColor: 'interp' FaceAlpha: 1 EdgeColor: [0 0 0] LineStyle: '-' Faces: [3872x4 double] Vertices: [4608x3 double] Use GET to show all properties
view command to change the orientation of the object.
view(-151,30) % change the orientation axis equal off % make the axes equal and invisible
Make the object transparent using the
FaceAlpha property of the patch object.
p.FaceAlpha = 0.3; % make the object semi-transparent
FaceColor property is set to 'none', then the object appears as a wire frame diagram.
p.FaceColor = 'none'; % turn off the colors
Change the colors for the object using the
p.FaceAlpha = 1; % remove the transparency p.FaceColor = 'interp'; % set the face colors to be interpolated p.LineStyle = 'none'; % remove the lines colormap(copper) % change the colormap
Light the Object
Add a light to make the object appear more realistic.
l = light('Position',[-0.4 0.2 0.9],'Style','infinite')
l = Light with properties: Color: [1 1 1] Style: 'infinite' Position: [-0.4000 0.2000 0.9000] Visible: on Use GET to show all properties
These properties of the patch object affect the strength of the light and the reflective properties of the object:
AmbientStrength- controls the strength of ambient light
DiffuseStrength- controls the strength of diffuse light
SpecularStrength- controls the strength of reflected light
SpecularExponent- controls the harshness of reflected light
SpecularColorReflectance- controls how reflected color is calculated.
You can set these properties individually. To set these properties to a predetermined set of values that approximate the appearance of metal, shiny, or dull material, use the
Adjust the position of the light using its
Position property. The position is in x, y, z coordinates.
l.Position = [-0.1 0.6 0.8]
l = Light with properties: Color: [1 1 1] Style: 'infinite' Position: [-0.1000 0.6000 0.8000] Visible: on Use GET to show all properties