Adds a surface mesh to the current scene. The surface is 
typically defined by a matrix of height values in z
(as in persp), 
but any of x, y, or z may be matrices or
vectors, as long as at least one is a matrix.  (One 
historical exception is allowed:  if all are vectors but
the length of z is the product of the lengths of
x and y, z is converted to a matrix.)
Dimensions of all matrices must match.
If any of the coordinates are vectors, they are interpreted as follows:
- If - xis a vector, it corresponds to rows of the matrix.
 
- If - yis a vector, it corresponds to columns
of the matrix.
 
- If - zis a vector, it corresponds to columns
unless- yis also a vector, in which case it corresponds
to rows.
 
If the normals are not supplied, they will be calculated automatically based
  on neighbouring points.
Texture coordinates run from 0 to 1 over each dimension of the texture bitmap.
  If texture coordinates are not supplied, they will be calculated to 
  render the texture exactly once over the grid.  Values greater than 1 can be
  used to repeat the texture over the surface.
  
surface3d always tries to draw the surface with the `front' upwards
  (typically towards higher z values).  This can be used to render
  the top and bottom differently; see material3d and
  the example below.  If you don't like its choice, set
  flip = TRUE to use the opposition definition.
  
NA values in the height matrix are not drawn.