Nothing
grDevices::as.raster()
works, e.g. matrices.
(Fixes issue #196.)rglwidget()
.
Full support in R Markdown or knitr
requires a knitr
update
to version 1.42.12 or newer.String
type, settling on std::string
instead.subdivision3d()
, clipMesh3d()
and related functions now
(optionally) record the original faces associated with each new one
in a mesh$tags
addition to the output.Makevars.win
file was being produced incorrectly on
older Windows versions.rgl.window2user()
did not work correctly when multiple panes
were showing. This caused arrow3d()
to fail in some panes
(issue #354).selectpoints3d()
had a typo which was revealed by
warnings in recent R versions.getShaders()
was broken in 1.1.3.arc3d()
can now handle "arcs" that are straight lines along
a radius (issue #357).hover3d()
failed to display default labels in R (issue #362).shade3d()
didn't handle meshes with a mix of triangles and
quads properly when meshColor == "faces"
.subdivision3d()
and related functions now handle colors
properly.addNormals()
sometimes gave NaN
values due to rounding
error (issue #372).arc3d()
sometimes missed plotting the last segment of the arc (issue #369).R_NO_REMAP
has been defined and header includes have been
rearranged to prevent conflict between R internals and C++17
library. (Thanks to Prof. B. D. Ripley and G. Csardi for
suggested fixes.)hover3d()
has been added to display
"hover hints": labels next to points when the mouse
passes near them."texmode"
has been added
to control how textures are applied. The default is "modulate"
,
consistent with previous versions. If set to "replace"
,
the texture is displayed without any lighting effects or dependence
on the original color of the surface.demos
.rgl
now uses the glad
loader which will eventually allow
access to newer OpenGL functions in systems that support them.texenvmap = TRUE
material property is now supported
in WebGL.as.mesh3d.rglId()
and as.triangles3d.rglId()
methods
and the selectpoints3d()
, writeOBJ()
, writePLY()
and writeSTL()
functions did not handle indices
in the objects they were processing (issue #293).view3d()
now returns a lowlevel()
result so that
it will be handled properly in WebGL vignettes with
auto printing.transform3d()
or rotate3d()
changed the orientation
of a mesh3d
object with normals, the normals ended up
with the wrong sign. (Reported by Stephane Laurent.)scene3d()
(and hence rglwidget()
) did not save
the normals for unlit objects. When the objects were
also indexed, this prevented proper calculation of
front and back. This is fixed, and a warning is
issued if normals are not provided when needed.glVersion
before OpenGL was
initialized; this resulted in a segfault with the new
glad
loader, and may have been the cause of some older crashes
as well. This has been fixed.readOBJ()
did not handle comments properly.pch3d()
) caused rendering to fail in
rglwidget()
(issue #316).rgl.*
functions
have happened. Now deprecated: rgl.abclines
,
rgl.bbox
, rgl.bg
, rgl.clear
, rgl.clipplanes
,
rgl.close
, rgl.light
, rgl.lines
,
rgl.linestrips
, rgl.material
, rgl.open
,
rgl.planes
, rgl.points
, rgl.quads
,
rgl.select3d
, rgl.set
, rgl.setAxisCallback
,
rgl.sprites
, rgl.surface
, rgl.texts
,
rgl.triangles
, and rgl.viewpoint
.rgl.*
interface"
has been added.elementId2Prefix
, writeWebGL
rgl.material
is deprecated and no
longer contains the list of material types in its
argument list, rgl.material.names
and rgl.material.readonly
have been
added. rgl.par3d.names
and rgl.par3d.readonly
contain lists of properties that may be set or queried
in par3d()
.surface3d()
in
0.111.6 were incomplete.flip
has been added to surface3d()
to allow
front and back to be switched.setUserCallbacks()
.sprintf
from C/C++ code with calls to
snprintf
.surface3d
and rgl.surface
are now more flexible,
allowing any of the 3 coordinates to be a vector or matrix
as long as at least one is a matrix.material3d
can now specify an id
to query properties
for individual objects.rgl.material
is soon to be deprecated and no
longer contain the list of material types in its
argument list, rgl.material.names
and rgl.material.readonly
have been
added. rgl.par3d.names
and rgl.par3d.readonly
contain lists of properties that may be set or queried
in par3d()
.rgl.*
call (which is not recommended!) now match
the defaults in rgl::r3dDefaults
.surface3d()
to segfault.gl2psGetFileFormat
missed declaring
a prototype."blend"
has been added, to allow
various kinds of blending for semi-transparent objects
(issue #245).Buffer
object now handles reading of sparse
accessors.polygon3d()
function now chooses coordinates
automatically, as triangulate()
does (PR #262.)mtext3d()
and related functions such as
title3d()
now accept language objects
other than expressions, as plotmath3d()
always has
(issue #273).transform3d()
failed due to missing argument (issue #253).readOBJ()
is now more flexible in what kinds of
separators it will accept. (issue #258).adj
that was added in 0.108.3
was not rendered properly in rglwidget()
displays of
text. This sometimes caused text to disappear when it
was near the far limit of the display (issue #269).Rcmdr
.NULL
if asked to plot zero
items, rather than raising an error or crashing (issue #274).axis3d()
with no ticks or labels no longer triggers
an error, it now silently returns NULL
.rglwidget()
displays now act on "pointer" events,
not just "mouse" events, so they should be more usable
on touch screens and tablets (PR #240).scene3d()
objects didn't handle suppressed
axes properly, drawing the default axis instead (issuergl
would segfault when
the "fixed" font was not found.embedding = "modify"
for the model matrix
has changed. Now the centering step is only done for
embedding = "replace"
. In addition, various bugs
have been fixed.plot.rglscene()
now ends with the root subscene as
current. It also allows specification of open3d()
parameters in a list.MATn
types in Buffer
are returned as arrays with
dim c(n, n, count)
.plot3d.rglscene
method now passes ...
to open3d()
.setUserShaders()
function now allows arrays of 4x4 matrices as "uniforms", and allows additional textures to be specified.sprites3d()
now has the option of
rotating = TRUE
, to allow 3D sprites to rotate with
the scene.getShaders()
function to get shaders used in WebGL.rgl
is running within reprex::reprex()
and if so arranges that a screenshot will be included in the
output.rglwidget()
, rather than
constructing them on the fly. This incompatibly affects the use
of lights and clipping planes with user shaders: their data
is now stored in arrays rather than multiple numbered variables.pkgdown
2.0.0 has been released, a number
of internal workarounds to support the development version
have been removed.as.mesh3d()
methods for "rglsubscene"
and "rglscene"
.open3d()
now handles useNULL
and silent
arguments
passed in params
.playwidget()
may now include a
component specifying HTML dependencies.rglwidgetClass.readAccessor()
method to let other
code use the buffering....
argument: cylinder3d()
, and getBoundary3d()
.webshot2
is on CRAN, instructions for
installing it from Github have been removed.webshot2
snapshots are very slow, so
the default for the webshot
argument to snapshot3d()
now depends on the RGL_USE_WEBSHOT
environment
variable, using TRUE
if it is unset. (Reported by Prof. B. D. Ripley.)snapshot3d(webshot = TRUE)
now issues a warning and
reverts to using rgl.snapshot()
. akima
package is no
longer suggested.as.mesh3d.rglobject()
didn't handle objects with indices
properly.pop3d(tag = x)
did not always find the objects with tag == x
if they were not in the current subscene.front
and back
in rgl.material
and material3d
are now "filled"
, as documented in some
places.fog
setting wasn't handled properly by bg3d()
.col
is accepted as a synonym for color
in material3d()
and rgl.material()
.planes3d()
objects were not displayed consistently
in rgl
windows and WebGL displays, because the bounding
boxes were not computed consistently (issue #169).selectpoints3d(closest = TRUE)
selected too many points
when multiple objects were in the scene.knitr
and rmarkdown
, blank plots could be shown
when par3d(skipRedraw=TRUE)
was set (issue #188).sprites3d()
weren't lit correctly
in WebGL (issue #189)."pretty"
got lost when scenes were redrawn.snapshot3d()
results (issue #197).plotmath3d()
.rglMouse()
did not set the default value of the drop-down
selector properly (issue #213).merge.mesh3d()
, used by filledContour3d()
, didn't handle
colors properly (issue #212).bg3d(sphere = TRUE)
has been fixed (issue #207).rgl
scenes didn't appear (reported by
Dieter Menne.) A workaround has been added.rglwidget()
, axis labels were not always
displayed, and did not move with solid bounding box
decorations properly (issue #206).lines3d()
using both missing values
and transparency did not draw properly (issue #234,
originally reported by Gaspar Jekely).rglShared()
example failed when crosstalk
was uninstalled.getBoundary3d()
function to extract the boundary
edges of a mesh.tag
, a string associated
with each object. The value is reported by ids3d(tags = TRUE)
and
may be used to select objects in most functions that use ids,
but otherwise is
largely ignored by rgl
. The tagged3d()
function returns
information on tags.indices
parameter, similar to the
indices in mesh3d
objects.Buffer
object, based on glTF design, for holding binary
data for rglwidget()
.text3d()
's adj
parameter.adj
, pos
and offset
to
sprites3d()
.pos
values of 0
(at specified
location), 5
(in front of it), and 6
(behind it) in
text3d()
, sprites3d()
and plotmath3d()
.crosstalk
is now a Suggested package, rather than
a required one.Makevars.ucrt
file has been modified with
contributions from Tomas Kalibera to work with his winutf8
build of R.bgplot3d()
no longer pauses for each page when running
examples.deldir
version 1.0-2 is incompatible with rgl
. Added
the checkDeldir()
function to avoid running it.shade3d()
treated texture coordinates like colors, and
duplicated the first one for the whole face when meshColor = "faces"
was chosen.
Instead, they are now treated like vertex coordinates.
(Reported by Michael Sumner in issue #145).asHomogeneous()
, asEuclidean()
etc. more consistent.as.rglscene()
generic has been added, though no methods
are defined in this package.downlit
0.4.0 has been released with support for rgl
, so instructions
for installing the devel version have been removed.--static
flag to configure script for FreeType
installation. (Suggestion of Simon Urbanek and Prof. Brian Ripley.)shade3d()
, wire3d()
and dots3d()
overrode
"front"
and "back"
material settings in mesh objects.rglwidget()
handling of bounding box decorations had
several bugs.rgl
could not find routines in the DLL on some Windows
installs (Issue 148.)expect_known_scene()
function to work with
testthat
.testthat
tests.par3d("mouseMode")
, corresponding
to actions to take when no button is pressed.setUserCallbacks()
function to allow
user-specified mouse callbacks in WebGL code.bboxdeco
objects.margin
and floating
,
with objects that move as the bounding box changes.
See ?mtext3d
for details.mtext3d()
argument order has changed.setAxisCallbacks()
function to allow
user-specified axis drawing routines.as.tmesh3d()
function.shiny
and manipulateWidget
packages have been changed from imports
that are always loaded to suggested packages that
will only be loaded if needed. This will reduce the
"footprint" of rgl
for users who don't use them.par3d("useFreeType")
and the result is saved.knitr
has now
been removed.RGL_DEBUGGING
environment variable
has changed: now it must look like TRUE
to trigger
Javascript debugging mode.webshot = TRUE
has been added to movie3d
(issue #113).WM_PAINT
handler should be more tolerant
of code called while painting.as.mesh3d.default()
can create segments. (Contributed
by Michael Sumner.)compare_proxy.mesh3d()
has been modified to be
compatible with both current and upcoming versions of
waldo
.rgl
was loaded. The workaround is now skipped when
RStudio is detected. Use options(startQuartz = TRUE)
in RStudio before loading rgl
to run it,
or options(startQuartz = FALSE)
to suppress it.rmarkdown
documents
were produced at the wrong size.example(playwidget)
, issue #102)testthat
errors
in other files accidentally introduced a new error
in coloring meshes in rgl
: now fixed.readOBJ()
was broken by the 0.106.x changes.merge.mesh3d()
failed for meshes containing points or
segments.pkgdown
compatibility have been added. See vignette("pkgdown")
. drape3d()
, to "drape" objects across a mesh.
(Contributed by George Helffrich.) shadow3d()
to project one mesh onto another. facing3d()
to subset a mesh to parts facing
in a particular direction. as.mesh3d.default()
have changed accordingly, and a new function mesh3d()
has been added. inst/NEWS
file so it is visible here.asHomogeneous2()
and asEuclidean2()
to work directly
with 3 x n
and 4 x n
matrices. rglExtrafonts()
to load additional fonts for
use with FreeType rendering. Requires the extrafont
package.rgl.*
functions. filledContour3d()
. point_antialias = TRUE
now
gives round points in rglwidget()
displays. rglwidget()
is no longer used. rgl
windows are grouped,
based on code by Ivan Krylov. filledContour3d()
now accepts levels in decreasing order. mergeVertices()
and as.mesh3d.rglId()
have been improved.r3dDefaults$useFreeType
is now set to FALSE
on
Windows, so that system fonts will be used by default.family = "symbol"
has never really worked,
and is no longer recommended.compare_proxy
method in case a recent testthat
is being used.rglwidget()
once again adapt
to the viewer window in RStudio (issue #74). Biarch
to DESCRIPTION
so both architectures are built on
Windows. snapshot3d()
(reported by Tony Hirst:
https://github.com/dmurdoch/rgl/issues/21 .) rgl
and the quartz()
device
caused a segfault (see issue #27). Added workaround.
(reported by Rich Heiberger,
https://github.com/dmurdoch/rgl/issues/27). lwd > 1
) line segments in
rglwidget()
. Makevars
files caused builds using a
parallel make to fail. rglwidget()
, background images could cause other parts of
the display to disappear. knitr
documents will now be simplified
in versions of knitr
that incorporate its PR#1892. webshot
argument to snapshot3d()
, to use the
webshot2
package (currently only available from
Github; see ?snapshot3d
for details) to produce snapshots
even on headless systems. rwinlib
during the build. (Contributed by Jeroen Ooms.) shinySetPar3d()
now accepts a list, as returned in
input$par3d
by shinyGetPar3d()
, as input. (Suggestion
of Yohann Demont.) filledContour3d()
changed in
R versions previous to 3.6.0, as hcl.colors()
didn't
exist in those versions. (Reported by Daniel Baston.) rgl
will now
work in R versions from 3.3.0 up. snapshot3d()
now defaults to writing to a temporary file
instead of failing if no filename is given. snapshot3d()
and rgl.snapshot()
now return the
output filename invisibly. rglwidget()
no longer tries to include both a snapshot and
a WebGL scene: it can only do one or the other. inst/useNULL
,
so options(rgl.useNULL=TRUE)
before loading rgl
will cause
it to not use X11 at all. drat
repository to hold the unreleased webshot2
package. thigmophobe3d()
, mergeVertices()
and
as.mesh3d.default()
have been fixed. --disable-opengl
configure option to run entirely without
OpenGL (to support Apple M1 machines without GLX,
and others which don't have X11 or OpenGL devel
files installed). mathjaxr
, which caused issues on Debian. "shinyMouse"
demo. open3d()
now has class "rglOpen3d"
,
and knitr
will use this during auto-plotting. rglwidget()
that caused it to fail to display
text if too many strings were in the same object.
(Reported by Yohann Demont.) lintr
. addNormals.mesh3d()
method, added angleWeighted
argument, defaulting to TRUE
. rglwidget()
displays of transparent spheres. clipObj3d()
, contourLines3d()
and filledContour3d()
functions. clipMesh3d()
function to make it more consistent
with the above three functions. The main incompatibility
with the version in 0.100.26 is that only vertex
coordinates are now passed to the clipping function. merge()
method for "mesh3d"
objects, and use it in
filledContour3d()
. writeWebGL()
style controls. knitr
hooks, so support for rgl
should be
very similar to support for standard graphics output. rglwidget()
. It has also been
split into multiple files which are joined with
"minification" on installation. makeDependency()
to support
Javascript library in source. r3dDefaults
now sets material$fog
to TRUE
, and bg$fog
to
"none"
. (In rgl
, fog must be set both in the background
and in the object to display.)
The formula used in WebGL is slightly different than in the
internal R display.) getr3dDefaults()
now has two optional arguments to specify
what to retrieve, e.g. getr3dDefaults("material", "color")
to retrieve r3dDefaults$material$color
, with NULL
if either part is missing. fogScale
parameter to bg3d()
and rgl.bg()
to
allow increased or decreased fog. fastTransparency
parameter to spheres3d()
and
rgl.spheres()
, to allow them to be drawn more quickly
when transparency is used. "mesh3d"
methods for shade3d()
, wire3d()
, and dots3d()
have been rewritten to share code, allowing meshes
to have different front and back material properties. cur3d()
, set3d()
, close3d()
and ids3d()
have been
added. Generally, users should use these rather than
rgl.cur()
, rgl.set()
, rgl.close()
and rgl.ids()
. snapshot3d()
now has optional width and height parameters for the saved snapshot. rglwidget()
displays. meshColor
variable. "snapshot"
knitr
option to use when autoprinting. snapshot3d(width = NULL, height = NULL)
. as.mesh3d.rglobject()
method. clip_to_density
argument to plot3d.lm()
method. rglwidget()
now saves a copy of the original scene,
so it can be reconstructed or modified later. valgrind
, and problems seen
on systems with no functional Asymptote or Pandoc. rgl
widget is
included in a Gitbook
has been fixed. writeASY()
for compatibility with Asymptote
2.65. (Reported by Pavel Stříž.) pop3d()
has been modified slightly so that it no
longer opens a new window if none is already present setGraphicsDelay()
function to work around bug
in macOS Catalina XQuartz. "depth_mask"
material property was being ignored
in rglwidget()
. rgl.snapshot()
and rgl.postscript()
could crash if a zero
length filename was passed to them. rgl.attrib(id, "normals")
so the normals will be returned
whether or not the object is lit. (Suggestion of Tyler
Morgan-Wall) rglwidget()
are now independent of set.seed()
,
using code borrowed from Shiny for our own private RNG. getr3dDefaults()
now gets values from rgl::r3dDefaults
if they are not present in the user's r3dDefaults
list. bgplot3d()
now uses the background colour from argument
bg.color
(defaulting to the background color from
getr3dDefaults()
) rather than always choosing white.plot3d.rglscene()
that caused restored subscenes to
ignore the mouse. next3d()
no longer messes up when a user changes active
subscenes. rgl
code. ?rgl.init
help topic to describe initialization
issues. par3d("windowRect")
. Xvfb
. demo(stereo)
now uses plot.raster()
rather than image()
. tkrgl
package have been moved into rgl
. rgl
null device. anaglyph()
function in the "stereo"
demo now prints
information about failed pixel reads. inst/slowTests
so that
running them is optional (and the CRAN checks will go faster).readOBJ()
that affected reading texture coordinates. rgl.pixels()
, rgl.snapshot()
and snapshot3d()
now read from the
back buffer, which should increase reliability. windowRect
: viewport
was not
always updated. pkg-config
but no freetype2. bg3d()
and bgplot3d()
to wipe out
fog setting. writeASY()
to work with a more recent version of
Asymptote. Use ver244 = TRUE
for the older version. plot3d(..., type = "s", add = TRUE)
chose a bad default
radius for the spheres -- possibly even zero. planes3d()
could fail to draw the plane if it intersected a
vertex of the bounding box of the scene. rglMouse()
did not automatically
link to an rglwidget()
. meshColor
as an argument to tmesh3d()
, qmesh3d()
and dot3d()
; changed default to no longer give warning if
meshColor
is not specified. all.equal()
method for "mesh3d"
objects, so that
changes caused by the above are ignored. tri_to_keep
argument to as.mesh3d.ashape3d()
for
compatibility with conflicting method from nat
package
version 1.8.11. std::bind2nd
and std::ptr_fun
as requested by CRAN. Other changes to remove compile
warnings also made. clipMesh3d()
to allow smooth clipping of mesh objects plot3d.lm()
method handle a larger variety of models, by
allowing for curved surfaces. as.mesh3d.default()
method to convert triangles or quads
to a "mesh3d"
object. as.triangles3d()
generic with methods to convert "mesh3d"
objects into matrices representing triangles. as.triangles3d.rglId()
and as.mesh3d.rglId()
methods to
convert displayed objects to usable data. open3d()
now signals an error if unnamed parameters are used toggleWidget()
now makes it easier to initialize the scene with
some objects hidden.uname
still work. (Suggestion of Settra Khemri.) thigmophobe3d()
to try to keep up with changes in
plotrix::thigmophobe()
. rgl.postscript()
from writing files to current directory valgrind
shinyGetPar3d()
and shinySetPar3d()
functions for Shiny
interaction. thigmophobe3d()
function to place labels away from
other points using plotrix::thigmophobe()
. arc3d()
function to draw spherical arcs. "polygon_offset"
material property, to allow lines to be drawn
on surfaces. plot3d()
, persp3d()
and as.mesh3d()
methods for
"triSht"
and "tri"
classes (produced by interp
and tripack
packages.) plot3d()
methods for objects of class "formula"
and "lm"
and a persp3d()
method for objects of class "formula"
have been added. (A bug in the implementation of
as.mesh3d.deldir()
was found and fixed during the
latter addition.) as.mesh3d()
, plot3d()
and persp3d()
methods for "ashape3d"
objects from the alphashape3d
package have been added. par3d("userProjection")
, to allow the user to supply
a change to the projection after all other display calculations
have been done. par3d("activeSubscene")
, to allow mouse callback
functions to determine which subscene was clicked. "highp"
support to fragment shader in rglwidget()
.text3d()
and related functions: dropped deprecated
argument justify
, added pos
and offset
like base graphics
text()
. "mesh3d"
objects: added print methods,
added meshColor
argument to wire3d()
and shade3d()
to control how
colors are interpreted, added "rgl.meshColorWarning"
option to control warnings about these changes.plot3d.mesh3d()
method now has the same default
for aspect
as the default method. pch3d()
now allows separate color
and bg
specifications
for each point. In addition, the default for the "lit"
material property is now FALSE
, so by default filled
symbols will match the requested colour regardless of
lighting. manipulateWidget::combineWidgets
function
when putting multiple objects into a pipe. rglwidget()
. playwidget()
is no longer an S3 generic function. pkg-config
(code contributed by Dirk Eddelbuettel.) playwidget()
has been initialized but it can't find
the rglwidget()
that it is controlling (likely due to a
typo somewhere), it now throws an alert message. persp3d.deldir()
method didn't display labels properly. rgl
messed up the S3
methods system. (Reported by Gregory Jefferis.) rgl.bbox()
was
returning 0/1 instead of the id of the axes. pch3d()
was failing in rglwidget()
for some shapes.
(Reported by Luca Scrucca.) par3d(mouseMode = "none")
was not implemented properly,
so appeared to be a no-op. rgl
to crash. rchk
have been fixed. rgl.*
functions) were not handled properly.
(Reported by Ty Tuff.) crosstalk
package. See ?rglShared
and
vignette("WebGL")
for details. rglMouse()
function to allow the mouse
mode to be changed in a WebGL display.rgl.postscript()
)
updated to version 1.4.0. rglwidget()
to fail to work
in a flexdashboard()
display. ioslides
, shiny
, etc.) in scene
when rglwidget()
is called. html_document
, ioslides_presentation
and
slidy_presentation
. useSubscene3d()
now returns the id of the previously active subscene,
to make temporary changes more convenient.renderRglwidget()
and renderPlaywidget()
now have an optional argument
outputArgs
for use in dynamic R Markdown documents. rglwidget()
now warns if an object has too many vertices."centers"
attribute now refers to the individual facets
of spheres, rather than the whole sphere. Use "vertices"
for
that. rglwidgetClass
in Javascript. vertexSetter()
can now set plane parameters. platform.cpp
so it works with __STRICT_ANSI__
defined. rglwidget()
code using a vertex shader.
Line endings and joins are rounded, not squared as in OpenGL. ageControl()
or vertexControl()
be duplicated in the original has been removed. par3dinterp()
did not always choose the best direction for interpolation
of the userMatrix
. toggleWidget()
function didn't work properly in Shiny. readOBJ()
to fail;
added support for reading normals and texture coordinates. axes3d("bbox")
didn't send parameters to bbox3d()
. snapshot3d()
and writeASY()
so that they don't
change the working directory. add = FALSE
argument to persp3d.deldir()
. "shiny.tag"
objects are now supported as inputs to
playwidget()
, so that rglwidget()
values can be
wrapped in htmltools::div()
to set their style. figWidth()
and figHeight()
functions for sizing
rgl
plots in R Markdown documents. layout3d()
handled multi-row cells incorrectly. (Reported
by Felix Carbonell.) subsetControl()
, and added
toggleWidget()
texture
argument to persp3d.function()
to texcoords
for consistency with other functions, and
to avoid a collision with the "texture"
material property. plotmath3d()
function, and set text3d()
to
use it when necessary. fixedSize
argument to rgl.sprites()
and related
functions. material3d()
now silently ignores attempts to set
read-only properties. setUserShaders()
for user-specified shaders
(currently for WebGL only). demo("rglExamples")
to display all the examples
in the rgl
help in a collection of web pages.
This showed up a number of small bugs, which have been
fixed. movie3d()
now optionally tries the R magick
package first,
then the external ImageMagick v7 command magick
before trying convert
. (The external change
suggested by Earl F. Glynn.) par3d()
reports on the version of OpenGL that it sees
(as component "glVersion"
). rglwidget()
. addNormals()
gave an error if the mesh it was working
with had degenerate triangles or quads. (Reported
by Rolf Turner and Graham Griffiths.) playwidget()
s. pch3d()
(reported by Gina Joue). as.mesh3d()
and plot3d.deldir()
and persp3d.deldir()
methods to
allow plotting of surfaces defined by irregular collections of points.rglToLattice()
and rglToBase()
functions to compute Euler angles
for the lattice::wireframe()
, lattice::cloud()
, and base graphics persp()
functions. arrow3d()
(based on the function of the same name in the
heplots
package). pch3d()
to give an approximation
to plotting symbols using pch=<number>
in
base graphics. spin3d()
, par3dinterp()
, play3d()
and movie3d()
. writeASY()
for output in Asymptote format,
which will allow inclusion in PDF files. rgl.attrib.info()
to display information about
object attributes. rglwidget
code back into rgl
. "rglLowlevel"
or "rglHighlevel"
(using the new lowlevel()
or highlevel()
functions) to indicate that a low- or high-level plotting function
has been called. If the new option
"rgl.printRglwidget"
is TRUE
, printing objects
of either class will trigger automatic
printing of the rgl
scene using rglwidget()
. scene3d()
to allow them to be used in rglwidget()
. rgl.postscript(fmt = "tex")
generated code.
(Thanks to Uwe Ligges for the problem report.) cylinder3d()
now defaults to a rotation minimizing local frame. FOV = 0
). jsonlite
so that the
new faster matrix code will be used. subdivision3d()
have
been exported for use on their own. rglwidget()
code now supports textures on spheres.
It now uses the same mesh as the one used inside R.
(The lack of support was pointed out by Justin McManus.) rglwidget()
code now works to make more
careful use of this finite resource, so that large
numbers of rgl
scenes can be present on a single
web page without exhausting it. rgl.pixels()
to attempt to avoid segfault on
OSX. (Thanks to Greg Jefferis for testing and workaround.) aglrgl.so
) has been
dropped; it appears not to work in Yosemite and El Capitan. rglwidget
package (though
the functions in rgl
still work). rgl.init()
fails, continue with the NULL
device (with warnings). scene3d()
now returns the normals and offsets of "planes"
objects, as with "clipplanes" objects. It still returns the triangles from embedding the
planes in the most recent subscene. scene3d()
. show2d()
to allow a 2d plot on a quadrilateral
in a scene. matrixSetter()
function to allow multiple controls to
modify one matrix. vertexSetter()
function to allow easier access to
vertex attributes."rgl.keepopen"
; replaced it
with "rgl.newwindow"
. accumulate
argument to the subset WebGL controls. nticks
argument to bbox3d()
was never used and has
been removed. Use xlen
, ylen
or zlen
. js::jshints()
function to clean up the
WebGL Javascript code. values = NULL
in propertySetter()
and vertexSetter()
to allow code to directly set values. scene3d()
. rgl.attrib()
and are stored by scene3d()
.rgl.bbox()
(and hence bbox3d()
, decorate3d()
, plot3d()
, etc.)
did not return the correct id for the bounding box decoration. xlen
etc. to zero in bbox3d()
or rgl.bbox()
now
(correctly) suppresses tick marks. (Reported by
Philipp Angerer.) normals
or texcoords
in both a
"mesh3d"
object and a call to shade3d()
to display
it caused an error; now the shade3d()
specified
value has priority if override = TRUE
(the default). persp3d()
and plot3d()
did not work properly with a shared mouse. (Reported by
Marian Talbert.) knitr
to fail to initialize
properly. This required adding the setupKnitr()
function,
which should be called at the start of each vignette.
It is not called automatically. rgl
to
fail to compile when libfreetype
2.6 was linked. writePLY()
(reported by Kurt Hornik). subsetSlider()
, subsetSetter()
, clipplaneSlider()
,
propertySlider()
, ageSetter()
, propertySetter()
, par3dinterpSetter()
and
toggleButton()
functions to output HTML/Javascript controls for WebGL. hook_rgl()
and hook_webgl()
functions, based on the knitr
functions. plot3d()
and persp3d()
. GramSchmidt()
function (request of Remko Duursma) readOBJ()
, with a very limited ability to read OBJ
shapefiles. writeWebGL()
, the string %prefix%
will be replaced in it by the prefix argument. writeWebGL()
now outputs a Javascript global variable named
"<prefix>rgl"
of class "rglClass"
that allows access to many of the
scene internals. (Inspired by patch submitted by Jeff Allen.) rgl.getMouseCallbacks()
and rgl.getWheelCallback()
, and
may be included in WebGL output. writeWebGL()
now outputs information on object ids to allow
them to be re-used in multiple figures on the same page.
See the reuse
parameter and attribute of the result. "canvas"
element in
writeWebGL()
output to "rglWebGL"
. rgl.snapshot()
now evaluates the top
argument after filename
and fmt
, so windows created when those are evaluated don't
overlay the rgl
window. (Suggestion of Keith Jewell.) writeWebGL()
now includes an argument commonParts
, to allow
omission of common code in multi-figure displays. template
is NULL
in writeWebGL()
, no template file is used. persp.function()
method is now smarter about setting default
axis labels. triangulate()
now supports polygons expressed with 3
coordinates (though they are still assumed to be planar). par3d()
now includes "listeners"
, a list of subscenes that
respond to mouse actions in the current subscene. abclines3d()
that caused it to skip lines that passed
through the corners of the bounding box. (Reported by Sven Laur.) NULL
device did not handle changes to par3d("windowRect")
properly. ignoreExtent = TRUE
were not plotted. writeWebGL()
did not display the bboxdeco
properly when working
in a subscene. rgl.snapshot()
now works with the NULL
device (but produces a
black snapshot). This allows testing with RGL_USE_NULL
. bgplot3d()
and legend3d()
functions. par3d("modelMatrix")
from 0.94.
This affects rgl.projection()
as well. NULL
device now does not make any spurious OpenGL calls. persp3d()
and plot3d()
, to allow
surfaces to be plotted just by specifying the function. writeWebGL()
to fail when a NULL
device was active. par3d()
or
rgl.setWheelCallback()
.pop3d()
and rgl.pop()
: the type is
now ignored if id
is non-zero. par3d("modelMatrix")
no longer includes the observer translation par3d()
, par3dinterp()
, and spin3d()
functions now
have arguments dev and subscene to specify where they apply. CanvasMatrix.js
(used by
writeWebGL()
) at the request of the Debian administrators. NULL
device was not removed from the device list when
it was closed. (Reported by Henrik Bengtsson.) rgl.material()
(for textures), rgl.postscript()
and rgl.snapshot()
now call normalizePath()
on filenames, so tilde expansion should
be supported. surface3d()
and persp3d()
. (Problem found by Graham Griffiths
using polar coordinates; all r=0
points were at the same location.) rgl.attrib()
will return them even if they were calculated by rgl
. * scene3d()
now records light settings. par3d()
could generate an error if an unnamed list was passed in. material3d()
lost settings for textures locator()
input. rgl.attrib()
showed up in writeWebGL()
.
(Reported by Brian Ripley.) clipplanes3d()
function to implement clip planes. (Still
only partially implemented.) rgl
namespace
on some OSX compiles. rgl
C++ functions and classes are now in namespace "rgl".
Others have prefix rgl_, with the exception of gl2ps functions,
which all have that prefix, and FTGL functions, which generally
have an FT prefix. rgl
DLL are now registered within the DLL,
and on systems that support it, all entry points other than the
registration function are hidden. writeWebGL()
and the other write methods did not handle material
information properly after 0.93.975. scene3d()
function now records complete information about the
bounding box and the background. rgl
declares most of its C++ objects in the global namespace.
Recently this has caused clashes with the igraph
package, which
does the same, and which also has a Shape class. As a temporary
workaround the rgl
class has been renamed to "rglShape"
. A full
rgl
namespace will eventually be added, with only the API functions
left in the global namespace. rgl.texts()
without a window failed because it queried the window
before opening it. rgl
was on the search path; now it may be
imported but not attached. Similarly, r3dDefaults
need not be on
the search path. writeWebGL()
now forces the position attribute to location 0, a
recommended optimization strategy. The color attribute is
forced to location 1..check3d()
and rgl.select()
have been exported,
as they were used by the car package. rgl
now prints a warning when a requested font is unavailable and the
default font is substituted.writePLY()
had errors writing points and lines. triangulate()
, polygon3d()
, extrude3d()
and turn3d()
for display of shapes based on two-dimensional polygons or curves. rgl.useNULL()
. rgl.cur()
; added function
rgl.dev.list()
to list all open devices. rgl.useNULL()
, and don't run invisible
animations. writeOBJ()
(issue
4732, reported by Alejandro Baranek). identify3d()
function rgl
version into the WebGL file CHECKGLERROR
, so that setting USE_GLGETERROR
to 1 in
R.h
will enable detailed checking writeOBJ()
(reported by Matthias Zeeman), writePLY()
and writeSTL()
. aspect3d()
(called by plot3d()
) caused the scene to be redrawn,
even if par3d("skipRedraw")
was TRUE
. addNormals.mesh3d()
failed on objects when the matrices
of triangles or quadrilaterals had zero columns. rotate3d.mesh3d()
did not transform normals properly writeWebGL()
function produced fragment shaders that would not
work in some browsers (e.g. Firefox and Chrome with the ANGLE
WebGL engine). rgl.material()
before any rendering caused a crash on OSX.
(Reported by Dan Tenenbaum.) writeWebGL()
handles lighting properly. Based on code contributed
by Alexander Senger. writeWebGL()
did not handle snapshot=FALSE
properly. (Reported
by Yihui Xie.) /usr/X11/bin
at the head of the path
when looking for freetype-config writeWebGL()
function, to allow scenes to be viewed in a web
browser. rgl.save.texture()
: textures are not saveable! cylinder3d()
.cylinder3d()
objects.writeWebGL()
.rgl.light()
and light3d()
did not return the light ID value.configure.win
that was causing problems
on the CRAN WinBuilder systemreadSTL()
and writeSTL()
functions writePLY()
and writeOBJ()
functions scene3d()
function selectpoints3d()
function to select points from the scene. expand
argument to decorate3d()
and axes3d()
base
argument to spin3d()
result cylinder3d()
res_name="rgl"
and res_class="R_x11"
to the WM_CLASS
property of X11
windows. (Contributed by Philip Johnson.) setHook()
changes rgl
window now handles ESC
key presses. During selection
and play3d()
they abort the process; otherwise they are ignored. R_pretty0()
function from R sources to avoid warning. writeWebGL()
did not render semi-transparent surfaces properly.
(Reported by Robert Esswein.) rgl.save.texture()
to get texture from an object. Sweave()
support through the rgl.Sweave()
driver and the Sweave.snapshot()
function.rgl.abclines()
, rgl.planes()
, abclines3d()
and planes3d()
to draw
lines and planes intersecting with the bounding box.rgl.attrib.count()
and rgl.attrib()
(and internal function
rgl.getmaterial()
) added to allow objects in the scene to be examined. configure.win
for bi-arch compatibility. Windows installers can
set HAVE_PNG
to a non-empty value, and rgl
will look for
the libpng files in the default LOCAL_SOFT
location when installing. "depth_mask"
and "depth_test"
material properties, to allow control
over how objects are obscured by each other. plot3d()
was modified to use this instead of manually setting axis
locations and using box3d()
to draw a box, allowing resizable labelled
axes. rglmath.h
that were causing
problems in an old version of gcc on Solaris. rgl.postscript()
now adjusts the size of text following the cex
setting.
The font
and family
settings are still ignored. src/osx
. options(rgl.antialias=0)
to disable it. divide.mesh3d()
in handling normals. rgl.ids()
did not return all object ids as documented. --merge-multiarch
on Windows R_ARCH*
macros to configure.win
for Win64 compatibility rgl.texts()
: zero-length texts argument caused crash.
(Reported by Michael Friendly.) rglmath.h
startTime
argument to play3d()
and movie3d()
. configure.ac
as suggested by Jens Elkner. "alpha"
component of the material
properties to be messed up. (Bug #809) Xvfb
errors in rgl.pixels()
examples
and demo. keepVars
argument to cylinder3d()
, for debugging or special
effects. BugReports
field to DESCRIPTION
. FOV
to be set to 0, for an orthogonal projection. seq(along=...)
to seq_along(...)
. cylinder3d()
. addNormals()
generic, to add normals for smooth surface rendering. cylinder3d()
function, to make cylindrical or "tube" plots. math.h
, for
compatibility with Sun compilers (contributed by Brian Ripley). shade3d()
, wire3d()
and points3d()
methods. material3d("color")
bug introduced in 0.82. "mesh3d"
and "shapelist3d"
; "qmesh3d"
is only kept for
back compatibility.open3d()
. rgl.pixels()
example for weird displays. demo(stereo)
to add sync in X11: X windows seemed to grab
images before they were redrawn. rgl.pixels()
to read the generated image, and demo("stereo")
to illustrate its use."point_antialias"
, which causes points to be
drawn as smooth circles, and "line_antialias"
, which causes
lines to be antialiased. "lwd"
for line width; "size"
now applies only
to points. movie3d()
gains a "type" argument to set the output type, and the
convert
argument is more flexible. rgl.snapshot()
gives more informative error messages when libpng is
not available. axis3d()
now uses format()
rather than as.character()
to give
nicer looking labels. warning()
to report messages, rather than popups or REprintf
. open3d()
: "..." was being ignored. qmesh3d()
: homogeneous=FALSE
coordinates were not
handled properly. ?rgl
example to display this file. rglFonts()
was being set at install time, but it should be set at load
time. mouseCallbacks()
demo, to show R implementations of standard
mouse handlers, multiple connected windows, stereo view, etc. rgl.set()
, to allow temporary changes
to focus without changing window labels. par3dinterp()
. rgl.pop()
could cause corruption when multiple windows were open. "windowRect"
to par3d()
parameters to allow window size to be
controlled from R.assert()
macro in place to avoid crashing R. par3d("windowRect")
returned garbage if there was no window open. persp3d()
and plot3d()
sometimes miscalculated ranges involving NAs. select3d()
and rgl.select()
produced a very inefficient test function.rgl.texts()
and text3d()
can now handle font and size specifications
using the FreeType library on any platform, or GDI on Windows. adj
is supported both horizontally and vertically in drawing text. mouseMatrix
that caused disappearing views. rgl.pop()
was very slow when given a long list of ids. play3d()
, movie3d()
, par3dinterp()
, and spin3d()
functions, with flag demo par3d("userMatrix")
to generate NaNs and fail Xvfb
on macOS problems rgl.setMouseCallbacks()
to allow user actions #include
s Xvfb
rgl_init()
for R 2.6.0 compatibility material3d()
qmesh
objects, but (at present) subdivision3d()
removes them material3d()
now preserves the values of unspecified parameters (as documented,
but not previously functioning) clear3d()
can now reset material properties to the defaults, and
open3d()
does this. rgl.surface()
, surface3d()
and
persp3d()
, by specifying matrices for x and y coordinates example(persp3d)
. rgl
help topic. rgl.postscript()
in Linux, added text support to it snapshot3d()
wasn't being exported, and snapshots were from the back buffer persp3d()
partially ignored add=TRUE
plot3d.qmesh3d()
did not return result grid3d()
, added nticks
argument to bbox3d()
, axis3d()
and axes3d()
. par3d("scale")
type="s"
to plot3d()
to draw spheres List
and ListIterator
internally rgl.viewpoint()
default to be compatible with r3dDefaults
rgl.pop()
; added rgl.ids()
to report on them. "ignoreExtent"
option to par3d()
: objects plotted when this is true
are ignored when calculating the bounding box axis3d()
, axes3d()
, box3d()
, mtext3d()
, title3d()
functions from djmrgl
for
annotating plots. plot3d()
high level plot function material3d()
, which can both set and query material properties; changed
most *3d
functions so they leave material invariant across calls. open3d()
to set background and material defaults aspect3d()
to control the aspect ratio of the bounding box. xAxis
, yAxis
and zAxis
mouse modes, set zAxis
as r3d
default. persp3d()
function REprintf
in X11 and OSX rgl_init()
failed viewport
argument in user2window()
and window2user()
calls rgl_init()
call fails, the package will still load with a warning (but
most function calls will result in errors). par3d("scale")
to handle aspect3d()
operations internally. ellipse3d()
generic and methods for drawing confidence ellipsoids decorate3d()
to draw all the decorations, plot3d.qmesh3d()
method. rgl.primitive()
now does sanity checks on inputs "all"
and "viewpoint"
to rgl.clear()
and clear3d()
xyz.coords()
in all functions taking x, y, z coordinates, allowing
matrix or dataframe arguments (among others) par3d(skipRedraw=TRUE)
to allow drawing to be done without
being rendered linestrip
rgl.bringtotop()
, added stay option (win32) djmrgl
rgl.user2window()
and rgl.window2user()
functions rgl.close()
, rgl.quit()
crashed on X11 occasionally. rgl.surface()
to allow surface over any coordinate plane. r3dDefaults
variable to allow user to set defaults zlib
and libpng
sources Win32GUIFactory
(removes warning) .C()
calls using PACKAGE="rgl"
Maintainer.mk
using correct zlib
version library.dynam.unload()
.First.lib()
lpng
and zlib
from source tree zlib
and lpng
on win32 demo(rgl)
rgl/src/Makefile
LDFLAGS
for OpenGLU
library rgl.sprites()
'radius' bug fixed AutoDestroy
and used through Ref
's free
'd when they become unused
e.g. texture objects are created. setversion.sh
project.mk
, win32.mk
and x11.mk
in src/build
changed
now a single variable MODS will extend. rgl.dll
now contains an R compliant Resource information
generated by R perl
script rgl_quit()
and lib_quit()
multiple times
win32lib.cpp
: added dllmain
that calls rgl_quit()
on process exit devcpp
IDE R CMD check
runs through with 2 WARNINGS
(according to latex
, and codoc
) x11gui
: glXChooseVisual()
part fixed rglview.h
man/maintainer.Rd
maintainer information rgl.quads()
: enum
id was broken, fixed ("quads" -> "quadrangles") inst/
directory win32/vc
: fixed fpu control word precision to remain on 64 bit
links with fp10.obj
rgl_init()
, rgl_quit()
: explicit client initialization setup.bat
: build setup for windows gui
environment system.file( <subpath>, package="rgl" )
in examples to retrieve texture files enum
typesrgl.sprites()
autoUpdate
, modified win32 main loop, on hide, autoUpdate
disabled, on show enabled Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.