This is an archive of the old MediaWiki-based ImageJ wiki. The current website can be found at imagej.net.

3D Viewer: 4D Viewer

(Return to the Developer Documentation page)
(Return to the main 3D_Viewer page)


How to visualize 4D data

You can download example source code for this HowTo here.


Sometimes, 3D data are recorded over time, and it is desirable to visualize those data, i.e. show it in a time line, being able to animate it, etc. This is possible with the viewer. The following lines of code show how to do it programmatically:

// Open a hyperstack
ImagePlus imp = IJ.openImage(
      Prefs.getImagesURL() + "Spindly-GFP.zip");

// Create a universe and show it
Image3DUniverse univ = new Image3DUniverse();
univ.show();

// load the stack in the viewer
univ.addVoltex(imp);

// get the Timeline object
Timeline tl = univ.getTimeline();

// start playback
tl.play();

// wait a bit
try {
        Thread.sleep(5000);
} catch(InterruptedException e) {}


// Stop animation
tl.pause();

The 3D viewer automatically recognizes hyperstacks and shows a control panel on demand, providing buttons for playback, pause, etc.

Image3DUniverse allows to retrieve a Timeline object, which allows to call the corresponding functions programmatically.


Important methods of Viewer4D

Next to play() and pause(), the Timeline class provides several methods for stepping through the time frames of the 4D data:

/** Set bounce-back or repeat */
public void setBounceBack(boolean bounce);
public boolean getBounceBack();

/** Speed up the animation. */
public void faster();

/** Slows the animation down. */
public void slower();

/** Record the whole timeline */
public ImagePlus record();

/** Start animation.  */
public synchronized void play();

/** Stop/pause animation */
public synchronized void pause();

/** Display next timepoint. */
public void next();

/** Display previous timepoint. */
public void previous();

/** Display first timepoint. */
public void first();

/** Display last timepoint. */
public void last();