The RGL package is a visualization device system for R, using OpenGL or WebGL as the rendering backend. An OpenGL rgl device at its core is a real-time 3D engine written in C++. It provides an interactive viewpoint navigation facility (mouse + wheel support) and an R programming interface. WebGL, on the other hand, is rendered in a web browser; rgl produces the input file, and the browser shows the images.
pkgdown website is here:
The unreleased development version website is here:
See this vignette for details on producing your own
pkgdown website that includes
The currently active development site is here:
rgl can make use of development versions of some packages:
downlit. Though it doesn’t require any of these, they each provide some nice features:
chromotesupport good quality PNG snapshots of
rglscenes, even on servers that don’t have a graphics display.
downlitsupport inclusion of
rglgraphics in example code in automatically built package websites. (There’s also a devel version of
htmlwidgetsfor other dynamic web packages like
Unfortunately, being development versions, these packages sometimes introduce bugs that break
rgl usage. Currently (September 23, 2021) the main branches of all packages are fine. I recommend the following code to install them:
Most users will want to install the latest CRAN release. For Windows, macOS and some Linux platforms, installation can be easy, as CRAN distributes binary versions:
To install the latest development version from Github, you’ll need to do a source install. Those aren’t easy! Try
If that fails, read the instructions below.
The software is released under the GNU Public License. See COPYING for details.
macOS Windows 7/10 Unix-derivatives
R recommended tools (gcc toolchain) On Windows, Rtools40 (or earlier versions for pre-R-4.0.0)
For OpenGL display:
Windowing System (unix/x11 or Windows)
OpenGL Utility Library (GLU)
For WebGL display:
A browser with WebGL enabled. See https://get.webgl.org.
aptitude install libgl1-mesa-dev libglu1-mesa-dev
yum install mesa-libGL-devel mesa-libGLU-devel libpng-devel
rgl should work with XQuartz 2.7.11 or newer, but it will probably need rebuilding if the XQuartz version changes. XQuartz normally needs re-installation whenever the macOS version changes.
Windows normally includes OpenGL support, but to get the appropriate include files etc., you will need the appropriate version of Rtools matched to your R version.
The libpng library version 1.2.9 or newer is needed for pixmap import/export support.
The freetype library is needed for resizable anti-aliased fonts. On Windows, it will be downloaded from https://github.com/rwinlib during the install.
Binary builds of
rgl are available for some platforms on CRAN.
For source builds, install the prerequisites as described above, download the tarball and at the command line run
(with the appropriate version of the tarball). The build uses an
autoconf configure script; to see the options, expand the tarball and run
Alternatively, in R run
to install from CRAN, or
to install the development version from Github.
Sometimes binary development versions are available for Windows and macOS using
but these are not always kept up to date.
As of version 0.104.1, it is possible to build the package without OpenGL support on Unix-alikes (including macOS) with the configure option –disable-opengl For example,
On Windows, OpenGL support cannot currently be disabled.
Daniel Adler firstname.lastname@example.org
Duncan Murdoch email@example.com
Oleg Nenadic firstname.lastname@example.org
Simon Urbanek email@example.com
Ming Chen firstname.lastname@example.org
Albrecht Gebhardt email@example.com
Ben Bolker firstname.lastname@example.org
Gabor Csardi email@example.com
Adam Strzelecki firstname.lastname@example.org
Alexander Senger email@example.com
The R Core Team for some code from R.
Dirk Eddelbuettel firstname.lastname@example.org
The authors of Shiny for their private RNG code.
The authors of
knitr for their graphics inclusion code. Jeroen Ooms for
Yohann Demont for Shiny code, suggestions, and testing.
Joshua Ulrich for a lot of help with the Github migration. Xavier Fernandez i Marin for help debugging the build.
George Helffrich for draping code.
Ivan Krylov for window_group code in X11.
Michael Sumner for as.mesh3d.default enhancement.
Tomas Kalibera for