Create a Threejs Brain and View it in Browsers
Usage
threejs_brain(
...,
.list = list(),
width = NULL,
height = NULL,
background = "#FFFFFF",
cex = 1,
timestamp = TRUE,
title = "",
side_canvas = FALSE,
side_zoom = 1,
side_width = 250,
side_shift = c(0, 0),
side_display = TRUE,
control_panel = TRUE,
control_presets = NULL,
control_display = TRUE,
camera_center = c(0, 0, 0),
camera_pos = c(500, 0, 0),
start_zoom = 1,
symmetric = 0,
default_colormap = "Value",
palettes = NULL,
value_ranges = NULL,
value_alias = NULL,
show_inactive_electrodes = TRUE,
surface_colormap = system.file("palettes", "surface", "ContinuousSample.json", package
= "threeBrain"),
voxel_colormap = system.file("palettes", "datacube2", "FreeSurferColorLUT.json",
package = "threeBrain"),
videos = list(),
widget_id = "threebrain_data",
tmp_dirname = NULL,
debug = FALSE,
enable_cache = FALSE,
token = NULL,
controllers = list(),
browser_external = TRUE,
global_data = list(),
global_files = list(),
qrcode = NULL,
custom_javascript = NULL,
show_modal = "auto",
embed = FALSE
)Arguments
- ..., .list
geometries inherit from AbstractGeom
- width, height
positive integers. Width and height of the widget. By default width=`100%`, and height varies.
- background
character, background color such as
"#FFFFFF"or"white"- cex
positive number, relative text magnification level
- timestamp
logical, whether to show time-stamp at the beginning
- title
viewer title
- side_canvas
logical, enable side cameras to view objects from fixed perspective
- side_zoom
numerical, if side camera is enabled, zoom-in level, from 1 to 5
- side_width
positive integer, side panel size in pixels
- side_shift
integer of length two, side panel shift in pixels (`CSS style`: top, left)
- side_display
logical, show/hide side panels at beginning
- control_panel
logical, enable control panels for the widget
- control_presets
characters, presets to be shown in control panels
- control_display
logical, whether to expand/collapse control UI at the beginning
- camera_center
numerical, length of three, XYZ position where camera should focus at
- camera_pos
XYZ position of camera itself, default (0, 0, 500)
- start_zoom
numerical, positive number indicating camera zoom level
- symmetric
numerical, default 0, color center will be mapped to this value
- default_colormap
character, which color map name to display at startup
- palettes
named list, names corresponds to color-map names if you want to change color palettes
- value_ranges
named list, similar to
palettes, value range for each values- value_alias
named list, legend title for corresponding variable
- show_inactive_electrodes
logical, whether to show electrodes with no values
- surface_colormap
a color map or its path generated by
create_colormap(gtype="surface")to render surfaces vertices; seecreate_colormapfor details.- voxel_colormap
a color map or its path generated by
create_colormap(gtype="volume")to render volume such as atlases; seecreate_colormapfor details.- videos
named list, names corresponds to color-map names, and items are generated from
video_content- widget_id
character, internally used as unique identifiers for widgets; only use it when you have multiple widgets in one website
- tmp_dirname
character path, internally used, where to store temporary files
- debug
logical, internally used for debugging
- enable_cache
whether to enable cache, useful when rendering the viewers repeatedly in shiny applications
- token
unique character, internally used to identify widgets in 'JavaScript'
'localStorage'- controllers
list to override the settings, for example
proxy$get_controllers()- browser_external
logical, use system default browser (default) or built-in one.
- global_data, global_files
internally use, mainly to store orientation matrices and files.
- qrcode
'URL' to show in the 'QR' code; can be a character string or a named list of
'url'and'text'(hyper-reference text)- custom_javascript
customized temporary 'JavaScript' code that runs after ready state; available 'JavaScript' variables are:
'groups'input information about each group
'geoms'input information about each geometry
'settings'input information about canvas settings
'scene''threejs' scene object
'canvas'canvas object
'gui'controls data panel
'presets'preset
'gui'methods
- show_modal
logical or
"auto", whether to show a modal instead of direct rendering the viewers; designed for users who do not have'WebGL'support; only used in shiny applications- embed
whether to try embedding the viewer in current run-time; default is false (will launch default web browser); set to true if running in
'rmarkdown'or'quarto', or to see the viewer in'RStudio'default panel.
Examples
if( interactive() ) {
library(threeBrain)
# Please use `download_N27` to download N27 Collins template brain
n27_path <- file.path(default_template_directory(), "N27")
if( dir.exists(n27_path) ) {
brain <- threeBrain(path = n27_path, subject_code = "N27",
surface_types = c('pial', 'smoothwm'))
print(brain)
brain$plot(
background = "#000000",
controllers = list(
'Voxel Type' = 'aparc_aseg',
'Surface Type' = 'smoothwm',
'Blend Factor' = 1,
'Right Opacity' = 0.3,
'Overlay Sagittal' = TRUE
),
show_modal = TRUE
)
}
}