sceneChange.Rd
These functions allow Shiny apps to make relatively large changes to a scene, adding and removing objects from it.
sceneChange(elementId, x = scene3d(minimal),
delete = NULL, add = NULL, replace = NULL,
material = FALSE, rootSubscene = FALSE,
delfromSubscenes = NULL, skipRedraw = FALSE,
minimal = TRUE)
registerSceneChange()
The id of the element holding the rglClass
instance.
The new scene to use as a source for objects to add.
Object ids to modify in the scene. The delete
and
replace
ids must be present in the old scene in the browser;
the add
and replace
ids must be present in x
.
Logical to indicate whether default material should be updated.
Logical to indicate whether root subscene should be updated.
A vector of subscene ids that may have been changed by
deletions. By default, all subscenes in x
are used,
but the objects may be included in subscenes in the browser
that are different.
If TRUE
, stop the scene from redrawing until skipRedraw=FALSE
is sent. If NA
, don't redraw this time, but don't
change the state of the skipRedraw
flag.
See scene3d
.
registerSceneChange
must be called in the UI component
of a Shiny app to register the "sceneChange"
custom
message.
registerSceneChange
returns the HTML code to register the
message.
sceneChange
returns a list to be used as the "sceneChange"
message to change the scene. Use
shiny::session$sendCustomMessage
to send it.
playwidget
for a different approach to modifying
scenes that can be much faster, but may be less flexible. The
Shiny demo in this package makes use of all of these approaches.
if (FALSE) { # \dontrun{
shinyUI(fluidPage(
registerSceneChange(),
actionButton("thebutton", "Change")
))
shinyServer(function(input, output, session) {
observeEvent(input$thebutton, {
session$sendCustomMessage("sceneChange",
sceneChange("thewidget", delete = deletes, add = adds))
})
})
} # }