Annot3D Documentation

Also visit the Annot3D Home Page


DESCRIPTION

Annot3D is 3D annotation system that allows users to add various 3D annotations to 3D volume data from CT scans (DICOM format). Users can then interact with this data (rotate, translate, scale, pick annotations, etc.) via a simple viewing window. The underlying rendering system is the Visualization ToolKit (VTK). Annot3D can be run locally on Windows and Linux. It can also be run as a webserver on Windows.

Annot3d is designed to be a simple and integrated method for annotating and packaging 3D visualizations for educational purposes. Specifically, Annot3D is meant to be used as a tool for human anatomy education.

The current version of Annot3D fulfills the following requirements:

Annot3D provides the ability to add the following annotations to models: buttons (dots and boxes), lines, boundaries, text, clipping planes, and spheres/boxes that allow a portion of the data volume to be highlighted or visualized by removal of surrounding data.

The Annot3D authoring system currently consists of XML files generated by hand to contain all information related to a dataset and its annotations.


DOWNLOAD

Annot3D software can be downloaded from the Annot3D Download page.

FEATURES


XML FILES

Annot3D uses .xml text to describe the data and annotations that should be added to a scene (see Scene Examples ). After a scene has been loaded, .xml text is then used to describe the commands that should be run on the scene (see UserEvent Examples ). The best way to become familiar with using XML to build annotated scenes for use in Annot3D is to follow these steps: If you want to write your own tcl code to make new demos, XML Files are loaded by running the renderFromXMLFile or renderFromXMLString procedures (see makeXMLParser.tcl ).

Many of the XML files in the Annot3D File Structure are used in the DEMOS. These demos are updated by changing the XML files they use. Download the XML files here to get the current version of the demos.

Scene Examples UserEvent Examples Download Current XML Files


Scene Examples

Scene type xml is used to describe everything required to build a scene namely a renderer (window initiation), data set(s), and annotation objects. The Annot3D xmlParser passes the scene xml options to the correct sceneProcedure.

All of the available scene tags (followed by descriptions) are included in /xmlFiles/sceneTags.txt (view here). Just scroll down to find the type of annotation that you want to add, copy the entire tag, and change the names and options to fit your needs.
You may use an annotation type more than once. Just make sure that the name is different for each occurance.

Annot3D comes with many scene type .xml example files. They are found in the $env(ANNOT_ROOT)/xmlFiles/ directory. These are used by the Annot3D DEMOS. The header of each demo file lists which .xml file(s) it uses. The demos provide good examples of how to use each type of annotation and how to manage them together.


UserEvent Examples

UserEvent type xml is used to describe interactions with the scene such as moving objects, taking pictures, and other commands. The Annot3D xmlParser passes the userEvent xml options to the correct userEventProcedure.

All of the available userEvent tags (followed by descriptions) are included in /xmlFiles/userEventTags.txt (view here). Just scroll down to find the type of userEvent that you want to add, copy the entire tag, and change the names and options to fit your needs. You may use a specific useEvent as many times as you want.

Annot3D comes with many userEvent type .xml example files. They are found in the $env(ANNOT_ROOT)/xmlFiles/ directory. These are used by the Annot3D DEMOS. The header of each demo file lists which .xml file(s) it uses. The demos provide good examples of how to use each type of userEvent and how to combine them.


Download Current XML Files

These files should be saved in C:/~/Annot3D/xmlFiles/ . You will need to unzip this folder into this location. When you are finished, the files structure should match that of the FILE STURCTURE on this page.

Get XML Files Here

xmlFiles.zip

PROCEDURES

Annot3D uses vtk procedures to run the src code. The following procedures are included in the Annot3D package:
includes sceneProcedures userEventProcedures webServerProcedures xmlParserProcedures

Examples


includes

The includes procedures are used to include all of the source code in Annot3D (i.e. all other procedures).
libIncludes.tcl

libIncludes.tcl

Description

Includes all the source code procedures in the Annotation Project:

Variables

none

Use

source $env(ANNOT_ROOT)/src/includes/libIncludes.tcl

XML Tag used

<renderer>

sceneProcedures

The sceneProcedures are used by the parser to build a scene with data and annotations. All sceneProcedures use the environment variable $env(ClientID). They also add to either $env(MakeObjects) or $env('$IDname'RenderObjects) when an object is created.
libActorLabel.tcl libBox.tcl libClipCube.tcl libClipPlane.tcl libClipSphere.tcl libDot.tcl libENVset.tcl libLine.tcl libPointPicker.tcl libPointsReader.tcl libRenderer.tcl libSurfaceViewer.tcl libVolumeReader.tcl

libActorLabel.tcl

makeActorLabel

makeActorLabel

Description

Creates a prop picker (actorLabelPicker) and displays moving, still, and general texts (with declared options) for each picked actor. Controlls any number of actors and all options for when to display text.

Variables

MovingLabel Actor-- This text displays at the location of the mouse when an actor is picked.
VariableType | DescriptionExample
Mfont (text) font size of the moving label. 15
Mbold (text) bold option for the moving label. (case sensitive. Any other text will result in an error.) BoldOn or BoldOff
Mshadow (text) shadow option for the moving label. (case sensitive. Any other text will result in an error.) ShadowOn or ShadowOff
Mr (float) amount of red coloring in the moving label. 0.25
Mg (float) amount of green coloring in the moving label. 0
Mb (float) amount of blue coloring in the moving label. 3.0
MnaT (text) MovingNoActorText-text displayed when area outside actors is picked. "nothing picked here..."
MdT (text) MovingDefalutText-text displayed if no moving text is specified. "{default moving statement}"
MnaO (text) MovingNoActorOpt- visibility option when area outside actors is picked. (case sensitive. Any other text will result in an error.) VisibilityOn or VisibilityOff
StillLabel Actor-- This text displays at a given location (Sh&Sv) when an actor is picked.
VariableType | DescriptionExample
Sfont (text) font size of the still label. 20.0
Sbold (text) bold option for the still label. (case sensitive. Any other text will result in an error.) BoldOn or BoldOff
Sshadow (text) shadow option for the still label. (case sensitive. Any other text will result in an error.) ShadowOn or ShadowOff
Sr (float) amount of red coloring in the still label. 0.25
Sg (float) amount of green coloring in the still label. 0
Sb (float) amount of blue coloring in the still label. 3.0
Sh (float) horizontal position of the still label. (this is the percentage distance from the left-bottom corner of the screen.) .05
Sv (float) verticle position of the still label. (this is the percentage distance from the left-bottom corner of the screen.) 0.05
SnaT (text) StillNoActorText-text displayed when area outside actors is picked. "Nothing Picked"
SdT (text) StillDefalutText-text displayed if no still text is specified. "{default still statement}"
SnaO (text) StillNoActorOpt- visibility option when area outside actors is picked. (case sensitive. Any other text will result in an error.) VisibilityOn or VisibilityOff
GeneralLabel Actor-- This displays the same text at a given location (Gh&Gv).
VariableType | DescriptionExample
Gfont (text) font size of the general label. 18
Gbold (text) bold option for the general label. (case sensitive. Any other text will result in an error.) BoldOn or BoldOff
Gshadow (text) shadow option for the gneneral label. (case sensitive. Any other text will result in an error.) ShadowOn or ShadowOff
Gr (float) amount of red coloring in the general label. 0.25
Gg (float) amount of green coloring in the general label. 0
Gb (float) amount of blue coloring in the general label. 3.0
Gh (float) horizontal position of the general label. (this is the percentage distance from the left-bottom corner of the screen.) .05
Gv (float) verticle position of the general label. (this is the percentage distance from the left-bottom corner of the screen.) 0.95
Gtext (text) GeneralText - text displayed when general actor is on. "I say the same thing. I do not move."
GaO (text) GeneralActorOpt- visibility option when any actor is picked. (case sensitive. Any other text will result in an error.) VisibilityOn or VisibilityOff
GnaO (text) GeneralNoActorOpt-visibility option when area outside actors is picked. (case sensitive. Any other text will result in an error.) VisibilityOn or VisibilityOff
GnopickOpt(text) GeneralNoPickOpt- visibility option when nothing is picked, before picking. (case sensitive. Any other text will result in an error.) VisibilityOn or VisibilityOff
Actors-- These are the actors and their actions associated with being picked. At least one actor must be defined. If an actor (or it's text statements) is not specified here, the default moving and still statements will display when that actor is picked.
VariableType | DescriptionExample
Actors (list) Actors- list of name(s) of the actor(s) to be picked. [list skin dotActor dataoutline]
MTs (list) MovingTexts- list of text(s) to be displayed at the moving label location. [list "{I am skin}" "{}" Iamanoutline]
STs (list) StillTexts- list of text(s) to be displayed at the still label location. [list "{This is skin}" "{}" Thisisanoutline]
Cs (list) Commands- list of command statement(s) to be caried out in addition to still and moving label display. [list {skin VisibilityOff} {} {clipPlaneOn plane1 dataouline}]

Use

Created Object(s)

'$IDname'MovingLabelMapper, '$IDname'MovingLabelActor,
'$IDname'StillLabelMapper, '$IDname'StillLabelActor,
'$IDname'GeneralLabelMapper, '$IDname'GeneralLabelActor,
'$IDname'OutlineLabels, '$IDname'OutlineLabelsMapper, '$IDname'OutlineLabelsActor,
'$IDname'ActorLabelPicker

Created env() variable(s)

'$IDname'LabelOptions

Used env() variable(s)

'$IDname'InteractorOpt, '$IDname'LabelOptions, labelOptions, actorLabelPicker, movingLabelMapper, movingLabelActor, stillLabelMapper, stillLabelActor, generalLabelActor, outlineLabels, renWin

XML Tag used

<movingText> <stillText> <generalText> <action>

libBox.tcl

makeBox renderBox

makeBox

Description

Builds a Box (name) with the declared side lengths (xl,yl,&zl).

Variables

VariableType | DescriptionExample
name (text) name of the box. demobox
xl (float) length of the box along the x axis. 10.0
yl (float) length of the box along the y axis. 10
zl (float) length of the box along the z axis. 0

Use

makeBox demobox 10 20 10

Created Object(s)

'$name'BoxSource

XML Tag used

<box>

renderBox

Description

Adds a Box (name) to a renderer ('$IDname'Renderer) with declared angle rotations (xr,yr,&zr), position (x,y,&z), color (r,g,&b), solid/wire frame option, and opacity.

Variables

VariableType | DescriptionExample
name (text) name of the box. This must be the same name used in makeBox {name} demobox
xr (float) rotation in degrees from x axis. 90.0
yr (float) rotation in degrees from y axis. 30
zr (float) rotation in degrees from z axis. 0
x (float) x coordinate of the center of the box. 50.0
y (float) y coordinate of the center of the box. -50
z (float) z coordinate of the center of the box. 0
r (float) amount of red coloring in the box. 0.25
g (float) amount of green coloring in the box. 0
b (float) amount of blue coloring in the box. 3
SorW (text) solid or wire frame option. (note: any entry other than S will result in a wireframe box.) S or W
opacity (float) percentage of opacity (see through-ness) for the box with 1.00 being solid and 0 being transparent.) 0.30

Use

renderBox demobox 0 0 0 20 0 20 1 0 0 W 1

Created Object(s)

'$IDname$name'BoxMapper, '$IDname$name'Actor

Actor(s) Added to Renderer

'$IDname$name'Actor

XML Tag used

<box>

libClipCube.tcl

makeClipCube renderClipCube clipCubeOn/Off

makeClipCube

Description

Builds a clipping cube (name) through the given actor (actorObjectName) with declared boundaries (xmin,xmax,ymin,ymax,zmin,&zmax).

Variables

VariableType | DescriptionExample
name (text) name of the clippingCube. democlipcube
xmin (float) x coordinate of the minimum edge of the cube. 0
xmax (float) x coordinate of the maximum edge of the cube. 200.0
ymin (float) y coordinate of the minimum edge of the cube. -100
ymax (float) y coordinate of the maximum edge of the cube. 150
zmin (float) z coordinate of the minimum edge of the cube 25.0
zmax (float) z coordinate of the maximum edge of the cube 125
actorObjectName(text) this specifies the object to be clipped. (Note that this is not the actor name, it is the object name usually used to SetInput for the vtkPolyDataMapper). skinNormals

Use

makeClipCube democlipcube 0 200 50 150 25 125 headDataNormals

Created Object(s)

'$name'Cube, '$name'CubeClipper

XML Tag used

<clipCube>

renderClipCube

Description

Adds a clipCube (name) to a renderer ('$IDname'Renderer) with declared inside color (ir,ig,&ib), and outside color (or,og,&ob).

Variables

VariableType | DescriptionExample
name (text) name of the clippingCube. This must be the same name used in makeClipCube {name} democlipcube
ir (float) this is amount of red coloring on the inside of the object to be clipped. 0.25
ig (float) this is amount of green coloring on the inside of the object to be clipped. 0
ib (float) this is amount of blue coloring on the inside of the object to be clipped. 3
or (float) this is amount of red coloring on the outside of the object to be clipped. 0.5
og (float) this is amount of green coloring on the outside of the object to be clipped. 0.0
ob (float) this is amount of blue coloring on the outside of the object to be clipped. 1

Use

renderClipCube democlipcube .25 .5 .25 .25 .25 .5

Created Object(s)

'$IDname$name'CubeMapper, '$IDname$name'CubeProp, '$IDname$name'Actor

Actor(s) Added to Renderer

'$IDname$name'Actor

XML Tag used

<clipCube>

clipCubeOn/Off

Description

Truns on/off a clipping cube (clipCubeName) that was previously defined (using makeClipCube) to cut through the declared actor (cutActorName).

Variables

VariableType | DescriptionExample
cutActorName (text) name of the actor that the cube cuts through (IDname will be appended). (Note: this is the full actor name, NOT the actorObjectName that was used to in makeClipCube) skinData
clipCubeName (text) name of the clipping cube. This must be the same name used in makeClipCube {name} democlipcube

Use

clipCubeOn headData democlipcube
clipCubeOff headData democlipcube

XML Tag used

<clipCube>

libClipPlane.tcl

makeClipPlane renderClipPlane clipPlaneOn/Off

makeClipPlane

Description

Builds a clipping plane (name) through the given actor (actorObjectName) with the declared location origin (x,y,&z) and normal orientation (nx,ny,&nz).

Variables

VariableType | DescriptionExample
name (text) name of the clippingPlane. plane1
x (float) x coordinate of the center of the plane. 100.0
y (float) y coordinate of the center of the plane. -100
z (float) z coordinate of the center of the plane. 0
nx (float) orientation normal of the x axis. (this orients the plane to display values in the volume with a x-value <= 0) -1
ny (float) orientation normal of the y axis. (this orients the plane to display values in the volume with a y-value >= 0) +1
nz (float) orientation normal of the y axis. (this orients the plane parallel to the z-axis) 0
actorObjectName(text) this specifies the object to be clipped. (Note that this is not the actor name, it is the object name usually used to SetInput for the vtkPolyDataMapper). skinNormals

Use

makeClipPlane democlipplane 100 100 75 0 1 0 headDataNormals

Created Object(s)

'$name'Plane, '$name'PlaneClipper

XML Tag used

<clipPlane>

renderClipPlane

Description

Adds a clipPlane (name) to a renderer ('$IDname'Renderer) with declared inside color (ir,ig,&ib) and outside color (or,og,&ob).

Variables

VariableType | DescriptionExample
name (text) name of the clippingPlane. This must be the same name used in makeClipPlane {name} plane1
ir (float) this is amount of red coloring on the inside of the object to be clipped. 0.25
ig (float) this is amount of green coloring on the inside of the object to be clipped. 0
ib (float) this is amount of blue coloring on the inside of the object to be clipped. 3
or (float) this is amount of red coloring on the outside of the object to be clipped. 0.5
og (float) this is amount of green coloring on the outside of the object to be clipped. 0.0
ob (float) this is amount of blue coloring on the outside of the object to be clipped. 1

Use

renderClipPlane democlipplane .25 .5 .25 .25 .25 .5

Created Object(s)

'$IDname$name'PlaneMapper, '$IDname$name'PlaneProp, '$IDname$name'Actor

Actor(s) Added to Renderer

'$IDname$name'Actor

XML Tag used

<clipPlane>

clipPlaneOn/Off

Description

Truns on/off a clipping plane (clipPlaneName) that was previously defined (using makeClipPlane) to cut through the declared actor (cutActorName).

Variables

VariableType | DescriptionExample
cutActorName (text) name of the actor that the plane cuts through (IDname will be appended). (Note: this is the full actor name, NOT the actorObjectName that was used to in makeClipPlane) skinData
clipPlaneName (text) name of the clipping plane. This must be the same name used in makeClipPlane {name} plane1

Use

clipPlaneOn headData democlipplane
clipPlaneOff headData democlipplane

XML Tag used

<clipPlane>

libClipSphere.tcl

makeClipSphere renderClipSphere clipSphereOn/Off

makeClipSphere

Description

Builds a clipping sphere (name) through the given actor (actorObjectName) with the declared location origin (x,y,&z) and radius (r).

Variables

VariableType | DescriptionExample
name (text) name of the clippingSphere. sphere1
x (float) x coordinate of the center of the sphere. 100.0
y (float) y coordinate of the center of the sphere. -100
z (float) z coordinate of the center of the sphere. 0
r (float) radius of the sphere. 50.0
actorObjectName(text) this specifies the object to be clipped. (Note that this is not the actor name, it is the object name usually used to SetInput for the vtkPolyDataMapper). skinNormals

Use

makeClipSphere democlipsphere 100 100 75 50 headDataNormals

Created Object(s)

'$name'Sphere, '$name'SphereClipper

XML Tag used

<clipSphere>

renderClipSphere

Description

Adds a clipSphere (name) to a renderer ('$IDname'Renderer) with declared inside color (ir,ig,&ib) and outside color (or,og,&ob).

Variables

VariableType | DescriptionExample
name (text) name of the clippingSphere. This must be the same name used in makeClipCube {name} sphere1
ir (float) this is amount of red coloring on the inside of the object to be clipped. 0.25
ig (float) this is amount of green coloring on the inside of the object to be clipped. 0
ib (float) this is amount of blue coloring on the inside of the object to be clipped. 3
or (float) this is amount of red coloring on the outside of the object to be clipped. 0.5
og (float) this is amount of green coloring on the outside of the object to be clipped. 0.0
ob (float) this is amount of blue coloring on the outside of the object to be clipped. 1

Use

renderClipSphere democlipsphere .25 .5 .25 .25 .25 .5

Created Object(s)

'$IDname$name'SphereMapper, '$IDname$name'SphereProp, '$IDname$name'Actor

Actor(s) Added to Renderer

'$IDname$name'Actor

XML Tag used

<clipSphere>

clipSphereOn/Off

Description

Truns on/off a clipping sphere (clipSphereName) that was previously defined (using makeClipSphere) to cut through the declared actor (cutActorName).

Variables

VariableType | DescriptionExample
cutActorName (text) name of the actor that the sphere cuts through (IDname will be appended). (Note: this is the full actor name, NOT the actorObjectName that was used to in makeClipSphere) skinData
clipSphereName(text) name of the clipping sphere. This must be the same name used in makeClipSphere {name} sphere1

Use

clipSphereOn headData democlipsphere
clipSphereOff headData democlipsphere

XML Tag used

<clipSphere>

libDot.tcl

makeDot renderDot

makeDot

Description

Builds a Dot (name) with declared radius.

Variables

VariableType | DescriptionExample
name (text) name of the dot. dot1
radius (float) radius of the dot in world coordinate values. 10.0

Use

makeDot demodot 10

Created Object(s)

'$name'DotSource

XML Tag used

<dot>

renderDot

Description

Adds a Dot (name) to a renderer ('$IDname'Renderer) with declared position (x,y,&z), color (r,g,&b), and opacity.

Variables

VariableType | DescriptionExample
name (text) name of the Dot. This must be the same name used in makeDot {name} dot1
x (float) x coordinate of the center of the dot. 50.0
y (float) y coordinate of the center of the dot. -50
z (float) z coordinate of the center of the dot. 0
r (float) amount of red coloring in the dot. 0.25
g (float) amount of green coloring in the dot. 0
b (float) amount of blue coloring in the dot. 3
opacity (float) percentage of opacity (see through-ness) for the dot with 1.00 being solid and 0 being transparent 0.30

Use

renderDot demodot 20 0 0 1 0 0 1

Created Object(s)

'$IDname$name'DotMapper, '$IDname$name'Actor

Actor(s) Added to Renderer

'$IDname$name'Actor

XML Tag used

<dot>

libENVset.tcl

makeEnv

makeEnv

Description

Sets the global variables for the given IDname including env(ClientID).

Variables

VariableType | DescriptionExample
IDname (text) name of the current clientID one

Use

makeEnv oneRen

Created env() variable(s)

ClientID, renWin, actorLabelPicker, movingLabelMapper, movingLabelActor, stillLabelMapper, stillLabelActor, generalLabelActor, outlineLabels, labelOptions

XML Tag used

<scene>

libLine.tcl

makeLine renderLine

makeLine

Description

Builds a line (name) from the declared starting point (sx,sy,&sz) to the declared finishing point (fx,fy,&fz).

Variables

VariableType | DescriptionExample
name (text) name of the line. line1
sx (float) x coordinate of the line starting point. 10.0
sy (float) y coordinate of the line starting point. -10
sz (float) z coordinate of the line starting point. 0
fx (float) x coordinate of the line finishing point. 10.0
fy (float) y coordinate of the line finishing point. -10
fz (float) z coordinate of the line finishing point. 0

Use

makeLine demoline 0 0 0 150 0 0

Created Object(s)

'$name'LineSource

XML Tag used

<line>

renderLine

Description

Adds a Line (name) to a renderer ('$IDname'Renderer) with declared color (r,g,&b).

Variables

VariableType | DescriptionExample
name (text) name of the line. This must be the same name used in makeLine {name} line1
r (float) amount of red coloring in the line. 0.25
g (float) amount of green coloring in the line. 0
b (float) amount of blue coloring in the line. 3

Use

renderLine demoline 1 0 0

Created Object(s)

'$IDname$name'LineMapper, '$IDname$name'Actor

Actor(s) Added to Renderer

'$IDname$name'Actor

XML Tag used

<line>

libPointPicker.tcl

makePointPicker pointPickerCallback registerPointCallback pointPickerOn

makePointPicker

Description

Creates a pointPicker object to display the coords at a mouse location when an actor is picked.

Variables

none

Use

makePointPicker

Created Object(s)

PointPkr

Used env() variable(s)

'$IDname'InteractorOpt

XML Tag used

<pointPicker>

pointPickerCallback

Description

This is the callback procedure that is called when a pick event occurs and the point picker is on. It grabs the position information for the point selected and feeds it to the text mapper. The cooridinate information is then displayed in the rendering window.

Variables

none

Use

pointPickerCallback

XML Tag used

<pointPicker>

registerPointCallback

Description

Registers the pointPickerCallback procedure so that it automatically gets called when a pick event occurs and the point picker is on. Also creates a text mapper object that is unique to an individual client so that the text mapper properties (font, bold, etc.) can be different for each client.

Variables

VariableType | DescriptionExample
font (float) size of display font 10.0
bold (text) display font bold option (case sensitive) BoldOn or BoldOff
shadow (text) display font shadow option (case sensitive) ShadowOn or ShadowOff
r (float) amount of red coloring in the display font. 0.25
g (float) amount of green coloring in the display font. 0
b (float) amount of blue coloring in the display font 3

Use

registerPointCallback 10 BoldOff ShadowOff 1 0 0

Created Object(s)

'$IDname'PointTextMapper, '$IDname'PointActor

XML Tag used

<pointPicker>

pointPickerOn

Description

Turns the point picker on. This must be called before the point picker can be used.

Variables

none

Use

pointPickerOn

XML Tag used

<pointPicker>

libPointsReader.tcl

makePointsReader renderPointsReader saveSurface

makePointsReader

Description

Reads a volume dataset defined in a single .vtk image file with declared filename. Builds an isosurface representing the data and an ouline of it.

Variables

VariableType | DescriptionExample
name (text) name of the vtk data. clavicle
fileName (text) directory path and name of .vtk file. "C:\\Annot\\data\\bosBones\\clav.vtk" or "$env(ANNOT_ROOT)/data/bosBones/clav.vtk"
dataValue (float) data contour value used to consturct an isosurface 500

Use

makePointsReader clavicle "$env(ANNOT_ROOT)/data/bosBones/clav.vtk" 100

Created Object(s)

'$name'SPReader, '$name'ContFilter, '$name'OutlineFilter, '$name'PDCFilter, '$name'PDWriter

XML Tag used


NEEDS MORE

renderPointsReader

Description

Adds a .vtk data volume and it's outline (if outlineOpt isn't Off) to a renderer.

Variables

VariableType | DescriptionExample
name (text) name of the vtk data. This must be the same name used in makePointsReader {name} clavicle
r (float) this is amount of red coloring in the volume data. 0.25
g (float) this is amount of green coloring in the volume data. 0
b (float) this is amount of blue coloring in the volume data. 3
outlineOpt(text) data outline option (note: any entry other than Off will result in the outline being visible) On or Off

Use

renderPointsReader clavicle 1 1 1 On

Created Object(s)

'$IDname$name'DataMapper, '$IDname$name'Data, '$IDname$name'DataMapperOutline, '$IDname$name'DataOutlineActor

Actor(s) Added to Renderer

'$IDname$name'Data, '$IDname$name'DataOutlineActor

XML Tag used


NEEDS MORE

saveSurface

Description

Writes a file containing the surface representing the data processed in makePointsReader.

Variables

VariableType | DescriptionExample
name (text) name of the vtk data. This must be the same name used in makePointsReader {name} clavicle
newFileName (text) directory path and name of filtered file to be saved. '.vtk' will be appended to this. "C:\\Annot\\data\\surfaces\\clavicleSurf" or "$env(ANNOT_ROOT)/data/surfaces/clavicleSurf"

Use

saveSurface clavicle "$env(ANNOT_ROOT)/data/surfaces/clavicleSurf"

XML Tag used

not in xml parser

libRenderer.tcl

makeRenderer

makeRenderer

Description

This is all that is needed to set up a renderer for displaying any actor. To add an actor use the command (after makeRenderer is run): '$IDname'Renderer AddActor actorname
Creates the render window ('$IDname'RenWin). Allows the render window to render images off screen (when '$offScreenOpt' is "Off").
Creates the interactor ('$IDname'iren) (when '$interactorOpt' is not "Off"). The interactor enables mouse- and keyboard-based interaction with the scene.
Prevents the tk window from showing up then start the event loop.

Variables

VariableType | DescriptionExample
r (float) amount of red coloring in the background. 0.25
g (float) amount of green coloring in the background. 0
b (float) amount of blue coloring in the background. 3
h (int) horizontal size(expressed in pixels) of the viewing window. 500
v (int) vertical size(expressed in pixels) of the viewing window. 600
interactorOpt(text) Option for turning off the interactor. The environment variable '$IDname'InteractorOpt is made usable to any following procedures via $env('$IDname'InteractorOpt). (note: If anything other than Off is specified, the interactor will remian on.) Off or On
offScreenOpt(text) Option for running the renderwindow offScreen. (Hides the window when run) Off or On

Use

MakeRenderer 0.1 0.2 0.4 400 200 On On

Created Object(s)

'$IDname'Renderer, '$IDname'RenWin, '$IDname'Iren

Created env() variable(s)

'$IDname'InteractorOpt, '$IDname'RenderObjects

Used env() variable(s)

'$IDname'InteractorOpt

XML Tag used

<renderer>

libSurfaceViewer.tcl

makeSurfaceViewer renderSurfaceViewer

makeSurfaceViewer

Description

Reads a volume dataset defined in a filtered vtk surface data file with declared filename. First does mesh simplification, then builds an isosurface representing the data and an outline of it.

Variables

VariableType | DescriptionExample
name (text) name of the surface data. clavicleSurf
fileName(text) directory path and name of filtered .vtk surface file. "C:\\Annot\\data\\surfaces\\clavicleSruf100.02.vtk" or "$env(ANNOT_ROOT)/data/surfaces/clavicleSurf100.02.vtk"

Use

makeSurfaceViewer clavicleSurf "$env(ANNOT_ROOT)/data/surfaces/clavicleSurf100.02.vtk"

Created Object(s)

'$name'PDReader, '$name'Deci, '$name'PDNormals, '$name'SurfOutlineFilter

XML Tag used

<vtkVolume>

renderSurfaceViewer

Description

Adds a surface data volume and it's outline (if outlineOpt isn't Off) to a renderer.

Variables

VariableType | DescriptionExample
name (text) name of the surface data. This must be the same name used in makeSurfaceViewer {name} clavicleSurf
r (float) this is amount of red coloring in the volume data. 0.25
g (float) this is amount of green coloring in the volume data. 0
b (float) this is amount of blue coloring in the volume data. 3
x (float) x coordinate of the center of the data. 50.0
y (float) y coordinate of the center of the data. -50
z (float) z coordinate of the center of the data. 0
wrot (float) rotation in degrees of the world axis. 1.0
xrot (float) rotation in degrees from x axis. 90.0
yrot (float) rotation in degrees from y axis. 30
zrot (float) rotation in degrees from z axis. 0
outlineOpt(text) data outline option (note: any entry other than Off will result in the outline being visible) On or Off

Use

renderSurfaceViewer clavicleSurf 1 1 1 0 0 0 0 0 0 1 On

Created Object(s)

'$IDname$name'DataMapper, '$IDname$name'Actor, '$IDname$name'DataMapperOutline , '$IDname$name'DataOutlineActor

Actor(s) Added to Renderer

'$IDname$name'Actor, '$IDname$name'DataOutlineActor

XML Tag used

<vtkVolume>

libVolumeReader.tcl

makeVolumeReader renderVolumeReader

makeVolumeReader

Description

Reads a volume dataset defined in a series of 2D slices/images with declared filenames (filePrefix,filePattern,startSlice,&endSlice), volume demensions/settings (pixelSizeX,pixelSizeY,Zspacing,rows,&columns), and Endianness (endian). Builds an isosurface representing the data and an ouline of it.
Appropriate values for variables can be found by following the Dicom2 Instructions to extract data file information.

Variables

filePrefix, filePattern, startSlice, and endSlice are used to construct filenames. To read the files: C:\test-1.raw, C:\test-2.raw, etc... use these variable examples:
VariableType | DescriptionExample
name (text) name of the data volume. head
filePrefix (text) beginning of filename "C:/test-"
filePattern (text) end of filename (note: if there is no postfix as in C:\data\quarter.1, "none" must be used.) %s%d.raw or none
startSlice (int) first filename number 1
endSlice (int) last filename number 2
pixelSizeX (float) data spacing specifier 0.664062
pixelSizeY (float) data spacing specifier 0.664062
Zspacing (float) data spacing specifier 3.0
rows (int) data demension specifier 512
columns (int) data demension specifier 512
endian (text) endian specification (case sensitive) Little or Big
dataValue (float) data contour value (used to construct an isosurface) 500

Use

makeVolumeReader head "$env(ANNOT_ROOT)/data/headsq/quarter" none 1 93 3.2 3.2 1.5 64 64 Little 500

Created Object(s)

'$name'V16Reader, '$name'DataFilter, '$name'DataNormals, '$name'DataFilterOutline

XML Tag used

<rawVolume>

renderVolumeReader

Description

Adds a data volume and it's outline (if outlineOpt isn't Off) to a renderer.

Variables

VariableType | DescriptionExample
name (text) name of the data volume. This must be the same name used in makeVolumeReader {name} head
r (float) this is amount of red coloring in the volume data. 0.25
g (float) this is amount of green coloring in the volume data. 0
b (float) this is amount of blue coloring in the volume data. 3
outlineOpt(text) data outline option (note: any entery other than Off will result in the outline being visible) On or Off

Use

renderVolumeReader head 1 1 1 On

Created Object(s)

'$IDname$name'DataMapper, '$IDname$name'Data, '$IDname$name'DataMapperOutline, '$IDname$name'DataOutlineActor

Actor(s) Added to Renderer

'$IDname$name'Actor, '$IDname$name'DataOutlineActor

XML Tag used

<rawVolume>

userEventProcedures

The userEventProcedures are used by the parser to manipulate a previously loaded scene. All userEventProcedures use the environment variable $env(ClientID). They also add to either $env(MakeObjects) or $env('$IDname'RenderObjects) when an object is created.
libInteractorGUI.tcl libJPGWriter.tcl libPan.tcl libPickActor.tcl libPNGWriter.tcl libQuitClient.tcl libRotate.tcl libZoom.tcl

libInteractorGUI.tcl

makeInteractorGUI

makeInteractorGUI

Description

Sets up a callback to bring up the Tcl command GUI when the "keypress-u" occurs in the rendering window. This allows any command to be executed interactively without changing the initial source code. This will only work if InteractorOpt is "On" (set in makeRenderer).

Variables

none

Use

makeInteractorGUI

XML Tag used

<interactorGUI>

libJPGWriter.tcl

makeJPGWriter writeJPGCallback writeJPG registerJPGCallback

makeJPGWriter

Description

Creates vtkJPEGWriter and vtkTimerLog objects for this client ID. These objects are created once and used by all clients. The vtkJPEGWriter object can be used to set a jpg writer callback for a user event by using registerJPGCallback, or just to write a jpg on command by using writeJPG. This procedure must be executed before registerJPGCallback or writeJPG can be used. If this procedure is called more than once, the Timer and Writer objects are not created again in order to avoid variable conflicts.

Variables

none

Use

makeJPGWriter

Created Object(s)

Timer, JPGWriter

Used env() variable(s)

'$IDname'InteractorOpt

XML Tag used

<registerJPGCallback> <writeJPG>

writeJPGCallback

Description

Writes a single JPG file that is a snapshot of the current rendered window image when the user types 'u' in the render window. This is the callback function that gets registered by 'registerJPGCallback'.

Variables

VariableType | DescriptionExample
filePath (text) Full path to directory where snapshots are to be stored. (note: if no directory is specified, the current directory will be used) "$env(ANNOT_ROOT)/data/snapshots"
filePrefix (text) Prefix to randomly selected filename. If this is set to anything other than "NONE", the name of the resulting jpg will be of the form "filePath/filePrefix-x.jpg" where x is the time (used to differentiate this snapshot from others). demo-

Use

writeJPGCallback "$env(ANNOT_ROOT)/data/snapshots" demo-

XML Tag used

<registerJPGCallback> <writeJPG>

writeJPG

Description

Writes a single JPG file that is a snapshot of the current rendered window image. This is different from the callback function in that it is called directly rather than being set as a callback that only gets executed when a specific user event occurs.

Variables

VariableType | DescriptionExample
filePath(text) Full path to directory where snapshots are to be stored. (note: if no directory is specified, the current directory will be used) "$env(ANNOT_ROOT)/data/snapshots"
fileName(text) Specific file name to assign to snapshot. demo.jpg

Use

writeJPG "$env(ANNOT_ROOT)/data/snapshots" demo.jpg

XML Tag used

<registerJPGCallback> <writeJPG>

registerJPGCallback

Description

Sets the callback so that a jpg is produced (by calling writeJPGCallback) every time the user types "u".

Variables

VariableType | DescriptionExample
filePath(text) full path to directory where snapshots are to be stored. (note: if no directory is specified, the current directory will be used) "C:\\snapshots" or "$env(ANNOT_ROOT)/data/snapshots"
filePrefix(text) prefix to randomly selected filename. The filename will be of the form "filePrefix-x.jpg" where x is the time (used to differentiate this snapshot from others). demo-

Use

registerJPGCallback "$env(ANNOT_ROOT)/data/snapshots" demo-

XML Tag used

<registerJPGCallback> <writeJPG>

libPan.tcl

pan

pan

Description

Pans the cammera. Moves the actors left/right and down/up with values given in screen pixels.

Variables

VariableType | DescriptionExample
panX (double) left +/right - movement given in screen pixels. 30
panY (double) down +/up - movement given in screen pixels. 30

Use

pan 30 10

XML Tag used

<pan>

libPickActor.tcl

pickActor

pickActor

Description

Picks the actor at the given screen coordinates (pixel distance from the bottom left corner).

Variables

VariableType | DescriptionExample
pickX (float) horizontal picking pixel distance from left edge of render window. 127
pickY (float) vertical picking pixel distance from bottom edge of render window. 409

Use

pickActor 127 409

XML Tag used

<pickActor>

libPNGWriter.tcl

makePNGWriter writePNGCallback writePNG registerPNGCallback

makePNGWriter

Description

Creates vtkPNGWriter and vtkTimerLog objects for this client ID. These objects are created once and used be all clients. The vtkPNGWriter object can be used to set a png writer callback for a user event by using registerPNGCallback, or just to write a png on command by using writePNG. This procedure must be executed before registerPNGCallback or writePNG can be used. If this procedure is called more than once, the Timer and PNGWriter objects are not created again in order to avoid variable conflicts.

Variables

none

Use

makePNGWriter

Created Object(s)

Timer, PNGWriter

Used env() variable(s)

'$IDname'InteractorOpt

XML Tag used

<registerPNGCallback> <writePNG>

writePNGCallback

Description

Writes a single PNG file that is a snapshot of the current rendered window image when the user types 'u' in the render window. This is the callback function that gets registered by 'registerPNGCallback'.

Variables

VariableType | DescriptionExample
filePath - (text) Full path to directory where snapshots are to be stored. (note: if no directory is specified, the current directory will be used) "$env(ANNOT_ROOT)/data/snapshots"
filePrefix - (text) Prefix to randomly selected filename. If this is set to anything other than "NONE", the name of the resulting png will be of the form "filePath/filePrefix-x.png" where x is the time (used to differentiate this snapshot from others). demo-

Use

writePNGCallback "$env(ANNOT_ROOT)/data/snapshots" demo-

XML Tag used

<registerPNGCallback> <writePNG>

writePNG

Description

Writes a single PNG file that is a snapshot of the current rendered window image. This is different from the callback function in that it is called directly rather than being set as a callback that only gets executed when a specific user event occurs.

Variables

VariableType | DescriptionExample
filePath (text) Full path to directory where snapshots are to be stored. (note: if no directory is specified, the current directory will be used) "$env(ANNOT_ROOT)/data/snapshots"
fileName (text) Specific file name to assign to snapshot. demo.png

Use

writePNG "$env(ANNOT_ROOT)/data/snapshots" demo.png

XML Tag used

<registerPNGCallback> <writePNG>

registerPNGCallback

Description

Sets the callback so that a png is produced (by calling writePNGCallback) every time the user types "u".

Variables

VariableType | DescriptionExample
filePath (text) full path to directory where snapshots are to be stored. (note: if no directory is specified, the current directory will be used) "C:\\snapshots" or "$env(ANNOT_ROOT)/data/snapshots"
filePrefix (text) prefix to randomly selected filename. The filename will be of the form "filePrefix-x.png" where x is the time (used to differentiate this snapshot from others). demo-

Use

registerPNGCallback "$env(ANNOT_ROOT)/data/snapshots" demo-

XML Tag used

<registerPNGCallback> <writePNG>

libQuitClient.tcl

quitClient

quitClient

Description

Deletes all files, objects, and variables used for the current client.

Variables

VariableType | DescriptionExample
pngVar (float) A random number generated by the webServer to create a unique name for the clientID's image. 0.673546382074

Use

quitClient 0.673546382074

Used env() variable(s)

'$IDname'InteractorOpt, '$IDname'RenderObjects, '$IDname'LabelOptions

XML Tag used

none

libRotate.tcl

rotate

rotate

Description

Rotates the camera in x, y, or z directions.

Variables

VariableType | DescriptionExample
direction (text) direction to rotate the camera. X=left/right, Y=down/up, Z=clockwise/counterclockwise (case sensitive. Any other text entered will default to no rotation occuring) X or Y or Z
degrees (double) angle in deegrees to rotate by. -90

Use

rotate Y -45

XML Tag used

<rotate>

libZoom.tcl

zoom

zoom

Description

Zooms the camera. Zooms in/out to the actors by zoom given in percentage of existing display.

Variables

VariableType | DescriptionExample
zoom(double) in +/out - amount by percentage of existing display. -10

Use

zoom -10

XML Tag used

<zoom>

webServerProcedures

The webServerProcedures are used to initate the Tcl Web Server.
libWebServer.tcl webParserProcedure.tcl

libWebServer.tcl

Description

Includes all Annote3D procedures, which allows them to be called by the httpd server. Creates the env variable MakeObjects which contains a list of the objects created to make (not render) a scene. Runs the procedure $env(ANNOT_ROOT)/src/sceneProcedures/libPNGWriter.tcl makePNGWriter so that the server may writePNG images.

Runs the httpd.tcl code which initiates the web server. This code allows the codes in webserver\tclhttpd3.4.2\lib\ to be run by typing a corresponding url in the web browser.
For Example: typing http://127.0.0.1:8015/renderer/ will access webserver\tclhttpd3.4.2\lib\renderer.tcl . The appropriate procedure will the be run with access to each link (or by adding "/procedureName?procedureVariable=value" to the URL). These procedures make calls to /src/webServerProcedures/webParserProcedure.tcl

Variables

none

Use

vtk libWebServer.tcl (run it in vtk)
source $env(ANNOT_ROOT)/src/webServerProcedures/libWebServer.tcl

Created env() variable(s)

MakeObjects

webParserProcedure.tcl

webParserProcedure

webParserProcedure

Description

Reads an xml file (xmlPath) and creates/manipulates the corresponding scene (using src/xmlParserProcedures/makeXMLParser.tcl renderFromXML). Renames the existing png file to a random png file name. Writes a new png to the file and returns the new pngVar name.

Variables

VariableType | DescriptionExample
type (text) type of xml file to be parsed (case sensitive) File or String
xml (text) name and extension of xml file to be read (assumes $ANNOT_ROOOT/xmlFiles/ as the path). sampleScene.xml
clientID(text) IDname to be used for the scene/userEvent. one
pngVar (float) A random number generated by the webServer to create a unique name for the clientID's image. 0.673546382074

Use

webParserProcedure File scene1.xml one 0.673546382074

xmlParserProcedures

The xmlParserProcedures are used to parse XML FILES using the procedures renderFromXMLFile and renderFromXMLString.
makeXMLParser.tcl sceneParser.tcl userEventParser.tcl xmlParserLib.tcl

makeXMLParser.tcl

renderFromXMLFile renderFromXMLString

Description

This script acts as an interface between XML FILES and the Annot3D source codes through the renderFromXMLFile and renderFromXMLString procedures.
This is a non-validating parser, meaning that it does not check to make sure that the XML file correctly follows its DTD.
This script includes the code from sceneParser.tcl, userEventParser.tcl, and xmlParserLib.tcl (via source commands) at its beginning.

renderFromXMLFile

Description

This procedure acts as an interface interface between XML FILES and the Annot3D source codes. Given an XML file name, the procedure calls other parsing procedures to parse the XML, and then performs whatever tasks are outlined in the XML (build volume, add annotation, execute mouse events, etc.)

Variables

VariableType | DescriptionExample
clientID (text) IDname to be used for the scene/userEvent. one
filename (string) XML filename to be parsed and executed. scene1.xml

Use

renderFromXMLFile one scene1.xml

renderFromXMLString

Description

This procedure acts as an interface interface between XML strings and the Annot3D source codes. Given an XML string, the procedure calls other parsing procedures to parse the XML, and then performs whatever tasks are outlined in the XML (build volume, add annotation, execute mouse events, etc.)

Variables

VariableType | DescriptionExample
clientID (text) IDname to be used for the scene/userEvent. one
string (string) XML string to be parsed and executed. see XML FILES

Use

renderFromXMLString one string

sceneParser.tcl

Description

This script has specific methods for parsing XML files containing scene data. The procedures in this file use the general XMl parsing procedures found in xmlParserLib.tcl. This is a non-validating parser, meaning that it does not check to make sure that the XML file correctly follows its DTD.

The scene XML file must adhere to the format specified in scene.dtd.


userEventParser.tcl

Description

This script has specific methods for parsing XML files containing userEvent data. The procedures in this file use the general XMl parsing procedures found in xmlParserLib.tcl. This is a non-validating parser, meaning that it does not check to make sure that the XML file correctly follows its DTD.

The userEvent XML file must adhere to the format specified in userEvent.dtd.


xmlParserLib.tcl

Description

This script has general methods for parsing the XML used to provide annotation and event information to Annot3D source code. This is a non-validating parser, meaning that it does not check to make sure that the XML file correctly follows its DTD.

DEMOS

Annot3D demos are run using vtk. The following demos can be found in the Annot3D FILE STRUCTURE in the "demo" directory. Most demos require XML files that can be found in the FILE STRUCTURE as well. Current versions can be downloaded separately on this page under XML FILES.
noInteractorDemo.tcl parserBonesDemo.tcl parserHeadDemo.tcl parserHumerusDemo.tcl parserMultClient.tcl parserScapulaDemo.tcl proceduresDemo.tcl

noInteractorDemo.tcl

Description

Reads a sample scene XML file and renders the volume along with all annotations specified in the file. This assumes the volume data is in the location specified in the XML file. The volume currently being used is the head data. In this case, the xml file being used has the interactor turned off, meaning that the user cannot interact with the image once it is rendered. The head should show up rotated with the head picked. A jpg matching this image should appear in data/snapshots.

Data Used

$env(ANNOT_ROOT)/data/headsq/quarter. (head example)

XML File(s) Used

$env(ANNOT_ROOT)/xmlFiles/noInteractorScene.xml
$env(ANNOT_ROOT)/xmlFiles/pickHeadUserEvent.xml

parserBonesDemo.tcl

Description

Reads and demos the scapula, humerus, and clavicle datasets based the xml file used. All volume information and annotations are specified in the XML file. The data files used are .vtk surface files that have already been through some preprocessing. Some mesh simplification is done before rendering.

Data Used

$env(ANNOT_ROOT)/data/surfaces/clavicleSurf100.02.vtk (clavicle example)
$env(ANNOT_ROOT)/data/surfaces/scapulaSurf100.02.vtk (scapula example)
$env(ANNOT_ROOT)/data/surfaces/humerusSurf100.03.vtk (humerus example)

XML File(s) Used

$env(ANNOT_ROOT)/xmlFiles/bonesScene.xml
$env(ANNOT_ROOT)/xmlFiles/bonesUserEvent.xml

parserHeadDemo.tcl

Description

Reads a sample scene XML file and renders the volume along with all annotations specified in the file. This assumes the volume data is in the location specified in the XML file. The volume currently being used is the head data.

Data Used

$env(ANNOT_ROOT)/data/headsq/quarter. (head example)

XML File(s) Used

$env(ANNOT_ROOT)/xmlFiles/headScene.xml
$env(ANNOT_ROOT)/xmlFiles/pickHeadUserEvent.xml

parserHumerusDemo.tcl

Description

Reads and demos the humerus dataset based on the xml file used. All volume information and annotations are specified in the XML file. The data file used is a .vtk surface file that has already been through some preprocessing. Some mesh simplification is done before rendering.

Data Used

$env(ANNOT_ROOT)/data/surfaces/humerusSurf100.03.vtk (humerus example)

XML File(s) Used

$env(ANNOT_ROOT)/xmlFiles/humerusScene.xml
$env(ANNOT_ROOT)/xmlFiles/bonesUserEvent.xml

parserMultClient.tcl

Description

Reads several sample scene XML files and renders the volumes along with all annotations specified in the files into separate rendering windows. This assumes the volume data is in the location specified in the XML file. The volumes currently being used are head data and clavicle data.

Data Used

$env(ANNOT_ROOT)/data/headsq/quarter. (head example)
$env(ANNOT_ROOT)/data/surfaces/proceduresDemoClavicleSurf.vtk (clavicle example)

XML File(s) Used

$env(ANNOT_ROOT)/xmlFiles/scene1.xml
$env(ANNOT_ROOT)/xmlFiles/scene2.xml
$env(ANNOT_ROOT)/xmlFiles/scene3.xml
$env(ANNOT_ROOT)/xmlFiles/userEvent1.xml
$env(ANNOT_ROOT)/xmlFiles/userEvent2.xml
$env(ANNOT_ROOT)/xmlFiles/userEvent3.xml

parserScapulaDemo.tcl

Description

Reads and demos the scapula dataset based on the xml file used. All volume information and annotations are specified in the XML file. The data file used is a .vtk surface file that has already been through some preprocessing. Some mesh simplification is done before rendering.

Data Used

$env(ANNOT_ROOT)/data/surfaces/scapulaSurf100.02.vtk (scapula example)

XML File(s) Used

$env(ANNOT_ROOT)/xmlFiles/scapulaScene.xml
$env(ANNOT_ROOT)/xmlFiles/scapulaUserEvent.xml

proceduresDemo.tcl

Description

Demonstrates how to use all of the Annot3D src procedures. Includes all of the Annot3D src code via "source"ing libIncludes.tcl . Sets up renderers "one" and "two" simultaneously using calls to makeEnv. Sets up renderer "three" alone, only calling makeEnv once. Sets up renderer "four" using the parser and Quits that client.

Data Used

$env(ANNOT_ROOT)/data/headsq/quarter. (head example)
$env(ANNOT_ROOT)/data/bosBones/clav.vtk (clalvicle example)
$env(ANNOT_ROOT)/data/surfaces/proceduresDemoClavicleSurf.vtk (clavicle example)

XML File(s) Used

$env(ANNOT_ROOT)/xmlFiles/headScene.xml

DATA

Annot3D can be used to visualize data in several formats. The following data sets are used in the Annot3D DEMOS and provide examples of data that Annot3D can process. They can be found in the Annot3D FILE STRUCTURE in the "data" directory or they can be downloaded from the Downloads and Installation site.
bosBones headsq mummyRaw phantom surfaces

bosBones

Description

The bosBones folder contains three data sets in .vtk image format (scapula example, clavicle example, and humerus example). These images were created from CT scan data with 1.3mm resolution. The CT Dicom format was converted to .vtk image file format using code from Gordon Kindleman's collection.

bosBones includes the following data sets:

Read By

$env(ANNOT_ROOT)/src/sceneProcedures/ libPointsReader.tcl

headsq

Description

The headsq folder (head example) contains a single data set composed of a series of 93 individual 2D slices (named quarter.* ranging from 1-93) in raw format. This data was included with the vtk4.0 Users Guide.

Read By

$env(ANNOT_ROOT)/src/sceneProcedures/ libVolumeReader.tcl

mummyRaw

Description

The mummyRaw folder (mummy example) contains a single data set composed of a series of 110 individual 2D slices (named mummy-*.raw ranging from 2-111) in raw format. The DICOM2 Instructions were used to convert CT dicom data files to raw format.

Read By

$env(ANNOT_ROOT)/src/sceneProcedures/ libVolumeReader.tcl

phantom

Description

The phantom folder (smile example) contains a single data set composed of a series of 4 individual 2D slices (named smile-*.raw ranging from 1-4) in raw format. The DICOM2 Instructions were used to convert CT dicom data files to raw format.

Read By

$env(ANNOT_ROOT)/src/sceneProcedures/ libVolumeReader.tcl

surfaces

Description

The surfaces data sets are single .vtk filtered surface files. $env(ANNOT_ROOT)/src/sceneProcedures/libPointsReader.tcl was used to convert .vtk image files (bosBones) to these .vtk filtered surface files using the commands:

makePointsReader bonename "$env(ANNOT_ROOT)/data/bosBones/bonename.vtk" 100
saveSurface bonename "$env(ANNOT_ROOT)/data/surfaces/filenameSurf"


surfaces includes the following data sets:

Read By

$env(ANNOT_ROOT)/src/sceneProcedures/ libSurfaceViewer.tcl

DOCS

Annot3D docs are a miscellaneous collection of information. The following docs can be found in the Annot3D FILE STRUCTURE in the "docs" directory or they can be viewed/downloaded from this site:
Settings DICOM2 Instructions

FILE STRUCTURE MAP

Annot3D has the following FILE STRUCTURE. The local environment variable ANNOT_ROOT should be set to correspond to the Annot3D directory.
Annot3D __________ * = file has a copy on the web under 'webdocs'

DEPENDENCIES

Tcl and VTK software need to be installed properly and the environment variables for Annot3D and vtk (ANNOT_ROOT and VTK_DATA_ROOT) need to be set.

see the Annot3D download and installation page

The larger bone demos require at least 1 G of memory to run interactively.


CAVEATS


BUGS


SEE ALSO


AUTHORS

Jennifer Simpson (simpson@cs.utah.edu)
Scientific Computing and Imaging Institute, University of Utah

Janna Balling (balling@sci.utah.edu)
Scientific Computing and Imaging Institute, University of Utah


NOTES



Last modified: Tue Jan 6 15:19:46 MST 2004 by Jenny Simpson