Adds a sphere set shape node to the scene

spheres3d(x, y = NULL, z = NULL, radius = 1, fastTransparency = TRUE, ...)

Arguments

x, y, z

Numeric vector of point coordinates corresponding to the center of each sphere. Any reasonable way of defining the coordinates is acceptable. See the function xyz.coords for details.

radius

Vector or single value defining the sphere radius/radii

fastTransparency

logical value indicating whether fast sorting should be used for transparency. See the Details.

...

Material properties. See material3d for details.

Details

If a non-isometric aspect ratio is chosen, these functions will still draw objects that appear to the viewer to be spheres. Use ellipse3d to draw shapes that are spherical in the data scale.

When the scale is not isometric, the radius is measured in an average scale. In this case the bounding box calculation is iterative, since rescaling the plot changes the shape of the spheres in user-coordinates, which changes the bounding box. Versions of rgl prior to 0.92.802 did not do this iterative adjustment.

If any coordinate or radius is NA, the sphere is not plotted.

If a texture is used, its bitmap is wrapped around the sphere, with the top edge at the maximum y coordinate, and the left-right edges joined at the maximum in the z coordinate, centred in x.

If the alpha material value of the spheres is less than the default 1, they need to be drawn in order from back to front. When fastTransparency is TRUE, this is approximated by sorting the centers and drawing complete spheres in that order. This produces acceptable results in most cases, but artifacts may be visible, especially if the radius values vary, or they intersect other transparent objects. Setting fastTransparency = FALSE will cause the sorting to apply to each of the 480 facets of individual spheres. This is much slower, but may produce better output.

Value

A shape ID of the spheres object is returned.

See also

material3d, aspect3d for setting non-isometric scales

Examples

open3d()
spheres3d(rnorm(10), rnorm(10), rnorm(10), 
          radius = runif(10), color = rainbow(10))