Change Log
threeBrain 1.2.0
- Fixed shiny callback when electrode contacts are double-clicked
 
- Fixed contact-switching and highlight box
 
- Added 
PMT electrodes 
- Fixed non-integer search radius issue
 
- Adjust electrode position can be done under volume-mode to improve
user experience
 
- Electrodes with prototype geometries will use the prototype to infer
the locations rather than spacial calculation
 
- Added keyboard shortcut for registering from cross-hair
 
- Added 
get_atlas_values for continuous atlases such as
binary or probabilistic ROI 
- The radius refers to maximum 
RAS distance instead of
voxel indexing distance, hence more accurate when the atlas
volume has imbalanced slice count 
- Renamed 
active-voxel to column-row-slice
but still keep the naming for backward compatibility 
Voxel filter is linear now when displayed at side
slices only and when the slice mode is not
active-voxel 
- Fixed drifting issue when visualizing via active 
voxel
mode 
- Added direction arrow helper to 
DBS (or electrodes with
non-zero model up vectors) 
- Support 
WebAssembly 
- Avoid using 
pandoc to save the whole page
self-contained 
- Fixed the depth issue in electrode material shader
 
- Set maximum render length cut-off for electrode prototypes
 
- Added model tangent (usually the direction) to electrode shader so
outlines are correctly visualized
 
- Fixed electrode prototype rendering issue (color) on Windows
 
- Fixed the color map for discrete values
 
- Setting electrode prototype render order to be 
-500 so
it does not hide behind the transparent surfaces 
- Plotting electrodes on slices now takes numerical
adjust_brightness interpreted as quantile 
- Changed default color palette for discrete values, removed colors
that are too dark or gray
 
- Change 
CT threshold back to positive (3000) when
switching from DBS leads back to sEEG
leads. 
- Support drag and drop annotation files
 
- Changed electrode material to display front-side only instead of
double side to avoid overlapping contacts visually when spacing is
small
 
- Added 
Abbott segmented electrodes
6170-6173, with segmented electrodes clockwise viewing from
proximal end 
- Fixed a bug that may change electrode coordinate hand
 
- All the 
DBS electrode prototype maker uses natural
cos for x and sin for
y. However, this will cause electrodes to rely on rendering
on back side (material) 
- Added missing prototype
 
- Fixed 
BSC and Medtronic electrode
orientation (now is counter-clockwise when viewing from
proximal end) 
- Added more spacing for 
DBS segmented contacts 
- added prototypes for 
Medtronic segmented
electrodes 
- Added 
BSC-DB electrodes for 2202
2201 
- Added internal test code for depth mapping
 
- Surface mapping has been implemented for depth electrodes, with
dynamic offset threshold
 
surface_offset has been added to electrode field 
cvs_avg35_inMNI152 has the correct talXFM
(scanner to MNI305) now 
- Added 
load_mesh to surface object so users can load
surface mesh for computation in R 
- Added internal 
calculate_distances to compute the
distances from a point to its projection to a list of mesh 
DistanceShifted in electrode table is taken into
account and will be passed to electrode instances 
- Inflated surfaces have offset by default
 
- Fixed a singular matrix bug when the electrode prototype
up vector is zero or is parallel with the model
direction 
- Allowed the surface mapped electrodes to be snapped to the surface
if the surface world matrix is not identity
 
- Force the inflated brain to have offset positions
 
- Added 
DBS electrode prototype
BSC-DB-2202 
- Prototype 
set_transform_from_points now tries to set
rotation from transform Euler angle when the prototype
guided marker is 1-ranked (electrode strip, DBS
electrodes) 
- Allowed electrode prototype to display markers; added viewer options
for localization
 
- Changed electrode direction helper to be displayed inside of
cross-hair group
 
- Allowed side panel to be displayed with atlas column-row-slice
 
- Added controller to display symmetric continuous color map for
volumes
 
- Fixed the 
GLTF not showing inner-most contact
issue 
- Removed 
devel version of ravetools from
check 
- Update 
Github action check script 
- Added 
rhub check 
- Plotting slices have correct margins with partial plot
 
- Allow users to drag and drop value tables
 
- Allow users to hide cross-hairs
 
- Allow 
shiny app to change current color map via
proxy 
- Allows drag-drop electrode color files
 
- Added 
set_electrode_data to brain proxy class, allowing
shiny applications to change the electrode data, set color
palettes, and set value ranges in the same call 
- Allow masks to be added to 
T1 
- Added 
D99v2 for monkey brain 
- Export 
GLTF for datacube2 
- Fixed 
fix_electrode_color bug 
- Supported 
ISO surface generation from volume 
- Added white-matter segmentation as default atlas if user has this
file
 
- Exporting 
GLTF is wrapped with try-catch 
fix_electrode_color is exclusive by default 
- fixed color fixing issue for naive sphere electrodes
 
- Changed logo message
 
- Using better 
RAVE logo and fixed style issues 
- Changed shortcut 
p to toggling the visibility and
shift+p to switching surface types 
- Added logo to control panel to advertise the project
 
- Added export 
GLTF binary format 
- Separate 
3D and 2D canvas; 
- Converts 
*h.pial.gii to FreeSurfer format
when the files are missing 
- Allow electrode depth test to be disabled (always-depth) on contact
and/or outlines
 
- Fixing the vertex shader output not read by fragment shader
issue
 
- Drop-in feature support color-map for volume and surfaces
 
- Added contact order to display when electrode is clicked
 
- Added 
DIXI (AM, BM,
CM) electrode specifications 
threeBrain 1.1.0
Major Changes
threejs engine is upgraded to v160; added
support for NIfTI and GIfTI images 
- Allowed data to be embedded with viewer as 
dataURI.
This results in a truly standalone viewer: no extra engine required,
only web-browser is needed. 
- Added electrode geometry prototype, allowing users to see the
electrode rather than using spheres, useful for electrodes with super
micro contacts or electrodes with segmented contact like
DBS 
- Added support for showing (cortical or sub-cortical)
ROI surfaces 
- Implemented drag-and-drop feature to drop arbitrary volume
(
nii,mgz) or surface (fs,gii) files to the
viewer. The surface coordinate system is inferred from file name
following BIDS convention. The surface color can be set via
a color-map (csv) or in the file name 
- Implemented slice (in side viewer) overlay
 
- Users can control side camera 
frustums (near and far)
separately 
- Implemented worker system so the viewer can run truly parallel code
in the background
 
- Added 
snap-to-electrode and line-of-sight
mode in addition to canonical anatomical slices.
- Under 
line-of-sight mode, the underlay image will be
sliced dynamically with a plane orthogonal to the line of sight; two
other (orthogonal) planes parallel to the line of sight 
- Under 
snap-to-electrode, the volume slices will be
snapped to electrode direction (only available when electrode prototype
is used and electrode direction defined). The other two planes will
dynamically slice the MRI 
 
- Users can localize an electrode probe by clicking on the target
location, then entry location
 
- Added an option to add 
QR code to the viewer, allowing
people to link to the publication 
- Loading progress is more informative now
 
- Implemented 
plot_slices to allow plotting
MRI slices for each contact in canonical order 
- Users can set default colors to electrodes via
brain$electrodes$fix_electrode_color 
- Users can override underlay images by placing
rave_slices.nii[.gz] under the mri/ in
FreeSurfer folder 
- File/Data loaders use 
JavaScript workers now (can be
disabled with enable_cache=TRUE) 
- Added mesh clipping to see depth electrodes without compromising
color
 
- Implemented volume clipping
 
- Added new mode for 
ACPC alignment 
- Added 
target flag so objects can be rendered
differently on main canvas versus side canvas 
Minor changes
- Electrode prototype names follow
type-company-version.json format 
- Added compass object to side cameras when slice mode is not
canonical
 
- Remove 
UV mapping on sphere electrodes 
- Added model up direction to electrodes to assist calculating Euler
axis and angles
 
- Volume, atlas threshold is asynchronous now
 
- Changed default values of some controller
 
- Added 
broadcast() to more controllers; 
- Atlas key number is displayed so users no longer need to search for
look-up table
 
- Added debug flag with keyboard shortcuts
 
- Viewer finally compiles with 
quarto/rmarkdown 
- Implemented functions to create 
sEEG electrodes 
- Slices does not write to depth buffer when rendered in side canvas,
so electrode contacts are not blocked
 
- Allowed anchor to be fixed when localizing with electrode
prototype
 
- Using 
instancedMesh to render actual electrode spheres
when prototype is used and users choose to see the actual contact
locations 
- Implemented 
mapToTemplate for electrode prototypes 
Pial surface does not write to depth buffer when it’s
super transparent 
- Added drivers to set object transform matrix
 
- Adjust the implementation of background color and
arcball radius 
- Removed composer effects, using 
shaders to render
electrode outline 
- Trackball uses longer side of the canvas instead of shorter side as
radius
 
- Added electrode visibility mode: use 
threshold-only to
show contacts that pass threshold even no display value is given 
- Overlay brightness can be adjusted via controller
 
- Adjusted title position
 
- Updated 
CITATION 
- New color map is used for electrodes to be consistent with
RAVE color 
- Allow adding additional geometries in 
brain$plot 
- Improved spacing for interpolation and extrapolation (electrode
localization); removed old interpolation logic; added
distanceRatio to prevent large shift (auto adjust) 
- Electrodes are opaque on main but transparent on side canvas
 
- Using 
pial surface center as trackball center 
- Dithering the 
datacube2 to make rendering more natural
on main canvas 
- By default set 
MRI slices visible when surfaces are
missing 
- Drag & drop file names is sanitized to avoid displaying
issues
 
- Electrode contacts (
instancedMesh) are now
click-able 
dispose is cleaner now, it also fires events 
- Added 
makeClickable and removeClickable to
replace previous add_clickable function 
- Renamed 
register_object to
registerToMap 
- Better ways to sanitize 
datacube 
- Improved 
datacube overlay texture, including using
clamp-to-border instead clamp-to-edge 
- Ray-casting electrode prototypes with 
instancedMesh now
works under contact-only mode 
- Show electrode prototype with contacts by default
 
- Added color modes for uploaded images
 
- removed 
normalize method (replaced by
getNormalizedImage) from NiftiImage and
MGHImage 
- Using script to generate change log automatically from Git
commits
 
- Scrolling on side canvas is faster now
 
- Allowed prototype contact colors to be fixed
 
- Prototype control points displays channel information (provided
control points are channels) Added color (
randomColor,
testColorString) and file-name utility functions 
- Soft removed 
addColorCoat and using
ElectrodeMaterial, this results in massive code improvement
in electrode instance 
- Allow to set default electrode colors if a contact is not rendered
with values nor fixed color
 
- Scrolling on side canvas is faster now
 
- Color look-up table can be set with arbitrary single color (in
HexString, indicating that all values should be rendered
with such color; Drag & Drop volumes can change to single
colors 
- Remembers the state when switching volumes
(
datacube2) 
Bug fixes
- Fixed 
NamedLut color error when a value range is
zero 
- Prototype electrode click information displays the channel
number
 
- Fixed 
RShinyDriver issue when object does not have
construction parameters (using getThreeBrainInstance
instead) 
- Avoid rendering volume data to sub-cortical 
ROI 
- Fixed UV issues in electrode geometry prototypes
 
- Fixed a bug when slice instance is missing but controller tries to
set overlay
 
JavaScript map is hidden when compiled so browsers will
not complain about missing maps 
- Significantly reduced the chances of viewer crash under R shiny
applications
 
- Fixed a 
shader crash issue on Windows 
WebGL2 is the hard requirement now; users will be
notified if this requirement is not met 
- Mouse position in the canvas is calculated every mouse down instead
of every resizing to fix the control issues when page is scrolled in
shiny app
 
- Fixed 
controller.load to handle invalid set controller
request 
- Fixed 
textsprite depth issues 
- Fixed light under new engine
 
- Fixed visualization of volume cubes when using 
NIfTI
files 
- Fixed volume transforms when 
sform and
qform are inconsistent in NIfTI 
- Fixed a bug in interpolation with spacing
 
- fixed incorrect 
ROI label 
as_subcortical_label generates correct white-matter
labels 
- Fixed 
freesurfer_lut 
- Fixed 
auto-adjust feature (electrode localization) 
- Fixed 
UV mapping issue in sphere electrode
geometry 
- Fixed 
shader issue when transparency is set to negative
(treated as 1) 
- Using 
NIfTI headers to get calculated color intensities
before applying heuristic approach 
threeBrain 1.0.2
- Removed a 
shader loop that accidentally used dynamic
variable for looping, which may crash on Windows in certain
situations 
- Updated 
README.md 
- Composer effects are removed
 
- Added default color to electrodes (JavaScript) to fix the
localization electrode color not set correctly issues
 
- Added 
z-index base to the side canvas layer
(div) 
- Removed additional unused parameters from material call
 
- Used new material type to make brain more realistic
 
- New background color is implemented
 
Trackball uses width instead of height of the viewer as
the Arcball radius; mouse positions is calculated whenever
mouse-down event is triggered (allowing more accurate track-ball
calculation in Shiny applications) 
- Made 
col2hexstr internal function 
- Added a new electrode visibility mode, allowing to show contacts
with no values but passing the threshold
 
- Added 
brain$electrodes$fix_electrode_color to fix the
electrode colors under given data names (to display DBS
electrodes, for example) 
- Made 
controller.load more robust against errors 
- Fixed the depth issue in 
TextSprite 
- Some default controller values have changed to make more sense
 
- Outline render effect is removed; electrode outlines are implemented
directly in the 
shader 
- Updated 
three.js to v160 with light model
improved 
- Added 
rave_slices.nii to allowed MRI
prefix in FreeSurfer folder with highest priority, such
that this image will be treated as default volume to load in side canvas
(default is still brain.finalsurfs.mgz) 
- Allow 
MRI to change brightness dynamically in
viewer 
- Ensure that 
voxels index from zeros 
- Added 
brain$get_atlas_labels to guess the atlas labels
from given masks or atlas files 
- Allowed to spatially transform electrodes to desired coordinate
system
 
- Updated citation
 
- The standalone viewer does not require static server anymore:
everything is self-contained (require 
pandoc, which comes
with RStudio) 
- Changed mechanism on animation color map generator (so the color is
more accurate for discrete variables)
 
- Added 
png to dependence 
- Added support for 
AC-PC alignment, available in
RAVE - YAEL module 
- Allow 
brain to plot with additional customized
geometries 
- Added 
plot_slides to plot MRI centered at
each electrode contact for slide-to-slide visualization 
- Added Line-of-Sight view mode for side canvas; can be enabled using
shortcut 
m (previous shortcut to change the material type
is changed to shift+M) 
- Fixed 
CT in JavaScript when the
sform and qform are different (have different
code) 
- Allowed to specify the spacing for interpolation and extrapolation
for unequally spaced electrodes
 
- Added electrode outlines
 
YAEL paper is finally out 
- Fixed incorrect sub-cortical labels
 
- Deprecated old format (no cache is needed anymore)
 
- Made electrodes opaque on main but transparent in side canvas
 
- Let controllers check if the variable is valid before set to avoid
invalid viewer state during initialization
 
- Added 
get_ijk2ras to get Norig and
Torig matrix 
threeBrain 1.0.1
- Updated controller library to have reasonable input focus
 
- Allow 
MRI slices to be NIfTI format 
- Set slices to be visible by default when the surface is not
available
 
- Fixed transform for 
datacube2 
- Fixed 
qform when reading NIfTI files 
- Fixed 
auto-refine functions in electrode
localization 
- Removed clipboard auto-copy and auto-paste functions since they
conflict with other viewers; instead users can use controllers to copy
and paste state
 
threeBrain 1.0.0 - Egypt
This version is a major update.
- Created 
threeBrain::threeBrain as the formal way to
create brain objects 
- Updated 
JavaScript engine to v150 
- Allow getting 
HTML tags from saved widget so the widget
can be used from Jupyter notebook 
- Added 
$render method to remember viewer states 
- Allowing set title via proxy driver
 
- Added citation information
 
- Fixed hemisphere issue in localization when electrodes are closer to
opposite hemispheres
 
- Added electrode registration from anatomical slice cross-hair
 
threeBrain 0.2.9
This version plans for a major update. Here are some highlights:
- Electrode localization can be done from original 
CT
instead of re-sampled ones 
- Completely isolate 
JavaScript engine from
R code. The JavaScript code is available as
npm package and is used via sub-module 
- Implemented file readers directly from 
JavaScript, this
allows reading files directly in viewer, and no cache is needed 
- No home-brew version of 
threejs is required: standard
npm distribution is used 
- New controller 
GUI is implemented 
- The viewer can be driven via 
JavaScript directly via
event dispatchers 
- Anatomical segmentation map is visible from the side panels; the
voxel values are displayed when setting
crosshair 
Detailed Changes
- Added step size in 
datacube2 material uniforms 
- Upgraded 
threejs to r148, and use
npm distribution “three” 
- Massive code re-factory (variable names, trackball controls, legacy
classes…)
 
- Removed 
data-GUI and use lil-GUI 
- Fixed compass (finally…)
 
- Added title to the viewer
 
- Reworked the whole message signal system, added
ThrottledEventDispatcher.js 
- Added 
MouseKeyboard class to track mouse and keyboard
events, greatly reduced canvas burden 
- Added 
animParameter object to canvas to keep track of
the animation parameters 
- reworked shiny drivers
 
- fixed one-voxel shift issues
 
- Added format support for 
nii, mgh/mgz,
FreeSurfer surface, FreeSurfer node value
binary formats 
- Added function 
threeBrain to allow 3D viewer to run
without cache (with fs only) 
- Fixed memory leak issues in 
JavaScript code 
- Geometry groups can now change its storage path
 
- JS is completely independent now (available on 
npm
now) 
- Peel event dispatcher from the canvas class so the events can be
managed separately
 
- Hide time-stamps when there is no data/animation available
 
- Added experimental support to show labels on regular electrodes;
currently no depth-test is turned on
 
- Added 
GUI support to change electrode label visibility
and size 
- Electrode label size adjusts along with electrode radius
 
handle_resize now put off resizing function when
detecting widget size is too small 
Bug fixes
- Fixing 
xfm not parsed correctly when the line starts
with blank spaces 
- Stopped rendering canvas when canvas is too small (less than 10
pixels)
 
threeBrain 0.2.7
Changes
- Rewired events, allowing to drive the viewer via
JavaScript events 
- Allowed to set animation playback status
 
- Remove modal by default if 
raveio or
ravedash is loaded 
- Edited launch script to always use 
Python3 
Bug fixes
- Fixed installation issues (template brain) on 
Windows,
avoid backslashes 
threeBrain 0.2.6
Changes
- Allowed users to pan the camera when localizing electrodes
 
- Added line segment geometry type that can either display static line
segments (such as 
DTI), or connect two electrodes
dynamically 
- Printing brain now uses more accurate terms
 
- Allowed 
CT to be either path or the actual data when
calling localizing function 
Bug fixes
- Fixed 
NifTi orientation issues and use
sform 
- Fixed localization issue when 
NifTi transform matrix
has determinant not equally to 1 
- Fixed volume shader, resolved shift issues when panning the
camera
 
threeBrain 0.2.5
Changes
- Surface 
sync from voxels now clamp the surface
nodes 
- Added 
Voxel Display controller to toggle volume display
modes 
- Changed shortcut 
l from Voxel Type to
Voxel Display 
- Volume 
fragmentShader uses non-linear function to
calculate fragment colors combined with face normal; this will create
smoother results 
DataCube2 geometry uses ConvexHull instead
of box/sphere to improve the performance 
DataCube2 are no longer hidden when
sync from voxels is on: users can use shortcuts
l and k to easily control the visibility. 
download_template_subject can download other templates
such as fsaverage, cvs_avg35,
bert. 
Bug fixes
- Fixed a volume rendering issue where ray-marching directions are not
calculated correctly
 
- Fixed color not set correctly when changing
Voxel Labels while surface colors are
sync from voxels 
threeBrain 0.2.4
This version mainly works on the electrode localization. Most changes
occur in the JavaScript engine.
Changes
- Allows electrodes to be reset
 
- Displays electrode labels along with the electrodes
 
- Allows resizing electrode size on the fly
 
- Allows resizing the electrode labels
 
- Localization module has been integrated into 
RAVE 
- Added line mesh to mark the distance of the electrode deviating from
its original position. The line color changes with the distance
value.
 
Improvements
- Improved localization precision
 
- Auto-adjusting electrodes now respects the topology
 
- Electrodes in the localization mode now have
LocElectrode class 
- Volume rendering and ray-casters now respects the transform
matrices
 
threeBrain 0.2.3
Changes
- Electrode localization now has a 
shiny application 
Improvements
threeBrain 0.2.2
Changes
- Supported video content to display auditory visual stimuli along the
response
 
- Default to closing the 
default and volume
side folders 
Improvements
- Fixed electrode localization interpolation issue
 
- Proper dispose the localized electrodes
 
- Fixed screenshot and video recording functions
 
- Renamed recording button to 
Chrome-specific 
threeBrain 0.2.1
Changes
- Finally, electrode localization is added!
 
- Added 
TextTexture in the internal code to display text
Sprite easily 
- Can download electrodes as 
csv 
threeBrain 0.2.0
Changes
- More efficient volume rendering with transparency
 
- Added shader functions to surface instances, allowing color
rendering from volume, electrodes, or vertices (major change)
 
- Added color-map generator for surface and volume data
 
- Added method to generate data cube (volume) from 
MNI305
coordinates 
- Optimized loading procedure
 
- Removed 
crayon, base64enc,
htmltools, pryr from dependence 
Improvements
- Bumped 
threejs version to v131dev 
- Fixed surface transparency losing fragments issue
 
- Added loaders to shiny applications to avoid performance issues on
old computers
 
- Fixed electrodes not selected on mouse click-down (on
Firefox) 
threeBrain 0.1.9
Changes
- Added backend engine for volume rendering to show atlas files
 
- Standalone viewers now use native system tools for 
Mac
and Linux (On Windows, it still needs
R to be installed) 
Improvements
- Allows super slow play speed to show animations in millisecond
level
 
- Bumped 
threejs to a newer version and fixed
compatibility issues 
- Animation time range is more reasonable
 
threeBrain 0.1.8
Changes
- Screenshot now downloads 
pdf format 
Improvements
- Fixed 
freesurferformats face index starting from 1
instead of 0 
threeBrain 0.1.7
Changes
- Now displays 
MNI305 coordinates instead of
tkRAS coordinates 
- Removed 
reticulate and related functions to support
native R functions 
Improvements
- Fixed 
MNI305 calculation issues 
- Internally calculates anterior commissure
 
threeBrain 0.1.6
Changes
- Implemented 
view_ct_t1 to view CT aligned
to T1 images 
- Updated document on how to generate 
FreeSurfer
brain 
- Removed dependency to 
nibabel and use native R
packages 
- Re-designed legends, added options to show, hide display
information
 
- Added screenshot to download as image
 
Improvements
- Added hints for keyboard shortcuts
 
threeBrain 0.1.5
Changes
- Import 
FreeSurfer and SUMA files
sulc 
- Control element update
 
- Added 
brain_proxy to control in shiny element 
- Separated display and threshold data
 
FreeMesh material can be switched between
MeshPhongMaterial and MeshLambertMaterial 
Improvements
- UI will blur focus when clicking on canvas
 
- Allow customizing widgets 
background, cex
(font magnification), timestamp (display time) 
- Allow 
controllers (list) to override control UI 
- Added preset 
syncviewers
(threejs_brain(control_presets = ...)) to synchronize
multiple viewers in shiny environment 
threeBrain 0.1.4
Changes
- Implemented a new mesh type - volume rendering using ray
marching
 
- Added alternative methods to read 
.nii files,
nibabel is now optional 
- Customized color palettes and value range for better visualizations
with outliers
 
- Only requires 
T1.mgz or brainmask of
brain.finalsurf is not found. This allows users only run
FreeSurfer to the first stage, which only takes around 8 to
10 minutes instead of 6 hours. 
- Fully compatible with 
htmlwidgets in shiny
mode. When calling threejsBrainOutput under
shiny::renderUI, the DOM element might get
reset by shiny, causing a new 3D viewer created. This might
consume more resource, causing memory leaks and even conflict context
renderings. Also event listeners couldn’t reset correctly. A cache is
created and now is reusing the canvas. 
Improvements
- More flexible directory requirement
 
- Added dispose function to canvas so that memory gets cleared
correctly
 
- Renderer optimization and memory optimization
 
Bug Fixes
- Fixed keyboard listeners locking the keys
 
- Fixed huge memory leaks due to 
threejs not garbage
collecting geometries and textures 
threeBrain 0.1.3
Changes
- File structure change: now directly read in from
FreeSurfer folder 
- Added readers for 
.mgz, .m3z files 
- Added coordinate system to align volume with surface data
 
- Implemented side-viewers, added three side cameras at XYZ axis
 
- Can now read, export electrodes as csv file
 
- Re-write brain generating function
 
- Can display/switch multiple value types
 
- Added transparency to surfaces
 
- Implemented experimental electrode localization
 
- Automatically determine color type (continuous or discrete) and
value range
 
Improvements
- Shortcuts available at here
 
- Optimized electrode value settings
 
threeBrain 0.1.2
Changes
- Re-draw canvas on a 2D context to make customized overlay directly
on canvas.
 
- Implemented continuous and discrete legends to replace D3.
 
- Added support to set main camera position and initial zoom
level.
 
- Added 3D scatter plot and examples.
 
- Use hybrid render mode when animation not required to save battery
usage.
 
- Improved color palette calculation.
 
- Support customized title.
 
Improvements
- Support customized datapath when saving widgets.
 
- Added instructions on how to embed widgets into websites without
R.
 
threeBrain 0.1.1
- Implemented three types of geometries: plane, sphere and free. A
free geometry takes arbitrary geometry vertices and faces to form a 3D
mesh object.
 
- Added animation to sphere object.
 
- Replaced old JavaScript with npx driven modules.
 
- Implemented D3 side-widget
 
threeBrain 0.1.0
- Initial private beta release!