Skip to content

Releases: dmurdoch/rgl

v1.3.12

28 Oct 12:21
Compare
Choose a tag to compare

rgl 1.3.12

Minor changes

  • readSTL() can now read (some) ASCII format STL files.
  • The configure script has had minor changes, and autoconf
    support files have been updated.
  • uname is no longer used during startup (PR #435
    submitted by Jonathon Love).

Bug fixes

  • Background plots did not always appear (issue #421).
  • Changing the background resulted in an additional background
    object instead of replacing the current one.
  • Colors weren't handled correctly by writePLY() (issue #425).
  • bbox3d() objects ignored the xlen, ylen and zlen
    settings when rendered using rglwidget() (issue #415).
  • In certain cases, the WebGL vignette started with the
    mouse mode set to "selecting".
  • The rglwidget() function gets a new argument fastTransparency
    which makes WebGL mimic the rgl device when drawing transparent
    objects. The default value is TRUE unless option
    rgl.fastTransparency is set to FALSE.
  • writeSTL() now writes endsolid, which is required by some apps.

rgl 1.3.1

05 Mar 14:45
41b9e90
Compare
Choose a tag to compare

Major changes

  • sprites3d() now supports plotting different 3D symbols
    at each location (issue #406).

Minor changes

  • ARIA support now declares rgl scenes with role = "img".
  • The vignettes in this package now use
    markdown::html_format, so they no longer require Pandoc
    (though Pandoc-using output formats like html_document will still be supported).
  • Christophe Geuzaine's GL2PS library (used by rgl.postscript())
    updated to version 1.4.2, and blending (transparency)
    has been enabled in formats that support it.
  • The Makevars.ucrt file has been changed for compatibility
    with an upcoming change to Windows Rtools. (Pull request #412 submitted by Tomas Kalibera).

Bug fixes

  • The ARIA support caused htmlwidgets::saveWidget() to fail when
    run in a Shiny session.
  • text3d() and mtext3d() did not pass the cex argument to
    plotmath3d() (pull request #384).
  • polygon3d() failed when given exactly 3 points (issue #388).
  • snapshot3d() failed on Windows with some versions of webshot2 (issue #391).
  • Fixed issues caused by misuse of dev.off() using new function
    safe.dev.off().
  • Fixed issue with warning() call reported by CRAN.
  • Smooth shapes were not rendered correctly by rglwidget().
    This was especially noticeable for spheres with fov = 0, but was present in other cases as well (issue #401).
  • textype = "alpha" was not rendered correctly by rglwidget() (issue #408).
  • setUserCallbacks() and related functions failed when
    the subscene argument was anything other than the root
    subscene.

rgl 1.2.8

14 Dec 09:05
321112a
Compare
Choose a tag to compare

Minor changes

  • ARIA support now declares rgl scenes with role = "img".

Bug fixes

  • The ARIA support caused htmlwidgets::saveWidget() to fail when
    run in a Shiny session.
  • text3d() and mtext3d() did not pass the cex argument to
    plotmath3d() (pull request #384).
  • polygon3d() failed when given exactly 3 points (issue #388).
  • snapshot3d() failed on Windows with some versions of webshot2 (issue #391).
  • Fixed issues caused by misuse of dev.off() using new function
    safe.dev.off().
  • Fixed issue with warning() call reported by CRAN.

v1.2.1

06 Jul 09:12
bce9fce
Compare
Choose a tag to compare

rgl 1.2.1

Major changes

  • Support for non-PNG textures has been added. Currently
    supported: JPEG files and any other object
    for which grDevices::as.raster() works, e.g. matrices.
    (Fixes issue #196.)

Minor changes

  • Support for "alt" text has been added to rglwidget().
    Full support in R Markdown or knitr requires a knitr update
    to version 1.42.12 or newer.
  • Some of the tests have been relaxed slightly so they
    shouldn't trigger errors on the M1Mac test platform.
  • Internally, the C++ code has dropped the use of the internally
    defined 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.

Bug fixes

  • The 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).
  • Spheres did not show textures correctly (issue #360).
  • 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.)

v1.1.3

26 Mar 23:25
Compare
Choose a tag to compare

rgl 1.1.3

Major changes

  • A new function hover3d() has been added to display
    "hover hints": labels next to points when the mouse
    passes near them.
  • A new material property "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.
  • Many of the demos have been moved to a new vignette called
    demos.
  • rgl now uses the glad loader which will eventually allow
    access to newer OpenGL functions in systems that support them.

Minor changes

  • The texenvmap = TRUE material property is now supported
    in WebGL.
  • The method of including shader source code
    has changed to work around a limitation in Jupyter.
  • The default C++ standard is now accepted, rather
    than requiring C++11. On R versions prior to R 4.2.0
    C++11 is still requested.

Bug fixes

  • The 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).
  • Transparent planes were not always drawn properly
    in WebGL (issue #300).
  • view3d() now returns a lowlevel() result so that
    it will be handled properly in WebGL vignettes with
    auto printing.
  • If 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.
  • It was possible to call 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.
  • Sprites consisting only of line segments (as used
    for example by pch3d()) caused rendering to fail in
    rglwidget() (issue #316).
  • Headers have been cleaned up to fix problems
    identified by Rtools43.

v1.0.1

19 Jan 08:34
Compare
Choose a tag to compare

Major changes

  • The long promised deprecations of the 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.
  • A vignette "Deprecating the rgl.* interface"
    has been added.
  • Also deprecated: elementId2Prefix, writeWebGL

Minor changes

  • Since 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.
  • Similarly, rgl.par3d.names and rgl.par3d.readonly
    contain lists of properties that may be set or queried
    in par3d().
  • The flexibility improvements for surface3d() in
    0.111.6 were incomplete.
  • Argument flip has been added to surface3d() to allow
    front and back to be switched.

v0.111.6

07 Jan 16:59
9a8fa98
Compare
Choose a tag to compare

Minor changes

  • Added a panning example to the help page for setUserCallbacks().
  • Replaced all calls to 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.
  • Since 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.
  • Similarly, rgl.par3d.names and rgl.par3d.readonly
    contain lists of properties that may be set or queried
    in par3d().
  • Made some examples conditional on interactive use
    to save time on CRAN.

Bug fixes

  • Default mouse modes used when a window is opened by an rgl.*
    call (which is not recommended!) now match
    the defaults in rgl::r3dDefaults.
  • Missing values could cause surface3d() to segfault.
  • The C source code for gl2psGetFileFormat missed declaring
    a prototype.

rgl 0.109.6

09 Jul 11:53
Compare
Choose a tag to compare

Minor changes

  • rglwidget() displays now act on “pointer” events, not just “mouse” events, so they should be more usable on touch screens and tablets (PR #240).

Bug fixes

  • Plotting scene3d() objects didn’t handle suppressed axes properly, drawing the default axis instead (issue #241).
  • On some systems using X11, rgl would segfault when the “fixed” font was not found.
  • X11 errors could cause R to abort.

rgl 0.109.2

14 Jun 18:00
Compare
Choose a tag to compare

This is a fairly large update, fixing a lot of bugs and adding a number of new features.

Major changes

  • Changes to support glTF animation:
    • Handling of 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.
    • If a subscene has no lights defined, the lights from the parent
      are used.
    • plot.rglscene() now ends with the root subscene as
      current. It also allows specification of open3d()
      parameters in a list.
    • The MATn types in Buffer are returned as arrays with
      dim c(n, n, count).
    • The plot3d.rglscene method now passes ... to open3d().
    • The 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.
  • Added getShaders() function to get shaders used in WebGL.
  • Now detects if rgl is running within reprex::reprex()
    and if so arranges that a screenshot will be included in the
    output.
  • Added default shaders to be used in 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.

Minor changes

  • Now that pkgdown 2.0.0 has been released, a number
    of internal workarounds to support the development version
    have been removed.
  • Added as.mesh3d() methods for "rglsubscene" and "rglscene".
  • open3d() now handles useNULL and silent arguments
    passed in params.
  • Controls passed to playwidget() may now include a
    component specifying HTML dependencies.
  • Added rglwidgetClass.readAccessor() method to let other
    code use the buffering.
  • Changed the internal organization of bounding box calculations.
  • All functions that produce meshes now accept
    material properties. Newly modified to do so using the ...
    argument: cylinder3d(), and getBoundary3d().
  • Updated the system requirements and installation instructions.
  • Solid bounding box decorations now try harder to display 3 faces (issue #206).
  • Now that webshot2 is on CRAN, instructions for
    installing it from Github have been removed.
  • Sometimes 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.)
  • If the Chrome browser is not found, snapshot3d(webshot = TRUE) now issues a warning and
    reverts to using rgl.snapshot().
  • Buffers now use "normalized integers" to store
    color or texture coordinate values that lie between 0
    and 1 when it saves some space.
  • At the request of CRAN, the akima package is no
    longer suggested.

Bug fixes

  • as.mesh3d.rglobject() didn't handle objects with indices
    properly.
  • In WebGL, the front vs back calculation sometimes
    got the wrong result (issue #164).
  • pop3d(tag = x) did not always find the objects with tag == x if they were not in the current subscene.
  • The default values for front and back in rgl.material
    and material3d are now "filled", as documented in some
    places.
  • The fog setting wasn't handled properly by bg3d().
  • Numerous cases of partial argument matching were fixed
    (suggestion of Henrik Bengtsson in issue #170.)
  • Argument 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).
  • Some initialization wasn't done properly in Shiny apps,
    so they failed after a redraw (issue #173).
  • Buffers are now optional, as they don't work with
    Shiny scene changes (also issue #173).
  • The NULL device would sometimes miscalculate the
    bounding box.
  • selectpoints3d(closest = TRUE) selected too many points
    when multiple objects were in the scene.
  • Clearing nested subscenes could cause a segfault and crash.
  • In knitr and rmarkdown, blank plots could be shown
    when par3d(skipRedraw=TRUE) was set (issue #188).
  • Objects drawn with sprites3d() weren't lit correctly
    in WebGL (issue #189).
  • Objects with textures were sometimes drawn more than once, both
    before the texture loaded and after. This was most noticeable for
    objects with user textures.
  • Axis mode "pretty" got lost when scenes were redrawn.
  • Tick labels were sometimes lost in WebGL displays and
    snapshot3d() results (issue #197).
  • The new material properties from 0.107.10 and 0.108.3
    were not handled properly by 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).
  • Textures were not appearing on spheres, and front-back
    differences weren't being rendered (issue #217).
  • When "knitting" within RStudio under R 4.2.0 on
    Windows, rgl scenes didn't appear (reported by
    Dieter Menne.) A workaround has been added.
  • In rglwidget(), axis labels were not always
    displayed, and did not move with solid bounding box
    decorations properly (issue #206).
  • On some systems, lines3d() using both missing values
    and transparency did not draw properly (issue #234,
    originally reported by Gaspar Jekely).
  • The rglShared() example failed when crosstalk
    was uninstalled.

rgl 0.108.3

24 Nov 12:38
Compare
Choose a tag to compare

Major changes

  • Added getBoundary3d() function to extract the boundary
    edges of a mesh.
  • Added material property 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.
  • Primitive types (points, lines, segments, triangles, quads)
    can now accept an indices parameter, similar to the
    indices in mesh3d objects.
  • Added Buffer object, based on glTF design, for holding binary
    data for rglwidget().

Minor changes

  • Allowed for a third coordinate in text3d()'s adj
    parameter.
  • Added support for adj, pos and offset to
    sprites3d().
  • Added support for 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.
  • The 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).
  • Corrected the documentation and made the implementations
    of asHomogeneous(), asEuclidean() etc. more consistent.
  • An 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.

Bug fixes

  • Fixed rendering of text as sprites3d() objects.
  • Added --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.)
  • Some cases where allocations were not protected have been fixed.