piece3d() draws board games pieces using the rgl package.
Usage
piece3d(
piece_side = "tile_back",
suit = NA,
rank = NA,
cfg = getOption("piecepackr.cfg", pp_cfg()),
x = 0,
y = 0,
z = NA,
angle = 0,
axis_x = 0,
axis_y = 0,
width = NA,
height = NA,
depth = NA,
envir = getOption("piecepackr.envir"),
...,
scale = 1,
res = 72,
alpha = 1,
lit = FALSE,
shininess = 50,
textype = NA
)Arguments
- piece_side
A string with piece and side separated by a underscore e.g. "coin_face"
- suit
Number of suit (starting from 1).
- rank
Number of rank (starting from 1)
- cfg
Piecepack configuration list or
pp_cfgobject, a list ofpp_cfgobjects, or a character vector referring to names inenviror a character vector referring to object names that can be retrieved bybase::dynGet().- x
Where to place piece on x axis of viewport
- y
Where to place piece on y axis of viewport
- z
z-coordinate of the piece. Has no effect if
op_scaleis0.- angle
Angle (on xy plane) to draw piece at
- axis_x
First coordinate of the axis unit vector.
- axis_y
Second coordinate of the axis unit vector.
- width
Width of piece
- height
Height of piece
- depth
Depth (thickness) of piece. Has no effect if
op_scaleis0.- envir
Environment (or named list) containing configuration list(s).
- ...
Ignored.
- scale
Multiplicative scaling factor to apply to width, height, and depth.
- res
Resolution of the faces.
- alpha
Alpha channel for transparency.
- lit
logical, specifying if rgl lighting calculation should take place.
- shininess
Properties for rgl lighting calculation.
- textype
Use
"rgba"when sure texture will have alpha transparency. Use"rgb"when sure texture will not have alpha transparency (in particularrgl's WebGL export will likely work better). IfNAwe will read the texture and figure out a reasonable value.
See also
See rgl-package for more information about the rgl package.
See rgl::material3d() for more info about setting rgl material properties.
See geometry_utils for a discussion of the 3D rotation parameterization.
Examples
if (requireNamespace("rgl", quietly = TRUE) && all(capabilities(c("cairo", "png")))) {
rgl::open3d()
cfg <- game_systems("sans", border = FALSE)$piecepack
piece3d("tile_back", suit = 3, rank = 3, cfg = cfg, x = 0, y = 0, z = 0)
piece3d("coin_back", suit = 4, rank = 2, cfg = cfg, x = 0.5, y = 0.5, z = 0.25)
piece3d("pawn_top", suit = 1, cfg = cfg, x = -0.5, y = 0.5, z = 0.6)
piece3d("die_face", suit = 3, cfg = cfg, x = -0.5, y = -0.5, z = 0.375)
piece3d("pyramid_top", suit = 2, rank = 3, cfg = cfg, x = 1.5, y = 0.0, z = 0.31875)
invisible(NULL)
}