XTK Lesson 11
Slice it with colors!
author(s):
XTK
HTML
<script src="https://get.goXTK.com/xtk_xdat.gui.js"></script>
CSS
html, body {
background-color:#000;
margin: 0;
padding: 0;
height: 100%;
overflow: hidden !important;
}
JavaScript
window.onload = function() {
// create and initialize a 3D renderer
var r = new X.renderer3D();
r.init();
// create a X.volume
var volume = new X.volume();
// .. and attach the single-file dicom in .NRRD format
// this works with gzip/gz/raw encoded NRRD files but XTK also supports other
// formats like MGH/MGZ
volume.file = 'https://fly.cs.umb.edu/data/X/vol.nrrd';
// we also attach a label map to show segmentations on a slice-by-slice base
volume.labelmap.file = 'https://fly.cs.umb.edu/data/X/seg.nrrd';
// .. and use a color table to map the label map values to colors
volume.labelmap.colortable.file = 'https://fly.cs.umb.edu/data/X/genericanatomy.txt';
// add the volume
r.add(volume);
// the onShowtime method gets executed after all files were fully loaded and
// just before the first rendering attempt
r.onShowtime = function() {
//
// The GUI panel
//
// (we need to create this during onShowtime(..) since we do not know the
// volume dimensions before the loading was completed)
var gui = new dat.GUI();
// the following configures the gui for interacting with the X.volume
var volumegui = gui.addFolder('Volume');
// now we can configure controllers which..
// .. switch between slicing and volume rendering
var vrController = volumegui.add(volume, 'volumeRendering');
// .. configure the volume rendering opacity
var opacityController = volumegui.add(volume, 'opacity', 0, 1).listen();
// .. and the threshold in the min..max range
var lowerThresholdController = volumegui.add(volume, 'lowerThreshold',
volume.min, volume.max);
var upperThresholdController = volumegui.add(volume, 'upperThreshold',
volume.min, volume.max);
// the indexX,Y,Z are the currently displayed slice indices in the range
// 0..dimensions-1
var sliceXController = volumegui.add(volume, 'indexX', 0,
volume.range[0] - 1);
var sliceYController...