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 theteapotData
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 thepatch
command. Thepatch
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] Show all properties
Use theview
command to change the orientation of the object.
view(-151,30)% change the orientationaxisequaloff%轴平等的和无形的
Adjust Transparency
Make the object transparent using theFaceAlpha
property of the patch object.
p.FaceAlpha = 0.3;% make the object semi-transparent
If theFaceColor
property is set to 'none', then the object appears as a wire frame diagram.
p.FaceColor ='none';% turn off the colors
改变Colormap
Change the colors for the object using thecolormap
function.
p.FaceAlpha = 1;% remove the transparencyp.FaceColor ='interp';% set the face colors to be interpolatedp.LineStyle ='none';% remove the linescolormap(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' Show all properties
lightinggouraud
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 lightDiffuseStrength
- controls the strength of diffuse lightSpecularStrength
- controls the strength of reflected lightSpecularExponent
- controls the harshness of reflected lightSpecularColorReflectance
- 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 thematerial
command.
materialshiny
Adjust the position of the light using itsPosition
property. The position is inx,y,zcoordinates.
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' Show all properties