Skip to content


haehn edited this page Feb 14, 2013 · 11 revisions

This page shows the past and future milestones of the XTK project. A milestone is usually associated to a release cut of the toolkit and enables new functionality or provides maintenance updates.

It is always possible to use the bleeding edge of XTK for experiments but official releases should be the way-to-go for productive use.

Release 10: 2/14/13

Release 10 was cut on the 14th of February 2013.


  • change the underlying matrix class to a much faster implementation (factor 10x)
  • introduce X.vector and X.matrix and export all symbols
  • support for .OBJ files (thx to @edwardsp)
  • faster and more reliable DICOM parsing
  • touch event support for 2D and 3D interaction
  • much faster unzip library (zlib.js) adding only 1 second overhead for unzipping a regular MRI image
  • several bug fixes, testing and documentation improvements

Release 9: 9/7/12

Release 9 was cut on the 7th of September 2012.


  • new API which prefers JavaScript properties over methods
  object.color = [1,0,0]; // before: object.setColor(1,0,0);
  object.children.push(b); // before: object.children().push(b);
  object.transform.rotateX(1); // before: object.transform().rotateX(1);
  object.visible = true; // before: object.setVisible(true);
  object.opacity = 0.5; // before: object.setOpacity(0.5);
  // three new object types:
  mesh = new X.mesh(); // before: mesh = new X.object();
  mesh.file = 'test.vtk'; // before: mesh.load('test.vtk');
  fibers = new X.fibers(); // before fibers = new X.object();
  fibers.file = 'test.trk'; // before fibers.load('test.trk);
  volume = new X.volume(); // before volume = new X.object();
  • 2D Rendering based on HTML5 Canvas
    • displays volumes in different orientations
    • works on iOS, Android etc.
  • rendering performance increased
    • especially for volume rendering through new ordering mechanism
  • copy constructors to clone an X.object
  var new_object = new X.object(old_object);
  • file parsing **much faster** now through the use of TypedArrays
    • volume reslicing **much faster**
  • binary .STL support (auto detection between ASCII and binary)
  • Freesurfer Label file support
  • NIfTI support (.NII, .NII.GZ)
  • DICOM support (.DICOM, .DCM, no extension) for uncompressed data
  • Window/Level adjustment support
  • use requestAnimationFrame for smoother animations/interaction
  • new API documentation based on a custom doc tool (XDOC)
  • new build system which is cleaner and more robust (XBUILD)
  • fully tested on a nightly base (also visual tests), testing coverage > 85%
  • a lot of bug fixes..

Release 5,6,7,8: n/A

Release 5,6,7,8 were postponed.


  • speed-ups (f.e. in the ordering loop), especially in connection with volume rendering
  • copy constructors for all X.objects and derived classes to support JSON encapsulation
  • smaller fixes, more testing
  • maybe:
    • 2D renderer (orthographic camera)
    • NIfTI (.nii/.nii.gz) file reading
    • 16 bit texture support (right now everything gets compressed to 8 bit)
    • Window/Level adjustments for X.volumes
    • Fix orientation for all X.volume parsers (taking the scan direction into account)
    • Add option to not listen to X.RenderEvents and then switch all Animations to RequestAnimationFrame
    • speed-up parsing (f.e. replace if by switch etc.)

Release 4: 04/12/12

Release 4 was cut on the 12th of April 2012.


  • add Scalar to each Vertex
    • can be used for thresholding etc.
    • linear gradient color mapping for each scalar
  • Label Map support to overlay a loaded volume
    • Color Map support (mapping scalar values to colors) using 3D Slicer's or Freesurfer's bundled color maps
  • Freesurfer curvature file support
    • .crv file reading
    • mapping to scalar infrastructure
  • .MGH/.MGZ single Dicom format reading

Release 3b: 03/31/12

Release 3b was a patch release to fix a bug on Windows systems which did not show X.textures correctly. The bug was discovered by Mark Zhang.

Release 3a: 03/20/12

Release 3a was a patch release to fix a bug which could provoke an end-less loop when interacting during the loading stage. The bug was discovered by the XTK developers and the patch release was cut on the 20th of March 2012.

Release 3: 03/12/12

Release 3 was released on the 12th of March 2012.


  • X.slice and X.volume classes to represent image/volume data
  • .nrrd reading (Single DICOM files)
  • Volume Rendering
  • rendering statistics
  • interactor callbacks to perform custom actions on interaction
  • code cleanup by revising the exports (impacts size of library)
  • tests submitted to CDash

Release 2: 02/12/12

Release 2 was cut on the 12th of February 2012.


  • Freesurfer mesh support
  • advanced compilation to reduce the size of the library to 1/3
  • vtk point data support (single points rather than triangles)
  • code cleanup

Release 1: 01/12/12

Release 1 was the first official release of XTK on the 12th of January 2012. Beside being an actual release cut with exciting features, this release includes infrastructure to facilitate further development of the toolkit.


  • Open source hosted in a public github repository
  • The XTK Build system, providing:
    • Continuous builds and testing on different platforms with support for Chrome, Firefox, Safari and Opera browsers - all monitored by CDash
    • A compiled xtk.js file which can be used with or without using the Google Closure Library
  • Training material to get started with XTK
    • Several lessons explaining XTK step-by-step
    • Several demos showing more advanced use of XTK
  • Ambient lighting
  • Camera with mouse and keyboard interactor
  • Integration of the Constructive Solid Geometry (CSG) library supporting Boolean operations like union and intersection on meshes
  • Primitive X.object types: cubes, spheres, cylinders using CSG
  • X.object support for textures
  • X.object support for global transforms with convenience methods to rotate and translate
  • Native reading of binary TrackVis (.trk) files
  • Native reading of ascii VTK (.vtk) files
  • Native reading of ascii STL (.stl) files
  • Object Picking
  • X.object caption property which shows a tooltip on hovering over an object
  • Asynchronous loading with optional progress bar
  • Support for animations using standard Javascript functionality (setInterval..)

Release 0

The Release 0 was the pre-release bleeding edge version of XTK, closed-source until Release 1, and only available to collaborators or sponsors.