Skip to contents

Draws a triangular mesh (mesh3d) colored according to a continuous scale associated with a vector of values s (via rgl::shade3d()), and (optionally) adds a color-bar legend (via splot3d()).

Usage

sshade3d(
  x,
  s,
  meshColor = c("faces", "facesvertices", "vertices"),
  slim = range(s, finite = TRUE),
  col = jet.colors(128),
  legend = TRUE,
  legend.zoom = 0.4,
  legend.width = 0.1,
  legend.dim = 0.2,
  legend.lab = NULL,
  box = TRUE,
  lab.breaks = NULL,
  lab.ticksize = 0.5,
  lab.dist = 3,
  ...
)

Arguments

x

triangular mesh (mesh3d object, see rgl::mesh3d()).

s

values used to color the mesh. How they are interpreted depends on meshColor.

meshColor

determines how material colours (and textures) are interpreted: "faces" applies the color per face; "facesvertices" assumes that s contains one value per vertex, calculates the average per face (via vb2tri3d()), and applies the resulting color to each face; "vertices" applies the color per vertex. See rgl::shade3d().

slim

limits (vector of length 2 with the minimum and maximum) used to set up the color scale.

col

color table used to set up the color scale. Defaults to jet.colors(128).

legend

logical; if TRUE (default), the active rgl device is splitted into two subscenes, drawing the 3D mesh object in one and the legend with the color scale in the other (see splot3d()). if FALSE only the (coloured) mesh is drawn and the arguments related to the legend are ignored (splot3d() is not called).

legend.zoom

zoom factor applied to the legend subscene (see rgl::view3d()).

legend.width

relative width of the color bar, as a fraction of the corresponding dimension of the legend subscene/panel.

legend.dim

relative dimension of the legend panel, as a fraction of the full width (or height) of the device.

legend.lab

legend title.

box

logical; if TRUE (the default) a rectangle is drawn around the color bar.

lab.breaks

labels for the legend axis breaks; if NULL they are generated automatically (see axis3()).

lab.ticksize

length of the legend axis tick marks, as a fraction of the distance to the center of the legend panel.

lab.dist

distance between the tick marks and the labels of the legend axis, as a multiple of lab.ticksize.

...

additional arguments passed to rgl::shade3d().

Value

Called for its side effect (draws the mesh and, unless add = TRUE, the legend on the active rgl device); invisibly returns the object identifiers.

Examples

library(rgl)
open3d() # Alternatively, use `new3d()` to clear the current device or open a new one
sshade3d(volcanom, s = volcanom$vb[3, ], meshColor = "facesvertices")