This is very similar to the first example; it just uses volumes instead of surfaces. This script loads an intensity volume as a background image and then successively loads a series of segmentation overlays, taking a screen shot of each one. This assumes all files are in the local directory.
set err [catch {
# Load an LUT file for the segementation to use. Get its ID. Set
# its label to something good.
set lutID [MakeNewColorLUT]
SetColorLUTFileName $lutID [file join $env(FREESURFER_HOME) jeans_labels.txt]
SetColorLUTLabel $lutID "Hires LUT"
# Load base level. The LoadVolume commmand makes a new layer in
# it, and automatically adds it to the current view at the first
# available draw level, 0. Give it a label.
set fnBaseVolume intensity_target.mgz
set baseLayerID [LoadVolume $fnBaseVolume 1 [GetMainFrameID]]
SetLayerLabel $baseLayerID "Base volume"
# Load the first segmentation volume, making a layer for it and
# adding to the next available draw level, 1. Save the layer
# ID. Also get the data collection ID as we will use that later to
# change the volume data to which the collection is pointing.
set nVol 0
set fnSegVol [format "hires_a256nl_%03d.mgz" $nVol]
set layerID [LoadVolume $fnSegVol 1 [GetMainFrameID]]
set colID [Get2DMRILayerVolumeCollection $layerID]
# Set up the layer as a segmentation volume: lut color map, draw
# zero values clear, and assign the LUT we got earlier. Give it a
# label.
Set2DMRILayerColorMapMethod $layerID lut
Set2DMRILayerDrawZeroClear $layerID true
Set2DMRILayerColorLUT $layerID $lutID
SetLayerLabel $layerID "Segmentation Overlay"
# Set a location in the view.
SetViewRASCenter 0 28 22 -40
SetViewZoomLevel 0 2
# For each volume...
for { set nVol 0 } { $nVol <= 84 } { incr nVol } {
# Generate a volume file name using our base name and the number.
set fnSegVol [format "hires_a256nl_%03d.mgz" $nVol]
# Set the volume file name in the collection to this new
# volume and tell the collection to load the volume.
SetVolumeCollectionFileName $colID $fnSegVol
SetStatusBarText "Loading $fnSegVol..."
LoadVolumeFromFileName $colID
# Force a window update.
UpdateFrame [GetMainFrameID]
# Take a screen shot.
set fnCapture [format "capture-%04d.tiff" $nVol]
CaptureFrameToFile [GetMainFrameID] $fnCapture
}
} sResult]
# Check for errors.
if { 0 != $err } {
::tkcon_tcl_puts "Script failed: $sResult"
} else {
::tkcon_tcl_puts "Script complete."
}
