par3d
can be used to set or query graphical parameters in rgl.
Parameters can be set by specifying them as arguments to par3d
in
tag = value
form, or by passing them as a list of tagged
values.
par3d(..., no.readonly = FALSE, dev = rgl.cur(), subscene = currentSubscene3d(dev))
open3d(..., params = getr3dDefaults(),
useNULL = rgl.useNULL())
getr3dDefaults()
r3dDefaults
tag = value
form, or a list of tagged
values. The tags must come from the graphical parameters described
below.TRUE
and there are no other
arguments, only those parameters which can be set by a
subsequent par3d()
call are returned.par3d
to restore the parameter values.
Use par3d(no.readonly = TRUE)
for the full list of parameters
that can be restored.When just one parameter is queried, its value is returned directly.
When two or more parameters are queried, the result is a list of
values, with the list names giving the parameters.Note the inconsistency: setting one parameter returns a list, but
querying one parameter returns an object.The r3dDefaults
variable is a list containing default
settings. The getr3dDefaults
function searches the user's
global environment for r3dDefaults
and returns the
one in the rgl namespace if it was not found there.
The components of the list may include any settable par3d
parameter, or "material"
, which should include a list
of default material3d
properties, or "bg"
,
which is a
list of defaults to pass to the bg3d
function.
par3d
are sufficient to determine where rgl would render
a point on the screen. Given a column vector (x, y, z)
in a subscene s
,
it performs the equivalent of
the following operations:
w = 1
, giving
the vector v = (x, y, z, 1)
.
M = par3d("modelMatrix")
as a product from right to left
of the following matrices:
par3d("scale")
.
par3d("userMatrix")
as set by the user.
s
has the "model"
set to "modify"
, a similar collection of
matrices using parameters from the parent subscene.
M
giving u = M %*% v
.
P = par3d("projMatrix")
and
multiplies the point by it giving P %*% u = (x2, y2, z2, w2)
.
w2
.
z2/w2
represents the depth into the scene of the point. Depending
on what has already been plotted, this depth might be obscured, in which case nothing more is plotted.
x2
and y2
values are used
to determine the point in the image. The par3d("viewport")
values are used to translate
from the range (-1, 1)
to pixel locations, and the point is plotted.
par3d
. par3d()
(no arguments) or par3d(no.readonly = TRUE)
is used to
get all the graphical parameters (as a named list).
By default, queries and modifications apply to the current subscene
on the current device; specify dev
and/or subscene
to
change this. Some parameters apply to the device as a whole;
these are marked in the list below.
open3d
opens a new rgl device, and sets the parameters as
requested. The r3dDefaults
list returned by the
getr3dDefaults
function will be used as default
values for parameters. As installed this sets the point of view to
'world coordinates' (i.e. x running from left to right, y from front
to back, z from bottom to top), the mouseMode
to
(zAxis, zoom, fov)
, and the field of view to 30 degrees.
Users may create their own variable named r3dDefaults
in the global
environment and it will override the installed one. If there
is a bg
element in the list or the arguments, it should be
a list of arguments to pass to the bg3d
function to
set the background.
The arguments to open3d
may include material
, a list
of material properties as in r3dDefaults
, but note
that high level functions such as plot3d
normally use
the r3dDefaults
values in preference to this setting.
If useNULL
is TRUE
, rgl will use a null
device. This device records objects as they are plotted, but
displays nothing. It is intended for use with writeWebGL
and similar functions.
rgl.viewpoint
to set FOV
and zoom
.rgl.useNULL
for default usage of null device.
r3dDefaults
open3d()
shade3d(cube3d(color = rep(rainbow(6), rep(4, 6))))
save <- par3d(userMatrix = rotationMatrix(90*pi/180, 1, 0, 0))
highlevel() # To trigger display
save
par3d("userMatrix")
par3d(save)
highlevel()
par3d("userMatrix")
Run the code above in your browser using DataLab