3D
Window Structure
The 3D Window component of IRIS
is essentially a module which implements all the functionality for display
and interaction with 3D image segmentations. When the IRIS tool starts,
a single instance of the Window3D class is created and initialized.
The major componets of the 3D Window
are :
The 3D Window detects user interactions
and handles them in a number of different ways depending on the type of
the interaction. Currently, the types of user interaction that the 3D Window
detects can be classified into four categories:
-
Crosshairs Position Placement
-
Navigation
-
3D Paint/Editing (IRIS
2000 team extention)
Crosshairs Position Placement is the
mode of interaction that allows a user to position the 3D cursor in the
3D segmentation. Navigation Manipulation refers to interaction which affects
how the 3D image segmentation is positioned in the window. 3D Image Segmentation
refers to the process of picking regions on the 3D surface. Cut planes
refers to the editing option that allows the user to define a cut plane
and relabel segmentation data on one side of that user-defined plane.
When the 3D Window detects a button
click event, the Window3D class communicates with the Global State to determine
the current toolbar mode. Currently, there are five possible toolbar modes:
crosshairs mode, navigation mode, polygon mode, point-line mode, and cut-planes
mode.
If the current toolbar mode is
"crosshairs mode", the 3D Window allows only Crosshairs Position Placement
user interaction.
If the current toolbar mode is
"navigation mode", the 3D Window allows only Navigation user interaction.
If the current toolbar mode is
"paint 3D mode", the 3D Window allows only 3D Image Segmentation user interaction
- spray and cut planes.
If the current toolbar mode is
"polygon mode", the 3D Window allows only polygon creation/editing user
interaction.
Crosshairs Position Placement
In this mode of interaction, when
the left mouse button is clicked, the 3D Window attempts to place the 3D
crosshairs at the location on the Mesh Object where the user clicked.
When a left mouse click event is received, the 3D Window determines the
world space viewing ray which corresponds to the screen space position
of where the click was received. The 3D Window then passes this viewing
ray to the Voxel Data Structure. The Voxel Data Structure determines
the first voxel (if any) intersected by the viewing ray which is labeled.
The (x,y,z) position of this sample is returned to the 3D Window.
Finally, the 3D Window notifies the Global State of the new crosshairs
position and tells the GUI to update all the windows with the new crosshairs
position information.
Navigation
In this mode of interaction, the
3D Window performs different actions depending on which button click event
is detected.
-
Left-button press: Enters Rotation
submode.
-
Middle-button press: Enters Pan submode.
-
Right-button press: Enters Zoom submode.
-
Left-button release: Exits Rotation
submode.
-
Middle-button release: Exits Pan submode.
-
Right-button release: Exits Zoom submode.
While in "Rotation submode", when
a mouse motion event is received the displayed 3D segmentation rotates.
Motion in the horizontal direction rotates the segmentation horizontally;
motion in the vertical direction rotates the segmentation vertically.
While in "Pan submode", when a
mouse motion event is received the displayed 3D segmentation pans. Motion
in the horizontal direction pans the segmentation horizontally; motion
in the vertical direction pans the segmentation vertically.
While in "Zoom submode", when a
mouse motion event is received the displayed 3D segmentation zooms. Upward
motion enlarges the segmentation; downward motion shrinks the segmentation.
Display
When the GUI determines that the
3D Window needs to be re-displayed, it sends a request to the 3D Window.
Upon a request from the GUI, the 3D Window renders the Mesh Object, then
draws the crosshairs and any voxels which were labelled during 3D Image
Segmentation mode.
3D Paint/Edit Mode (Spray &
Cut Planes)
In this mode of interaction, the
user is allowed to modify the segmentation labeling in the Voxel Data Structure.
When the left mouse button is held down and a drag event is received, the
3D Window determines the world space viewing ray which corresponds to the
screen space position of where the event was received. The 3D Window
then passes this viewing ray to the Voxel Data Structure. The Voxel
Data Structure determines the first voxel (if any) intersected by the viewing
ray which is labeled. The (x,y,z) position of this sample is returned
to the 3D Window where it is retained in a list of samples. When
a user clicks the "Accept Button" of the GUI, the voxels which have been
labelled are passed to the Voxel Data Structure.
New additions
The display of the samples was
disabled because of updated GLUT library conflicts with NT, so the samples
display was modified to keep the cross-platform capabilities of the spray
painting. Also, the "Reset View" button can be clicked to erase the
samples if the changes are not accepted by the user.
When a right click is detected
in this mode, the appropriate cut planes point is set (or ignored if 2
points have already been defined). Once these 2 points have been
set and the plane is considered valid, the plane is drawn in the 3D window.
The user may change modes, however no changes are made to the segmentation
data until the user clicks on the "Accept View" or the "Reset View" button.
Modified Spring 2000:
Robin Munesato and Ming Yu - Cut Planes functionality, Spray modifications. |