# Graphics3D

Graphics3D[primitives,options]

represents a three-dimensional graphical image.

# Details and Options

• Graphics3D is displayed in StandardForm as a graphical image. In InputForm, it is displayed as an explicit list of primitives.
• The following graphics primitives can be used:
•  Arrow[{pt1,pt2}] arrow Ball[{x,y,z},…] filled ball BezierCurve[{pt1,pt2,…}] Bézier curve BSplineCurve[{pt1,pt2,…}] B-spline curve BSplineSurface[array] B-spline surface Circumsphere[{pt1,…}] sphere specified by four points Cone[{pt1,pt2},r] filled cone ConicHullRegion[…] filled linear cone Cube[{x,y,z},…] filled cube Cuboid[{xmin,ymin,zmin},…] filled cuboid Cylinder[{{x1,x2,x3},…},…] filled cylinder Dodecahedron[{x,y,z},…] filled dodecahedron GraphicsComplex[pts,prims] complex of graphics objects GraphicsGroup[{g1,g2,…}] objects treated as a group HalfLine[{pt1,pt2}] half-infinite line, or ray HalfPlane[{pt1,pt2},v] half-infinite plane Hexahedron[{pt1,…}] filled hexahedron Icosahedron[{x,y,z},…] filled icosahedron InfiniteLine[{pt1,pt2}] infinite line InfinitePlane[{pt1,pt2,pt2}] infinite plane Inset[obj,…] inset object JoinedCurve[{seg1,seg2,…}] joined curve segments Line[{pt1,…}] line Octahedron[{x,y,z},…] filled octahedron Parallelepiped[pt,{v1,…}] parallelepiped Point[{x,y,z}] point Polygon[{pt1,…}] polygon Polyhedron[{pt1,…}] polyhedron Prism[{pt1,…}] prism Pyramid[{pt1,…}] pyramid Raster3D[array] cubical array of gray or colored cells Simplex[{pt1,…}] simplex Sphere[{x,y,z},…] sphere Tetrahedron[{pt1,…}] filled tetrahedron Text[expr,{x,y,z}] text Triangle[{pt1,…}] triangle Tube[{pt1,…}] tube
• The following graphics directives can be used:
•  AbsoluteDashing[{w1,…}] absolute line dashing specification AbsolutePointSize[d] absolute point size specification AbsoluteThickness[w] absolute line thickness specification Arrowheads[spec] arrowheads specification CMYKColor[c,m,y,k] color specification CapForm[type] tube and line cap specification Dashing[{w1,…}] line dashing specification Directive[g1,g2,…] composite graphics directive EdgeForm[spec] polygon edge specification FaceForm[spec] polygon face specification Glow[c] glow color specification GrayLevel[i] gray‐level specification Hue[h] hue specification JoinForm[type] tube and line joining specification Opacity[a] opacity specification PointSize[d] point size specification RGBColor[r,g,b] color specification Specularity[s] surface specularity specification Texture[obj] texture specification Thickness[w] line thickness specification
• The following wrappers can be used at any level:
•  Annotation[obj,label] give an annotation Button[obj,action] make obj act as a button Dynamic[obj] use the dynamically updated current value EventHandler[obj,…] attach an event handler Hyperlink[obj,URI] make obj a hyperlink Mouseover[obj,over] specify a mouseover form PopupWindow[obj,cont] attach a popup window StatusArea[obj,label] specify a label to appear in the status area Style[obj,opts] specify a style Tooltip[obj,label] attach a tooltip
• The following options can be given:
•  AlignmentPoint Center the default point in the graphic to align with AspectRatio Automatic ratio of height to width Axes False whether to draw axes AxesEdge Automatic on which edges to put axes AxesLabel None axes labels AxesOrigin Automatic where axes should cross AxesStyle {} graphics directives to specify the style for axes Background None background color for the plot BaselinePosition Automatic how to align with a surrounding text baseline BaseStyle {} base style specifications for the graphic Boxed True whether to draw the bounding box BoxRatios Automatic bounding 3D box ratios BoxStyle {} style specifications for the box ClipPlanes None clipping planes ClipPlanesStyle Automatic style specifications for clipping planes ContentSelectable Automatic whether to allow contents to be selected ControllerLinking False when to link to external rotation controllers ControllerPath Automatic what external controllers to try to use Epilog {} 2D graphics primitives to be rendered after the main plot FaceGrids None grid lines to draw on the bounding box FaceGridsStyle {} style specifications for face grids FormatType TraditionalForm default format type for text ImageMargins 0. the margins to leave around the graphic ImagePadding All what extra padding to allow for labels, etc. ImageSize Automatic absolute size at which to render the graphic LabelStyle {} style specifications for labels Lighting Automatic simulated light sources to use Method Automatic details of 3D graphics methods to use PlotLabel None a label for the plot PlotRange All range of values to include PlotRangePadding Automatic how much to pad the range of values PlotRegion Automatic final display region to be filled PreserveImageOptions Automatic whether to preserve image options when displaying new versions of the same graphic Prolog {} 2D graphics primitives to be rendered before the main plot RotationAction "Fit" how to render after interactive rotation SphericalRegion Automatic whether to make the circumscribing sphere fit in the final display area Ticks Automatic specification for ticks TicksStyle {} style specification for ticks TouchscreenAutoZoom False whether to zoom to fullscreen when activated on a touchscreen ViewAngle Automatic angle of the field of view ViewCenter Automatic point to display at the center ViewMatrix Automatic explicit transformation matrix ViewPoint {1.3,-2.4,2.} viewing position ViewProjection Automatic projection method for rendering objects distant from the viewer ViewRange All range of viewing distances to include ViewVector Automatic position and direction of a simulated camera ViewVertical {0,0,1} direction to make vertical
• Nested lists of graphics constructs can be given. Directive specifications such as GrayLevel remain in effect only until the end of the list that contains them.
• Style[obj,opts] can be used to apply the options or directives opts to obj.
• In a notebook front end, ViewPoint, ViewVertical, ViewCenter, and ViewAngle can be changed by direct interactive manipulation.
• Dragging with the mouse rotates a 3D graphic.
• Directives such as RGBColor specify surface colors for objects that follow. Final colors are determined from simulated illumination, including Glow and Specularity components.
• By default, four light sources of different colors are used, arranged at particular fixed locations outside the bounding box.
• By default, ViewAngle is set so that, if possible, the projection of the whole 3D object just fills the 2D viewing area.
• The settings for BaseStyle are appended to the default style typically given by the "Graphics3D" style in the current stylesheet. The settings for BoxStyle, LabelStyle, etc. are appended to the default styles given for "Graphics3DBox", "Graphics3DLabel", etc.
• Settings that can be given through the Method option include "SpherePoints", "CylinderPoints", "RotationControl", and "ShrinkWrap". »
• The following options can be given to Method:
•  "AxesDuringInteraction" "Lock" axes layout/display when rotating "ConePoints" {40,3} how many subdivisions to model Cone with "CylinderPoints" {40,3} how many subdivisions to model Cylinder with "EdgeDepthOffset" True draw edges above faces at similar depths "InvertSurfaceNormals" False invert the normals of a BSplineSurface "PerFragmentLighting" True shade faces interpolating between VertexNormals "RelieveDPZFighting" False reduce the effects of Z-fighting "RotationControl" "ArcBall" set the rotation controller "RotationMode" "ClippedRegion" specify the rotation mode "ShrinkWrap" False crop out empty space around rendered content "SpherePoints" {40,30} how many subdivisions to model Sphere with "SplinePoints" {7,7} how many subdivisions to model BSplineSurface with "TubePoints" {40,2} how many subdivisions to model Tube with
• gives an empty 3D graphic.

# Examples

open allclose all

## Basic Examples(3)

Use lines, polygons, cylinders, spheres, etc. to build up a 3D graphics scene:

Use plot functions to automatically create Graphics3D from different types of data:

Use built-in polyhedron data:

## Scope(14)

### Primitives(2)

Three-dimensional planar polygons can fold over themselves:

Vertices can be shared by using GraphicsComplex:

### Directives(5)

Directives can specify color, opacity, and specularity of faces:

Specify the specular exponent:

Colors, thickness, and dashing directives affect lines and edges:

Specify different properties for front and back of faces:

Graphics directives normally remain in effect only until the end of the list that contains them:

### Coordinates(2)

Use an ordinary coordinate system:

Specify coordinates by fractions of the plot range:

### Lighting and Camera(5)

Default lighting on a gray specular sphere:

Different light source for each sphere:

Specify the view point using special scaled coordinates:

Specify orthographic views:

Specify the view vectors using ordinary coordinates:

## Options(85)

### AlignmentPoint(1)

Specify the position to be aligned in 3D Inset, using coordinates:

### AspectRatio(1)

In 3D, the aspect ratio determines the ratio of the final displayed 2D image:

### Axes(2)

Draw all the axes:

Draw only the axis:

### AxesEdge(3)

Choose the bounding box edges automatically to draw the axes:

Draw the axis edge that is the intersection of the plane and the plane:

Draw the axis edge that is the intersection of the plane and plane:

Four different positions for the axis:

### AxesLabel(2)

Place a label for the axis in 3D:

Specify a label for each axis:

### AxesStyle(1)

Specify overall axes style, including the ticks and the tick labels:

Specify the style for each axis:

### Background(1)

Specify a background color:

### BaselinePosition(2)

Align the center of a graphic with the baseline of the text:

Specify the baseline of a graphic as a fraction of the height by using Scaled:

### BaseStyle(2)

Set the starting style:

Set multiple starting styles:

### Boxed(1)

Draw the edges of the bounding box:

Do not draw the edges of the bounding box:

### BoxRatios(2)

Specify the ratios between the bounding box edges:

Use the actual coordinate values for the ratios:

### BoxStyle(1)

Use dashed lines for the bounding box:

### ClipPlanes(1)

Specify a clipping plane:

### ClipPlanesStyle(1)

Visualize the styled clipping plane:

### Epilog(1)

Place text at the right bottom corner of the 3D graphic:

### FaceGrids(4)

Put grids on every face of a 3D graphic:

Put grids on both faces:

Put face grids on the plane:

On the plane, put grid lines on , , and :

### FaceGridsStyle(1)

Specify the overall style of face grids:

### FormatType(2)

By default, expressions are displayed using TraditionalForm in graphics:

Display expressions using StandardForm:

### ImageMargins(2)

Have 30-point margins on all sides:

Leave different margins on each side:

Thick lines and labels outside of the bounding box can be clipped without ImagePadding:

Specify the same padding for all sides in printer's points:

Specify different padding on different sides:

### ImageSize(3)

Use predefined symbolic sizes in 3D:

Use an explicit image width:

Use an explicit image width and height:

### LabelStyle(1)

Specify overall style of all the label-like elements:

### Lighting(4)

Ambient light is uniformly applied to all the surfaces in the scene:

Directional lights with different colors:

Point lights with different colors:

Spotlights with different colors:

### Method(13)

#### "AxesDuringInteraction"(1)

Set the dynamic display layout of axes during 3D rotation.

The default "AxesDuringInteraction"->"Lock" locks axes in place during 3D rotation:

"ContinuousUpdate" causes the axes to move to the best location during 3D rotation:

"Hide" hides the axes instead of moving them:

#### "ConePoints"(1)

Use the "ConePoints" setting to render cones with fewer polygons:

#### "CylinderPoints"(1)

Use the "CylinderPoints" setting to render cylinders with fewer polygons:

#### "EdgeDepthOffset"(1)

"EdgeDepthOffset"->True ensures that edges placed near faces are not obscured:

#### "InvertSurfaceNormals"(1)

Invert the direction of the surface normals of a BSplineSurface:

#### "OneLayer"(1)

The rendering system uses layers to order and render polygons:

Specifying {"Color",1} renders the topmost layer as if nothing lay behind it:

Use other numbers to selectively display each layer:

Use {"Depth",layer} to display the depth map of a given layer:

#### "PerFragmentLighting"(1)

The macOS Metal engine uses "PerFragmentLighting" by default, except during rotation:

Set "PerFragmentLighting"False:

"PerFragmentLighting"True interpolates normals at every pixel over the entire face:

"PerFragmentLighting" appears smooth even when there are few surface subdivisions:

#### "RotationControl"(1)

Set different rotation controllers for 3D graphics:

#### "RotationMode"(1)

Normally, a 3D graphic in rotation changes its apparent size to accommodate its ImageSize:

"SphericalRegion" resizes the graphic to accommodate all orientations during rotation:

#### "ShrinkWrap"(1)

By default, empty space may appear around a graphical image:

Use "ShrinkWrap" to prevent the inclusion of empty space:

#### "SpherePoints"(1)

Use the "SpherePoints" setting to render spheres with fewer polygons:

#### "SplinePoints"(1)

Subdivide each patch between knots using the default of {7,7} sample points:

Reduce the number of samples per patch to {1,1}:

#### "TubePoints"(1)

Use the "TubePoints" setting to render spheres with fewer polygons:

### PlotLabel(2)

Display a label on the top of the graphic in TraditionalForm:

Use Style and other typesetting functions to modify how the label appears:

### PlotRange(3)

Display all objects:

Explicitly choose a range:

PlotRange->s is equivalent to PlotRange->{{-s,s},{-s,s},{-s,s}}:

Include coordinate unit of padding on all sides:

Include of the image size as padding on all sides:

Specify different padding on each side:

### PlotRegion(3)

The contents of a graphic use the whole region:

Limit the contents of the graphic to the middle half of the region in each direction:

### Prolog(1)

Draw a circumscribing disk that just touches a corner of the bounding box:

### SphericalRegion(1)

Make a sequence of images be consistently sized, independent of orientation:

Without SphericalRegion, each image is made as big as possible:

### Ticks(2)

Place tick marks automatically:

Draw tick marks at the specified positions:

### TicksStyle(2)

Specify the styles of the ticks and tick labels:

Specify the styles of the , , and axis ticks separately:

### ViewAngle(1)

Use a specific angle for a simulated camera:

### ViewCenter(2)

Place the top-right corner of the object at the center of the final image:

Use the ViewCenter->{vc,vp} to specify that 3D point vc gets mapped to the 2D point vp:

### ViewMatrix(1)

Orthographic view of a sphere from the negative direction:

### ViewPoint(3)

Specify the view point using the special scaled coordinates:

Use symbolic view points:

Specify orthographic views:

### ViewRange(2)

By default, the range is sufficient to include all the objects:

Specify the minimum and maximum distances from the camera to be included:

### ViewVector(1)

Specify the view vectors using ordinary coordinates:

### ViewVertical(2)

Use the axis direction as the vertical direction in the final image:

Various views of vertical directions:

## Properties & Relations(5)

The StandardForm of Graphics3D is its rendered form:

The InputForm is the textual expression form:

Graphics3D can be used as input to functions:

Three-dimensional plot functions return Graphics3D:

Several integrated data sources return Graphics3D:

Many Import and Export formats support Graphics3D:

## Neat Examples(1)

The RGB color cube: