Changelog
Source:NEWS.md
threeBrain 1.0.2
- Removed a
shader
loop that accidentally used dynamic variable for looping, which may crash onWindows
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 theArcball
radius; mouse positions is calculated whenever mouse-down event is triggered (allowing more accurate track-ball calculation inShiny
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 displayDBS
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
tov160
with light model improved - Added
rave_slices.nii
to allowedMRI
prefix inFreeSurfer
folder with highest priority, such that this image will be treated as default volume to load in side canvas (default is stillbrain.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 withRStudio
) - 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 inRAVE
-YAEL
module - Allow
brain
to plot with additional customized geometries - Added
plot_slides
to plotMRI
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 toshift+M
) - Fixed
CT
inJavaScript
when thesform
andqform
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 getNorig
andTorig
matrix
threeBrain 1.0.1
CRAN release: 2023-07-03
- Updated controller library to have reasonable input focus
- Allow
MRI
slices to beNIfTI
format - Set slices to be visible by default when the surface is not available
- Fixed transform for
datacube2
- Fixed
qform
when readingNIfTI
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
CRAN release: 2023-06-03
This version is a major update.
- Created
threeBrain::threeBrain
as the formal way to create brain objects - Updated
JavaScript
engine tov150
- Allow getting
HTML
tags from saved widget so the widget can be used fromJupyter
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
CRAN release: 2023-03-14
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 fromR
code. TheJavaScript
code is available asnpm
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: standardnpm
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 settingcrosshair
Detailed Changes
- Added step size in
datacube2
material uniforms - Upgraded
threejs
tor148
, and usenpm
distribution “three” - Massive code re-factory (variable names, trackball controls, legacy classes…)
- Removed
data-GUI
and uselil-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
threeBrain 0.2.7
CRAN release: 2022-10-15
threeBrain 0.2.6
CRAN release: 2022-08-25
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
threeBrain 0.2.5
CRAN release: 2022-05-30
Changes
- Surface
sync from voxels
now clamp the surface nodes - Added
Voxel Display
controller to toggle volume display modes - Changed shortcut
l
fromVoxel Type
toVoxel Display
- Volume
fragmentShader
uses non-linear function to calculate fragment colors combined with face normal; this will create smoother results -
DataCube2
geometry usesConvexHull
instead of box/sphere to improve the performance -
DataCube2
are no longer hidden whensync from voxels
is on: users can use shortcutsl
andk
to easily control the visibility. -
download_template_subject
can download other templates such asfsaverage
,cvs_avg35
,bert
.
threeBrain 0.2.4
CRAN release: 2021-12-03
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.
threeBrain 0.2.2
threeBrain 0.2.0
CRAN release: 2021-07-27
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
threeBrain 0.1.9
CRAN release: 2021-01-10
threeBrain 0.1.6
threeBrain 0.1.5
CRAN release: 2020-01-20
Changes
- Import
FreeSurfer
andSUMA
filessulc
- Control element update
- Added
brain_proxy
to control in shiny element - Separated display and threshold data
-
FreeMesh
material can be switched betweenMeshPhongMaterial
andMeshLambertMaterial
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
CRAN release: 2019-10-18
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
orbrainmask
ofbrain.finalsurf
is not found. This allows users only runFreeSurfer
to the first stage, which only takes around 8 to 10 minutes instead of 6 hours. - Fully compatible with
htmlwidgets
inshiny
mode. When callingthreejsBrainOutput
undershiny::renderUI
, theDOM
element might get reset byshiny
, 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.
threeBrain 0.1.3
CRAN release: 2019-09-10
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
CRAN release: 2019-06-28
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.