rglwidget(). Full support in R Markdown or
grDevices::as.raster()works, e.g. matrices. (Fixes issue #196.)
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.
rglnow uses the
gladloader which will eventually allow access to newer OpenGL functions in systems that support them.
texenvmap = TRUEmaterial property is now supported in WebGL.
as.triangles3d.rglId()methods and the
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.
rotate3d()changed the orientation of a
mesh3dobject with normals, the normals ended up with the wrong sign. (Reported by Stephane Laurent.)
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.
glVersionbefore OpenGL was initialized; this resulted in a segfault with the new
gladloader, 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
rgl.*functions have happened. Now deprecated:
rgl.*interface” has been added.
rgl.materialis deprecated and no longer contains the list of material types in its argument list,
rgl.material.readonlyhave been added.
rgl.par3d.readonlycontain lists of properties that may be set or queried in
surface3d()in 0.111.6 were incomplete.
fliphas been added to
surface3d()to allow front and back to be switched.
sprintffrom C/C++ code with calls to
rgl.surfaceare now more flexible, allowing any of the 3 coordinates to be a vector or matrix as long as at least one is a matrix.
material3dcan now specify an
idto query properties for individual objects.
rgl.materialis soon to be deprecated and no longer contain the list of material types in its argument list,
rgl.material.readonlyhave been added.
rgl.par3d.readonlycontain lists of properties that may be set or queried in
rgl.*call (which is not recommended!) now match the defaults in
gl2psGetFileFormatmissed declaring a prototype.
"blend"has been added, to allow various kinds of blending for semi-transparent objects (issue #245).
Bufferobject 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).
adjthat 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).
NULLif 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
rglwidget()displays now act on “pointer” events, not just “mouse” events, so they should be more usable on touch screens and tablets (PR #240).
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.
Bufferare returned as arrays with dim
c(n, n, count).
plot3d.rglscenemethod now passes
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.
rglis 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.
pkgdown2.0.0 has been released, a number of internal workarounds to support the development version have been removed.
silentarguments passed in
playwidget()may now include a component specifying HTML dependencies.
rglwidgetClass.readAccessor()method to let other code use the buffering.
webshot2is on CRAN, instructions for installing it from Github have been removed.
webshot2snapshots are very slow, so the default for the
snapshot3d()now depends on the
RGL_USE_WEBSHOTenvironment variable, using
TRUEif it is unset. (Reported by Prof. B. D. Ripley.)
snapshot3d(webshot = TRUE)now issues a warning and reverts to using
akimapackage 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 == xif they were not in the current subscene.
"filled", as documented in some places.
fogsetting wasn’t handled properly by
colis accepted as a synonym for
planes3d()objects were not displayed consistently in
rglwindows 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.
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).
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).
rglscenes 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
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
tagged3d()function returns information on tags.
indicesparameter, similar to the indices in
Bufferobject, based on glTF design, for holding binary data for
0(at specified location),
5(in front of it), and
6(behind it) in
crosstalkis now a Suggested package, rather than a required one.
Makevars.ucrtfile has been modified with contributions from Tomas Kalibera to work with his
winutf8build of R.
bgplot3d()no longer pauses for each page when running examples.
deldirversion 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).
asEuclidean()etc. more consistent.
as.rglscene()generic has been added, though no methods are defined in this package.
downlit0.4.0 has been released with support for
rgl, so instructions for installing the devel version have been removed.
--staticflag to configure script for FreeType installation. (Suggestion of Simon Urbanek and Prof. Brian Ripley.)
"back"material settings in mesh objects.
rglwidget()handling of bounding box decorations had several bugs.
rglcould not find routines in the DLL on some Windows installs (Issue 148.)
expect_known_scene()function to work with
par3d("mouseMode"), corresponding to actions to take when no button is pressed.
setUserCallbacks()function to allow user-specified mouse callbacks in WebGL code.
floating, with objects that move as the bounding box changes. See
mtext3d()argument order has changed.
setAxisCallbacks()function to allow user-specified axis drawing routines.
manipulateWidgetpackages 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
rglfor users who don’t use them.
par3d("useFreeType")and the result is saved.
knitrhas now been removed.
RGL_DEBUGGINGenvironment variable has changed: now it must look like
webshot = TRUEhas been added to
WM_PAINThandler 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
rglwas loaded. The workaround is now skipped when RStudio is detected. Use
options(startQuartz = TRUE)in RStudio before loading
rglto run it, or
options(startQuartz = FALSE)to suppress it.
rmarkdowndocuments were produced at the wrong size.
example(playwidget), issue #102)
testthaterrors 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.
pkgdowncompatibility have been added. See
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/NEWSfile so it is visible here.
asEuclidean2()to work directly with
3 x nand
4 x nmatrices.
rglExtrafonts()to load additional fonts for use with FreeType rendering. Requires the
point_antialias = TRUEnow gives round points in
rglwidget()is no longer used.
rglwindows are grouped, based on code by Ivan Krylov.
filledContour3d()now accepts levels in decreasing order.
as.mesh3d.rglId()have been improved.
r3dDefaults$useFreeTypeis now set to
FALSEon Windows, so that system fonts will be used by default.
family = "symbol"has never really worked, and is no longer recommended.
compare_proxymethod in case a recent
testthatis being used.
rglwidget()once again adapt to the viewer window in RStudio (issue #74).
snapshot3d()(reported by Tony Hirst: https://github.com/dmurdoch/rgl/issues/21 .)
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
Makevarsfiles caused builds using a parallel make to fail.
rglwidget(), background images could cause other parts of the display to disappear.
knitrdocuments will now be simplified in versions of
knitrthat incorporate its PR#1892.
snapshot3d(), to use the
webshot2package (currently only available from Github; see
?snapshot3dfor details) to produce snapshots even on headless systems.
rwinlibduring the build. (Contributed by Jeroen Ooms.)
shinySetPar3d()now accepts a list, as returned in
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.)
rglwill 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.
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.
rglwill cause it to not use X11 at all.
dratrepository to hold the unreleased
as.mesh3d.default()have been fixed.
--disable-openglconfigure 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.
open3d()now has class
knitrwill 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.)
angleWeightedargument, defaulting to
rglwidget()displays of transparent spheres.
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.
"mesh3d"objects, and use it in
knitrhooks, so support for
rglshould 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.
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.
rgl.bg()to allow increased or decreased fog.
rgl.spheres(), to allow them to be drawn more quickly when transparency is used.
dots3d()have been rewritten to share code, allowing meshes to have different front and back material properties.
ids3d()have been added. Generally, users should use these rather than
snapshot3d()now has optional width and height parameters for the saved snapshot.
knitroption to use when autoprinting.
snapshot3d(width = NULL, height = NULL).
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.
rglwidget is included in a
Gitbookhas 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
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::r3dDefaultsif they are not present in the user’s
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.inithelp topic to describe initialization issues.
tkrglpackage have been moved into
anaglyph()function in the
"stereo"demo now prints information about failed pixel reads.
inst/slowTestsso that running them is optional (and the CRAN checks will go faster).
readOBJ()that affected reading texture coordinates.
snapshot3d()now read from the back buffer, which should increase reliability.
viewportwas not always updated.
pkg-configbut no freetype2.
bgplot3d()to wipe out fog setting.
writeASY()to work with a more recent version of Asymptote. Use
ver244 = TRUEfor 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
meshColoras an argument to
dot3d(); changed default to no longer give warning if
meshColoris not specified.
"mesh3d"objects, so that changes caused by the above are ignored.
as.mesh3d.ashape3d()for compatibility with conflicting method from
natpackage version 1.8.11.
std::ptr_funas 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
as.triangles3d()generic with methods to convert
"mesh3d"objects into matrices representing triangles.
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.
thigmophobe3d()to try to keep up with changes in
rgl.postscript()from writing files to current directory
shinySetPar3d()functions for Shiny interaction.
thigmophobe3d()function to place labels away from other points using
arc3d()function to draw spherical arcs.
"polygon_offset"material property, to allow lines to be drawn on surfaces.
"tri"classes (produced by
plot3d()methods for objects of class
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.)
"ashape3d"objects from the
alphashape3dpackage 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
text3d()and related functions: dropped deprecated argument
offsetlike base graphics
"mesh3d"objects: added print methods, added
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
aspectas the default method.
pch3d()now allows separate
bgspecifications 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::combineWidgetsfunction when putting multiple objects into a pipe.
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.
rglmessed 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.
rchkhave been fixed.
rgl.*functions) were not handled properly. (Reported by Ty Tuff.)
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
shiny, etc.) in scene when
useSubscene3d()now returns the id of the previously active subscene, to make temporary changes more convenient.
renderPlaywidget()now have an optional argument
outputArgsfor 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
vertexSetter()can now set plane parameters.
platform.cppso it works with
rglwidget()code using a vertex shader.
vertexControl()be duplicated in the original has been removed.
par3dinterp()did not always choose the best direction for interpolation of the
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
writeASY()so that they don’t change the working directory.
add = FALSEargument to
"shiny.tag"objects are now supported as inputs to
playwidget(), so that
rglwidget()values can be wrapped in
htmltools::div()to set their style.
figHeight()functions for sizing
rglplots in R Markdown documents.
layout3d()handled multi-row cells incorrectly. (Reported by Felix Carbonell.)
subsetControl(), and added
texcoordsfor consistency with other functions, and to avoid a collision with the
plotmath3d()function, and set
text3d()to use it when necessary.
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
rglhelp in a collection of web pages. This showed up a number of small bugs, which have been fixed.
movie3d()now optionally tries the R
magickpackage first, then the external ImageMagick v7 command
convert. (The external change suggested by Earl F. Glynn.)
par3d()reports on the version of OpenGL that it sees (as component
addNormals()gave an error if the mesh it was working with had degenerate triangles or quads. (Reported by Rolf Turner and Graham Griffiths.)
pch3d()(reported by Gina Joue).
persp3d.deldir()methods to allow plotting of surfaces defined by irregular collections of points.
rglToBase()functions to compute Euler angles for the
lattice::cloud(), and base graphics
arrow3d()(based on the function of the same name in the
pch3d()to give an approximation to plotting symbols using
pch=<number>in base graphics.
writeASY()for output in Asymptote format, which will allow inclusion in PDF files.
rgl.attrib.info()to display information about object attributes.
rglwidgetcode back into
"rglHighlevel"(using the new
highlevel()functions) to indicate that a low- or high-level plotting function has been called. If the new option
TRUE, printing objects of either class will trigger automatic printing of the
scene3d()to allow them to be used in
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).
jsonliteso 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.
rglwidget()code now works to make more careful use of this finite resource, so that large numbers of
rglscenes 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.
rglwidgetpackage (though the functions in
rgl.init()fails, continue with the
NULLdevice (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.
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
accumulateargument to the subset WebGL controls.
bbox3d()was never used and has been removed. Use
values = NULLin
vertexSetter()to allow code to directly set values.
rgl.attrib()and are stored by
plot3d(), etc.) did not return the correct id for the bounding box decoration.
xlenetc. to zero in
rgl.bbox()now (correctly) suppresses tick marks. (Reported by Philipp Angerer.)
texcoordsin 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).
plot3d()did not work properly with a shared mouse. (Reported by Marian Talbert.)
knitrto 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.
rglto fail to compile when
libfreetype2.6 was linked.
writePLY()(reported by Kurt Hornik).
hook_webgl()functions, based on the
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.
"rglClass"that allows access to many of the scene internals. (Inspired by patch submitted by Jeff Allen.)
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
reuseparameter and attribute of the result.
rgl.snapshot()now evaluates the
fmt, so windows created when those are evaluated don’t overlay the
rglwindow. (Suggestion of Keith Jewell.)
writeWebGL()now includes an argument
commonParts, to allow omission of common code in multi-figure displays.
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).
"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.)
NULLdevice did not handle changes to
ignoreExtent = TRUEwere not plotted.
writeWebGL()did not display the
bboxdecoproperly when working in a subscene.
rgl.snapshot()now works with the
NULLdevice (but produces a black snapshot). This allows testing with
par3d("modelMatrix")from 0.94. This affects
NULLdevice now does not make any spurious OpenGL calls.
Added function methods for
plot3d(), to allow surfaces to be plotted just by specifying the function. ## Bug fixes
Fixed a bug introduced in 0.94 that made user callbacks crash R. (Reported by Dave Hadka.)
Fixed a bug exposed in 0.94 (but really introduced in 0.93.952) that caused
writeWebGL() to fail when a
NULL device was active.
Fixed a bug introduced in 0.94 with writing 3D sprite objects.
Fixed a bug computing the bounding box of an embedded subscene.
rgl.pop(): the type is now ignored if
par3d("modelMatrix")no longer includes the observer translation
spin3d()functions now have arguments dev and subscene to specify where they apply.
writeWebGL()) at the request of the Debian administrators.
normalizePath()on filenames, so tilde expansion should be supported.
persp3d(). (Problem found by Graham Griffiths using polar coordinates; all
r=0points were at the same location.)
rgl.attrib()will return them even if they were calculated by
scene3d()now records light settings.
par3d()could generate an error if an unnamed list was passed in.
material3d()lost settings for textures
rgl.attrib()showed up in
writeWebGL(). (Reported by Brian Ripley.)
clipplanes3d()function to implement clip planes. (Still only partially implemented.)
rglC++ 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.
rglDLL 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.
rgldeclares most of its C++ objects in the global namespace. Recently this has caused clashes with the
igraphpackage, which does the same, and which also has a Shape class. As a temporary workaround the
rglclass has been renamed to
"rglShape". A full
rglnamespace 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.
writeWebGL()now forces the position attribute to location 0, a recommended optimization strategy. The color attribute is forced to location 1.
rgl.select()have been exported, as they were used by the car package.
rglnow prints a warning when a requested font is unavailable and the default font is substituted.
writePLY()had errors writing points and lines.
turn3d()for display of shapes based on two-dimensional polygons or curves.
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).
rglversion into the WebGL file
CHECKGLERROR, so that setting
USE_GLGETERRORto 1 in
R.hwill enable detailed checking
writeOBJ()(reported by Matthias Zeeman),
plot3d()) caused the scene to be redrawn, even if
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=FALSEproperly. (Reported by Yihui Xie.)
writeWebGL()function, to allow scenes to be viewed in a web browser.
light3d()did not return the light ID value.
selectpoints3d()function to select points from the scene.
WM_CLASSproperty of X11 windows. (Contributed by Philip Johnson.)
rglwindow now handles
ESCkey 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.)
Sweave()support through the
rgl.Sweave()driver and the
planes3d()to draw lines and planes intersecting with the bounding box.
rgl.attrib()(and internal function
rgl.getmaterial()) added to allow objects in the scene to be examined.
configure.winfor bi-arch compatibility. Windows installers can set
HAVE_PNGto a non-empty value, and
rglwill look for the libpng files in the default
LOCAL_SOFTlocation when installing.
"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.hthat were causing problems in an old version of gcc on Solaris.
rgl.postscript()now adjusts the size of text following the
familysettings are still ignored.
options(rgl.antialias=0)to disable it.
divide.mesh3d()in handling normals.
rgl.ids()did not return all object ids as documented.
rgl.texts(): zero-length texts argument caused crash. (Reported by Michael Friendly.)
"alpha"component of the material properties to be messed up. (Bug #809)
rgl.pixels()examples and demo.
cylinder3d(), for debugging or special effects.
FOVto be set to 0, for an orthogonal projection.
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).
"qmesh3d"is only kept for back compatibility.
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
convertargument is more flexible.
rgl.snapshot()gives more informative error messages when libpng is not available.
as.character()to give nicer looking labels.
warning()to report messages, rather than popups or
open3d(): “…” was being ignored.
homogeneous=FALSEcoordinates were not handled properly.
?rglexample 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.
rgl.pop()could cause corruption when multiple windows were open.
par3d()parameters to allow window size to be controlled from R.
par3d("windowRect")returned garbage if there was no window open.
plot3d()sometimes miscalculated ranges involving NAs.
rgl.select()produced a very inefficient test function.
text3d()can now handle font and size specifications using the FreeType library on any platform, or GDI on Windows.
adjis supported both horizontally and vertically in drawing text.
mouseMatrixthat caused disappearing views.
rgl.pop()was very slow when given a long list of ids.
spin3d()functions, with flag demo
rgl.setMouseCallbacks()to allow user actions
qmeshobjects, but (at present)
material3d()now preserves the values of unspecified parameters (as documented, but not previously functioning)
clear3d()can now reset material properties to the defaults, and
persp3d(), by specifying matrices for x and y coordinates
rgl.postscript()in Linux, added text support to it
snapshot3d()wasn’t being exported, and snapshots were from the back buffer
plot3d.qmesh3d()did not return result
plot3d()to draw spheres
rgl.viewpoint()default to be compatible with
rgl.ids()to report on them.
par3d(): objects plotted when this is true are ignored when calculating the bounding box
djmrglfor annotating plots.
plot3d()high level plot function
material3d(), which can both set and query material properties; changed most
*3dfunctions so they leave material invariant across calls.
open3d()to set background and material defaults
aspect3d()to control the aspect ratio of the bounding box.
zAxismouse modes, set
REprintfin X11 and OSX
rgl_init()call fails, the package will still load with a warning (but most function calls will result in errors).
ellipse3d()generic and methods for drawing confidence ellipsoids
decorate3d()to draw all the decorations,
rgl.primitive()now does sanity checks on inputs
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
rgl.bringtotop(), added stay option (win32)
rgl.quit()crashed on X11 occasionally.
rgl.surface()to allow surface over any coordinate plane.
r3dDefaultsvariable to allow user to set defaults
zlibfrom source tree
rgl.sprites()‘radius’ bug fixed
AutoDestroyand used through
free’d when they become unused e.g. texture objects are created.
src/buildchanged now a single variable MODS will extend.
rgl.dllnow contains an R compliant Resource information generated by R
rgl_quit()on process exit
R CMD checkruns through with 2 WARNINGS (according to
enumid was broken, fixed (“quads” -> “quadrangles”)
win32/vc: fixed fpu control word precision to remain on 64 bit links with
rgl_quit(): explicit client initialization
setup.bat: build setup for windows
system.file( <subpath>, package="rgl" )in examples to retrieve texture files
autoUpdate, modified win32 main loop, on hide,
autoUpdatedisabled, on show enabled