RGL in R Shiny does not rotate with the left mouse button

Recently my question on how to embed rgl in brilliant was answered by Mike, but we seem to have stumbled upon another problem,

This is some sample code:

library(rgl)
library(car)
library(shiny)

cars$time <- cars$dist/cars$speed

ui <- fluidPage(
  hr("how do we get the plot inside this app window rather than in a popup?"),
  rglwidgetOutput("plot",  width = 800, height = 600)
)

server <- (function(input, output) {

  output$plot <- renderRglwidget ({
    rgl.open(useNULL=F)
    scatter3d(x=cars$speed, y=cars$dist, z=cars$time, surface=FALSE, ellipsoid = TRUE)
    rglwidget()

    })

  })   
shinyApp(ui = ui, server = server)

      

Changing rgl.open(useNULL=F)

to rgl.open(useNULL=T)

will stop the popup, but anyway, rgl on the shiny page does ZOOM but doesn't rotate.

It seems that the right mouse click is registering and working, and the left mouse click is not recognized ....

> sessionInfo()
R version 3.3.3 (2017-03-06)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] shiny_1.0.0 car_2.1-4   rgl_0.97.0 

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.9        knitr_1.15.1       magrittr_1.5       splines_3.3.3      MASS_7.3-45        xtable_1.8-2       lattice_0.20-34   
 [8] R6_2.2.0           minqa_1.2.4        tools_3.3.3        nnet_7.3-12        pbkrtest_0.4-7     parallel_3.3.3     grid_3.3.3        
[15] nlme_3.1-131       mgcv_1.8-17        quantreg_5.33      MatrixModels_0.4-1 htmltools_0.3.5    yaml_2.1.14        lme4_1.1-13       
[22] digest_0.6.11      Matrix_1.2-8       nloptr_1.0.4       htmlwidgets_0.8    mime_0.5           SparseM_1.77       jsonlite_1.2      
[29] httpuv_1.3.3    

      

+1


source to share


1 answer


Your scene is using mouseMode "polar" (possibly because the scatter3d parameter sets it). This mode is not currently implemented in rglwidget's code.

A workaround is to set the mouseMode for the "trackball" before calling rglwidget (), for example. in the output of $ plot put this:

open3d(useNULL=TRUE)
scatter3d(x=cars$speed, y=cars$dist, z=cars$time, surface=FALSE, ellipsoid = TRUE)
par3d(mouseMode = "trackball")
rglwidget()

      



Note on my edit: I've simplified the above code. To set the left mouse button, just specify one mouseMode component.

Another change: the latest version of rgl is 0.98.8, available in R-forge and possibly elsewhere (see How do I install the latest version of rgl? ), Now has support for "polar" mouse handling. It is not identical to the behavior in R, but it is close.

+3


source







All Articles