This function plots symbols similarly to
what the base graphics function `points`

does when `pch`

is specified.

```
pch3d(x, y = NULL, z = NULL, pch = 1,
bg = material3d("color")[1], cex = 1, radius,
color = "black", lit = FALSE, ...)
```

## Arguments

- x, y, z
The locations at which to plot in a form
suitable for use in `xyz.coords`

.

- pch
A vector of integers or single characters
describing the symbols to plot.

- bg
The fill color(s) to use for `pch`

from 21
to 25.

- cex
A relative size of the symbol to plot.

- radius
An absolute size of the symbol to plot
in user coordinates.

- color
The color(s) to use for symbols.

- lit
Whether the object responds to lighting or just shows the
displayed color directly.

- ...
Other material properties.

## Details

The list of symbols encoded by numerical
`pch`

values is given in the `points`

help page.

## Note

This function is not a perfect match to how the `points`

function works due
to limitations in RGL and OpenGL. In
particular:

Symbols with numbers from 1 to 25 are drawn
as 3D sprites (see `sprites3d`

),
so they will resize as the window is zoomed.
Letters and numbers from 32 to 255 (which are
mapped to letters) are drawn using `text3d`

,
so they maintain a fixed size.

A calculation somewhat like the one in `plot3d`

that sets the size
of spheres is used to choose the size of
sprites based on `cex`

and the
current scaling. This will likely need manual
tweaking. Use the `radius`

argument
for a fixed size.

No special handling is done for the case of
`pch = "."`

. Use `points3d`

for
small dots.

As of rgl version 0.100.10, background and foreground
colors can vary from symbol to symbol.

## Value

A vector of object id values is returned invisibly. Separate objects will be drawn
for each different combination of `pch`

value from
0 to 25, `color`

and `bg`

, and another holding all the character
symbols.

## Examples

```
open3d()
i <- 0:25; x <- i %% 5; y <- rep(0, 26); z <- i %/% 5
pch3d(x, y, z, pch = i, bg = "gray", color = rainbow(26))
text3d(x, y, z + 0.3, i)
pch3d(x + 5, y, z, pch = i+65)
text3d(x + 5, y, z + 0.3, i+65)
```